1997-11-24 22:37:52 +00:00
|
|
|
/* GTK - The GIMP Toolkit
|
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
1997-11-28 01:22:38 +00:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
1997-11-24 22:37:52 +00:00
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
1998-04-13 02:02:47 +00:00
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
1997-11-24 22:37:52 +00:00
|
|
|
*/
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include "gtkcontainer.h"
|
|
|
|
#include "gtkmain.h"
|
|
|
|
#include "gtkrc.h"
|
|
|
|
#include "gtkselection.h"
|
|
|
|
#include "gtksignal.h"
|
|
|
|
#include "gtkwidget.h"
|
|
|
|
#include "gtkwindow.h"
|
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
|
|
|
#include "gtkbindings.h"
|
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
|
|
|
#include "gtkprivate.h"
|
1997-11-24 22:37:52 +00:00
|
|
|
#include "gdk/gdk.h"
|
|
|
|
#include "gdk/gdkx.h"
|
|
|
|
|
|
|
|
|
1997-11-28 01:22:38 +00:00
|
|
|
#define WIDGET_CLASS(w) GTK_WIDGET_CLASS (GTK_OBJECT (w)->klass)
|
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
|
|
|
#define INIT_PATH_SIZE (512)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
SHOW,
|
|
|
|
HIDE,
|
|
|
|
MAP,
|
|
|
|
UNMAP,
|
|
|
|
REALIZE,
|
|
|
|
UNREALIZE,
|
|
|
|
DRAW,
|
|
|
|
DRAW_FOCUS,
|
|
|
|
DRAW_DEFAULT,
|
|
|
|
SIZE_REQUEST,
|
|
|
|
SIZE_ALLOCATE,
|
|
|
|
STATE_CHANGED,
|
1998-02-22 02:18:29 +00:00
|
|
|
PARENT_SET,
|
1998-02-26 01:48:28 +00:00
|
|
|
STYLE_SET,
|
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
|
|
|
ADD_ACCELERATOR,
|
1997-11-24 22:37:52 +00:00
|
|
|
REMOVE_ACCELERATOR,
|
|
|
|
EVENT,
|
|
|
|
BUTTON_PRESS_EVENT,
|
|
|
|
BUTTON_RELEASE_EVENT,
|
|
|
|
MOTION_NOTIFY_EVENT,
|
|
|
|
DELETE_EVENT,
|
|
|
|
DESTROY_EVENT,
|
|
|
|
EXPOSE_EVENT,
|
|
|
|
KEY_PRESS_EVENT,
|
|
|
|
KEY_RELEASE_EVENT,
|
|
|
|
ENTER_NOTIFY_EVENT,
|
|
|
|
LEAVE_NOTIFY_EVENT,
|
|
|
|
CONFIGURE_EVENT,
|
|
|
|
FOCUS_IN_EVENT,
|
|
|
|
FOCUS_OUT_EVENT,
|
|
|
|
MAP_EVENT,
|
|
|
|
UNMAP_EVENT,
|
|
|
|
PROPERTY_NOTIFY_EVENT,
|
|
|
|
SELECTION_CLEAR_EVENT,
|
|
|
|
SELECTION_REQUEST_EVENT,
|
|
|
|
SELECTION_NOTIFY_EVENT,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
SELECTION_GET,
|
1997-11-24 22:37:52 +00:00
|
|
|
SELECTION_RECEIVED,
|
|
|
|
PROXIMITY_IN_EVENT,
|
|
|
|
PROXIMITY_OUT_EVENT,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
DRAG_BEGIN,
|
|
|
|
DRAG_END,
|
|
|
|
DRAG_DATA_DELETE,
|
|
|
|
DRAG_LEAVE,
|
|
|
|
DRAG_MOTION,
|
|
|
|
DRAG_DROP,
|
|
|
|
DRAG_DATA_GET,
|
|
|
|
DRAG_DATA_RECEIVED,
|
1997-11-28 06:47:01 +00:00
|
|
|
CLIENT_EVENT,
|
1998-01-30 23:47:09 +00:00
|
|
|
NO_EXPOSE_EVENT,
|
1998-05-14 18:01:35 +00:00
|
|
|
VISIBILITY_NOTIFY_EVENT,
|
1998-07-01 19:36:53 +00:00
|
|
|
DEBUG_MSG,
|
1997-11-24 22:37:52 +00:00
|
|
|
LAST_SIGNAL
|
|
|
|
};
|
|
|
|
|
1998-01-16 00:49:51 +00:00
|
|
|
enum {
|
|
|
|
ARG_0,
|
1998-03-15 21:14:28 +00:00
|
|
|
ARG_NAME,
|
|
|
|
ARG_PARENT,
|
1998-01-16 00:49:51 +00:00
|
|
|
ARG_X,
|
|
|
|
ARG_Y,
|
|
|
|
ARG_WIDTH,
|
|
|
|
ARG_HEIGHT,
|
|
|
|
ARG_VISIBLE,
|
|
|
|
ARG_SENSITIVE,
|
1998-01-18 03:09:42 +00:00
|
|
|
ARG_CAN_FOCUS,
|
1998-01-18 11:09:04 +00:00
|
|
|
ARG_HAS_FOCUS,
|
1998-01-18 03:09:42 +00:00
|
|
|
ARG_CAN_DEFAULT,
|
1998-01-18 11:09:04 +00:00
|
|
|
ARG_HAS_DEFAULT,
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
ARG_COMPOSITE_CHILD,
|
1998-01-16 00:49:51 +00:00
|
|
|
ARG_STYLE,
|
1998-03-15 21:14:28 +00:00
|
|
|
ARG_EVENTS,
|
|
|
|
ARG_EXTENSION_EVENTS
|
1998-01-16 00:49:51 +00:00
|
|
|
};
|
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
typedef struct _GtkStateData GtkStateData;
|
|
|
|
|
|
|
|
struct _GtkStateData
|
|
|
|
{
|
|
|
|
GtkStateType state;
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
guint state_restoration : 1;
|
1998-03-26 21:57:45 +00:00
|
|
|
guint parent_sensitive : 1;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
guint use_forall : 1;
|
1998-01-20 23:58:42 +00:00
|
|
|
};
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1997-11-28 01:22:38 +00:00
|
|
|
static void gtk_widget_class_init (GtkWidgetClass *klass);
|
|
|
|
static void gtk_widget_init (GtkWidget *widget);
|
1998-06-28 07:46:10 +00:00
|
|
|
static void gtk_widget_set_arg (GtkObject *object,
|
1998-01-16 00:49:51 +00:00
|
|
|
GtkArg *arg,
|
|
|
|
guint arg_id);
|
1998-06-28 07:46:10 +00:00
|
|
|
static void gtk_widget_get_arg (GtkObject *object,
|
1998-01-18 03:09:42 +00:00
|
|
|
GtkArg *arg,
|
|
|
|
guint arg_id);
|
1998-03-14 04:43:14 +00:00
|
|
|
static void gtk_widget_shutdown (GtkObject *object);
|
1998-01-30 23:47:09 +00:00
|
|
|
static void gtk_widget_real_destroy (GtkObject *object);
|
1998-03-14 04:43:14 +00:00
|
|
|
static void gtk_widget_finalize (GtkObject *object);
|
1998-01-30 23:47:09 +00:00
|
|
|
static void gtk_widget_real_show (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_hide (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_map (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_unmap (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_realize (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_unrealize (GtkWidget *widget);
|
|
|
|
static void gtk_widget_real_draw (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
GdkRectangle *area);
|
1998-07-17 00:03:35 +00:00
|
|
|
static void gtk_widget_real_size_request (GtkWidget *widget,
|
|
|
|
GtkRequisition *requisition);
|
1998-01-30 23:47:09 +00:00
|
|
|
static void gtk_widget_real_size_allocate (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
GtkAllocation *allocation);
|
1998-06-09 07:11:55 +00:00
|
|
|
static gint gtk_widget_real_key_press_event (GtkWidget *widget,
|
|
|
|
GdkEventKey *event);
|
1998-06-30 08:02:53 +00:00
|
|
|
static gint gtk_widget_real_key_release_event (GtkWidget *widget,
|
|
|
|
GdkEventKey *event);
|
1998-02-27 16:31:06 +00:00
|
|
|
static void gtk_widget_style_set (GtkWidget *widget,
|
|
|
|
GtkStyle *previous_style);
|
1998-11-06 22:05:02 +00:00
|
|
|
|
|
|
|
static void gtk_widget_redraw_queue_remove (GtkWidget *widget);
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
static GdkColormap* gtk_widget_peek_colormap (void);
|
|
|
|
static GdkVisual* gtk_widget_peek_visual (void);
|
|
|
|
static GtkStyle* gtk_widget_peek_style (void);
|
|
|
|
|
1997-12-18 02:17:14 +00:00
|
|
|
static void gtk_widget_reparent_container_child (GtkWidget *widget,
|
|
|
|
gpointer client_data);
|
1998-01-20 23:58:42 +00:00
|
|
|
static void gtk_widget_propagate_state (GtkWidget *widget,
|
|
|
|
GtkStateData *data);
|
|
|
|
static void gtk_widget_set_style_internal (GtkWidget *widget,
|
1998-02-27 22:09:20 +00:00
|
|
|
GtkStyle *style,
|
|
|
|
gboolean initial_emission);
|
1998-01-20 23:58:42 +00:00
|
|
|
static void gtk_widget_set_style_recurse (GtkWidget *widget,
|
|
|
|
gpointer client_data);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static GtkWidgetAuxInfo* gtk_widget_aux_info_new (void);
|
1997-11-28 01:22:38 +00:00
|
|
|
static void gtk_widget_aux_info_destroy (GtkWidgetAuxInfo *aux_info);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static GtkObjectClass *parent_class = NULL;
|
1998-03-09 15:16:28 +00:00
|
|
|
static guint widget_signals[LAST_SIGNAL] = { 0 };
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static GMemChunk *aux_info_mem_chunk = NULL;
|
|
|
|
|
|
|
|
static GdkColormap *default_colormap = NULL;
|
|
|
|
static GdkVisual *default_visual = NULL;
|
1998-08-17 14:48:51 +00:00
|
|
|
static GtkStyle *gtk_default_style = NULL;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static GSList *colormap_stack = NULL;
|
|
|
|
static GSList *visual_stack = NULL;
|
|
|
|
static GSList *style_stack = NULL;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
static guint composite_child_stack = 0;
|
1998-01-30 23:47:09 +00:00
|
|
|
static GSList *gtk_widget_redraw_queue = NULL;
|
|
|
|
|
1998-02-02 14:11:24 +00:00
|
|
|
static const gchar *aux_info_key = "gtk-aux-info";
|
1998-03-14 04:43:14 +00:00
|
|
|
static guint aux_info_key_id = 0;
|
1998-02-02 14:11:24 +00:00
|
|
|
static const gchar *event_key = "gtk-event-mask";
|
1998-03-14 04:43:14 +00:00
|
|
|
static guint event_key_id = 0;
|
1998-02-02 14:11:24 +00:00
|
|
|
static const gchar *extension_event_key = "gtk-extension-event-mode";
|
1998-03-14 04:43:14 +00:00
|
|
|
static guint extension_event_key_id = 0;
|
1998-02-02 14:11:24 +00:00
|
|
|
static const gchar *parent_window_key = "gtk-parent-window";
|
1998-03-14 04:43:14 +00:00
|
|
|
static guint parent_window_key_id = 0;
|
1998-02-28 19:09:20 +00:00
|
|
|
static const gchar *saved_default_style_key = "gtk-saved-default-style";
|
1998-03-14 04:43:14 +00:00
|
|
|
static guint saved_default_style_key_id = 0;
|
|
|
|
static const gchar *shape_info_key = "gtk-shape-info";
|
|
|
|
static const gchar *colormap_key = "gtk-colormap";
|
|
|
|
static const gchar *visual_key = "gtk-visual";
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
static const gchar *rc_style_key = "gtk-rc-style";
|
|
|
|
static guint rc_style_key_id = 0;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_type:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
1998-05-01 04:23:59 +00:00
|
|
|
GtkType
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_get_type (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-05-01 04:23:59 +00:00
|
|
|
static GtkType widget_type = 0;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!widget_type)
|
|
|
|
{
|
1998-11-30 19:07:15 +00:00
|
|
|
static const GtkTypeInfo widget_info =
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
"GtkWidget",
|
|
|
|
sizeof (GtkWidget),
|
|
|
|
sizeof (GtkWidgetClass),
|
|
|
|
(GtkClassInitFunc) gtk_widget_class_init,
|
|
|
|
(GtkObjectInitFunc) gtk_widget_init,
|
1998-07-04 15:31:30 +00:00
|
|
|
/* reserved_1 */ NULL,
|
|
|
|
/* reserved_2 */ NULL,
|
1998-06-28 07:46:10 +00:00
|
|
|
(GtkClassInitFunc) NULL,
|
1997-11-24 22:37:52 +00:00
|
|
|
};
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
widget_type = gtk_type_unique (gtk_object_get_type (), &widget_info);
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return widget_type;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_class_init:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
1998-07-01 19:36:53 +00:00
|
|
|
#include "stdio.h"
|
|
|
|
static void
|
|
|
|
gtk_widget_debug_msg (GtkWidget *widget,
|
|
|
|
const gchar *string)
|
|
|
|
{
|
|
|
|
fprintf (stderr, "Gtk-DEBUG: %s\n", string);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_class_init (GtkWidgetClass *klass)
|
|
|
|
{
|
|
|
|
GtkObjectClass *object_class;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
object_class = (GtkObjectClass*) klass;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
parent_class = gtk_type_class (gtk_object_get_type ());
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-15 21:14:28 +00:00
|
|
|
gtk_object_add_arg_type ("GtkWidget::name", GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_NAME);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::parent", GTK_TYPE_CONTAINER, GTK_ARG_READWRITE, ARG_PARENT);
|
1998-02-19 07:18:42 +00:00
|
|
|
gtk_object_add_arg_type ("GtkWidget::x", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_X);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::y", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_Y);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::width", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_WIDTH);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::height", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_HEIGHT);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::visible", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_VISIBLE);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::sensitive", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_SENSITIVE);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::can_focus", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_CAN_FOCUS);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::has_focus", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_HAS_FOCUS);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::can_default", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_CAN_DEFAULT);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::has_default", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_HAS_DEFAULT);
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
gtk_object_add_arg_type ("GtkWidget::composite_child", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_COMPOSITE_CHILD);
|
1998-03-15 21:14:28 +00:00
|
|
|
gtk_object_add_arg_type ("GtkWidget::style", GTK_TYPE_STYLE, GTK_ARG_READWRITE, ARG_STYLE);
|
1998-02-19 07:18:42 +00:00
|
|
|
gtk_object_add_arg_type ("GtkWidget::events", GTK_TYPE_GDK_EVENT_MASK, GTK_ARG_READWRITE, ARG_EVENTS);
|
|
|
|
gtk_object_add_arg_type ("GtkWidget::extension_events", GTK_TYPE_GDK_EVENT_MASK, GTK_ARG_READWRITE, ARG_EXTENSION_EVENTS);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
widget_signals[SHOW] =
|
|
|
|
gtk_signal_new ("show",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, show),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[HIDE] =
|
|
|
|
gtk_signal_new ("hide",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, hide),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[MAP] =
|
|
|
|
gtk_signal_new ("map",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, map),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[UNMAP] =
|
|
|
|
gtk_signal_new ("unmap",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, unmap),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[REALIZE] =
|
|
|
|
gtk_signal_new ("realize",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, realize),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[UNREALIZE] =
|
|
|
|
gtk_signal_new ("unrealize",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, unrealize),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[DRAW] =
|
|
|
|
gtk_signal_new ("draw",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, draw),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_POINTER);
|
|
|
|
widget_signals[DRAW_FOCUS] =
|
|
|
|
gtk_signal_new ("draw_focus",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, draw_focus),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[DRAW_DEFAULT] =
|
|
|
|
gtk_signal_new ("draw_default",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, draw_default),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__NONE,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 0);
|
|
|
|
widget_signals[SIZE_REQUEST] =
|
|
|
|
gtk_signal_new ("size_request",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, size_request),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_POINTER);
|
|
|
|
widget_signals[SIZE_ALLOCATE] =
|
|
|
|
gtk_signal_new ("size_allocate",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, size_allocate),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_POINTER);
|
|
|
|
widget_signals[STATE_CHANGED] =
|
|
|
|
gtk_signal_new ("state_changed",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, state_changed),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__UINT,
|
1998-01-20 23:58:42 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
1998-06-09 07:11:55 +00:00
|
|
|
GTK_TYPE_STATE_TYPE);
|
1998-02-22 02:18:29 +00:00
|
|
|
widget_signals[PARENT_SET] =
|
|
|
|
gtk_signal_new ("parent_set",
|
1998-02-18 04:09:13 +00:00
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
1998-02-22 02:18:29 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, parent_set),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__OBJECT,
|
1998-02-18 04:09:13 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_OBJECT);
|
1998-02-26 01:48:28 +00:00
|
|
|
widget_signals[STYLE_SET] =
|
|
|
|
gtk_signal_new ("style_set",
|
|
|
|
GTK_RUN_FIRST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, style_set),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_NONE__POINTER,
|
1998-02-26 01:48:28 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
1998-06-09 07:11:55 +00:00
|
|
|
GTK_TYPE_STYLE);
|
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
|
|
|
widget_signals[ADD_ACCELERATOR] =
|
|
|
|
gtk_accel_group_create_add (object_class->type, GTK_RUN_LAST,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, add_accelerator));
|
1997-11-24 22:37:52 +00:00
|
|
|
widget_signals[REMOVE_ACCELERATOR] =
|
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
|
|
|
gtk_accel_group_create_remove (object_class->type, GTK_RUN_LAST,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, remove_accelerator));
|
1997-11-24 22:37:52 +00:00
|
|
|
widget_signals[EVENT] =
|
|
|
|
gtk_signal_new ("event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[BUTTON_PRESS_EVENT] =
|
|
|
|
gtk_signal_new ("button_press_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, button_press_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[BUTTON_RELEASE_EVENT] =
|
|
|
|
gtk_signal_new ("button_release_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, button_release_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[MOTION_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("motion_notify_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, motion_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[DELETE_EVENT] =
|
|
|
|
gtk_signal_new ("delete_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, delete_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[DESTROY_EVENT] =
|
|
|
|
gtk_signal_new ("destroy_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, destroy_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[EXPOSE_EVENT] =
|
|
|
|
gtk_signal_new ("expose_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, expose_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[KEY_PRESS_EVENT] =
|
|
|
|
gtk_signal_new ("key_press_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, key_press_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[KEY_RELEASE_EVENT] =
|
|
|
|
gtk_signal_new ("key_release_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, key_release_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[ENTER_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("enter_notify_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, enter_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[LEAVE_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("leave_notify_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, leave_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[CONFIGURE_EVENT] =
|
|
|
|
gtk_signal_new ("configure_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, configure_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[FOCUS_IN_EVENT] =
|
|
|
|
gtk_signal_new ("focus_in_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_in_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[FOCUS_OUT_EVENT] =
|
|
|
|
gtk_signal_new ("focus_out_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_out_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[MAP_EVENT] =
|
|
|
|
gtk_signal_new ("map_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, map_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[UNMAP_EVENT] =
|
|
|
|
gtk_signal_new ("unmap_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, unmap_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[PROPERTY_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("property_notify_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, property_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[SELECTION_CLEAR_EVENT] =
|
|
|
|
gtk_signal_new ("selection_clear_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_clear_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[SELECTION_REQUEST_EVENT] =
|
|
|
|
gtk_signal_new ("selection_request_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_request_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[SELECTION_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("selection_notify_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[SELECTION_RECEIVED] =
|
|
|
|
gtk_signal_new ("selection_received",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_received),
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
gtk_marshal_NONE__POINTER_UINT,
|
|
|
|
GTK_TYPE_NONE, 2,
|
|
|
|
GTK_TYPE_SELECTION_DATA,
|
|
|
|
GTK_TYPE_UINT);
|
|
|
|
widget_signals[SELECTION_GET] =
|
|
|
|
gtk_signal_new ("selection_get",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_get),
|
|
|
|
gtk_marshal_NONE__POINTER_UINT_UINT,
|
|
|
|
GTK_TYPE_NONE, 2,
|
|
|
|
GTK_TYPE_SELECTION_DATA,
|
|
|
|
GTK_TYPE_UINT,
|
|
|
|
GTK_TYPE_UINT);
|
1997-11-24 22:37:52 +00:00
|
|
|
widget_signals[PROXIMITY_IN_EVENT] =
|
|
|
|
gtk_signal_new ("proximity_in_event",
|
1998-05-18 04:31:03 +00:00
|
|
|
GTK_RUN_LAST,
|
1997-11-24 22:37:52 +00:00
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_in_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
|
|
|
widget_signals[PROXIMITY_OUT_EVENT] =
|
|
|
|
gtk_signal_new ("proximity_out_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_out_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
widget_signals[DRAG_LEAVE] =
|
|
|
|
gtk_signal_new ("drag_leave",
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_leave),
|
|
|
|
gtk_marshal_NONE__POINTER_UINT,
|
|
|
|
GTK_TYPE_NONE, 2,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT,
|
|
|
|
GTK_TYPE_UINT);
|
|
|
|
widget_signals[DRAG_BEGIN] =
|
|
|
|
gtk_signal_new ("drag_begin",
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_begin),
|
|
|
|
gtk_marshal_NONE__POINTER,
|
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT);
|
|
|
|
widget_signals[DRAG_END] =
|
|
|
|
gtk_signal_new ("drag_end",
|
1998-03-01 22:37:30 +00:00
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_end),
|
|
|
|
gtk_marshal_NONE__POINTER,
|
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT);
|
|
|
|
widget_signals[DRAG_DATA_DELETE] =
|
|
|
|
gtk_signal_new ("drag_data_delete",
|
1998-05-18 04:31:03 +00:00
|
|
|
GTK_RUN_LAST,
|
1997-11-24 22:37:52 +00:00
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_data_delete),
|
|
|
|
gtk_marshal_NONE__POINTER,
|
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT);
|
|
|
|
widget_signals[DRAG_MOTION] =
|
|
|
|
gtk_signal_new ("drag_motion",
|
1998-05-18 04:31:03 +00:00
|
|
|
GTK_RUN_LAST,
|
1997-11-24 22:37:52 +00:00
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_motion),
|
|
|
|
gtk_marshal_BOOL__POINTER_INT_INT_UINT,
|
|
|
|
GTK_TYPE_BOOL, 4,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT,
|
|
|
|
GTK_TYPE_INT,
|
|
|
|
GTK_TYPE_INT,
|
|
|
|
GTK_TYPE_UINT);
|
|
|
|
widget_signals[DRAG_DROP] =
|
|
|
|
gtk_signal_new ("drag_drop",
|
1998-05-18 04:31:03 +00:00
|
|
|
GTK_RUN_LAST,
|
1997-11-24 22:37:52 +00:00
|
|
|
object_class->type,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_drop),
|
|
|
|
gtk_marshal_BOOL__POINTER_INT_INT_UINT,
|
|
|
|
GTK_TYPE_BOOL, 4,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT,
|
|
|
|
GTK_TYPE_INT,
|
|
|
|
GTK_TYPE_INT,
|
|
|
|
GTK_TYPE_UINT);
|
|
|
|
widget_signals[DRAG_DATA_GET] =
|
|
|
|
gtk_signal_new ("drag_data_get",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_data_get),
|
|
|
|
gtk_marshal_NONE__POINTER_POINTER_UINT_UINT,
|
|
|
|
GTK_TYPE_NONE, 4,
|
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT,
|
|
|
|
GTK_TYPE_SELECTION_DATA,
|
|
|
|
GTK_TYPE_UINT,
|
|
|
|
GTK_TYPE_UINT);
|
|
|
|
widget_signals[DRAG_DATA_RECEIVED] =
|
|
|
|
gtk_signal_new ("drag_data_received",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_data_received),
|
1998-10-19 00:51:21 +00:00
|
|
|
gtk_marshal_NONE__POINTER_INT_INT_POINTER_UINT_UINT,
|
|
|
|
GTK_TYPE_NONE, 6,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_TYPE_GDK_DRAG_CONTEXT,
|
1998-10-19 00:51:21 +00:00
|
|
|
GTK_TYPE_INT,
|
|
|
|
GTK_TYPE_INT,
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
GTK_TYPE_SELECTION_DATA,
|
|
|
|
GTK_TYPE_UINT,
|
|
|
|
GTK_TYPE_UINT);
|
1998-05-15 08:09:18 +00:00
|
|
|
widget_signals[VISIBILITY_NOTIFY_EVENT] =
|
|
|
|
gtk_signal_new ("visibility_notify_event",
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
1998-05-15 08:09:18 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, visibility_notify_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
1997-11-28 06:47:01 +00:00
|
|
|
widget_signals[CLIENT_EVENT] =
|
|
|
|
gtk_signal_new ("client_event",
|
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, client_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1997-11-28 06:47:01 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
1998-01-30 23:47:09 +00:00
|
|
|
widget_signals[NO_EXPOSE_EVENT] =
|
|
|
|
gtk_signal_new ("no_expose_event",
|
1998-01-06 01:17:10 +00:00
|
|
|
GTK_RUN_LAST,
|
|
|
|
object_class->type,
|
1998-01-30 23:47:09 +00:00
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, no_expose_event),
|
1998-07-21 18:49:53 +00:00
|
|
|
gtk_marshal_BOOL__POINTER,
|
1998-01-06 01:17:10 +00:00
|
|
|
GTK_TYPE_BOOL, 1,
|
|
|
|
GTK_TYPE_GDK_EVENT);
|
1998-07-01 19:36:53 +00:00
|
|
|
widget_signals[DEBUG_MSG] =
|
|
|
|
gtk_signal_new ("debug_msg",
|
|
|
|
GTK_RUN_LAST | GTK_RUN_ACTION,
|
|
|
|
object_class->type,
|
|
|
|
GTK_SIGNAL_OFFSET (GtkWidgetClass, debug_msg),
|
1998-07-21 04:13:42 +00:00
|
|
|
gtk_marshal_NONE__STRING,
|
1998-07-01 19:36:53 +00:00
|
|
|
GTK_TYPE_NONE, 1,
|
|
|
|
GTK_TYPE_STRING);
|
1997-11-28 06:47:01 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_object_class_add_signals (object_class, widget_signals, LAST_SIGNAL);
|
1998-06-28 07:46:10 +00:00
|
|
|
|
|
|
|
object_class->set_arg = gtk_widget_set_arg;
|
|
|
|
object_class->get_arg = gtk_widget_get_arg;
|
1998-03-14 04:43:14 +00:00
|
|
|
object_class->shutdown = gtk_widget_shutdown;
|
1998-01-30 23:47:09 +00:00
|
|
|
object_class->destroy = gtk_widget_real_destroy;
|
1998-03-14 04:43:14 +00:00
|
|
|
object_class->finalize = gtk_widget_finalize;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
klass->activate_signal = 0;
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
klass->scroll_adjustments_signal = 0;
|
1998-01-30 23:47:09 +00:00
|
|
|
klass->show = gtk_widget_real_show;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
klass->show_all = gtk_widget_show;
|
1998-01-30 23:47:09 +00:00
|
|
|
klass->hide = gtk_widget_real_hide;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
klass->hide_all = gtk_widget_hide;
|
1998-01-30 23:47:09 +00:00
|
|
|
klass->map = gtk_widget_real_map;
|
|
|
|
klass->unmap = gtk_widget_real_unmap;
|
|
|
|
klass->realize = gtk_widget_real_realize;
|
|
|
|
klass->unrealize = gtk_widget_real_unrealize;
|
|
|
|
klass->draw = gtk_widget_real_draw;
|
1997-11-24 22:37:52 +00:00
|
|
|
klass->draw_focus = NULL;
|
1998-07-17 00:03:35 +00:00
|
|
|
klass->size_request = gtk_widget_real_size_request;
|
1998-01-30 23:47:09 +00:00
|
|
|
klass->size_allocate = gtk_widget_real_size_allocate;
|
1997-11-24 22:37:52 +00:00
|
|
|
klass->state_changed = NULL;
|
1998-02-22 02:18:29 +00:00
|
|
|
klass->parent_set = NULL;
|
1998-02-27 16:31:06 +00:00
|
|
|
klass->style_set = gtk_widget_style_set;
|
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
|
|
|
klass->add_accelerator = (void*) gtk_accel_group_handle_add;
|
|
|
|
klass->remove_accelerator = (void*) gtk_accel_group_handle_remove;
|
1997-11-24 22:37:52 +00:00
|
|
|
klass->event = NULL;
|
|
|
|
klass->button_press_event = NULL;
|
|
|
|
klass->button_release_event = NULL;
|
|
|
|
klass->motion_notify_event = NULL;
|
|
|
|
klass->delete_event = NULL;
|
|
|
|
klass->destroy_event = NULL;
|
|
|
|
klass->expose_event = NULL;
|
1998-06-09 07:11:55 +00:00
|
|
|
klass->key_press_event = gtk_widget_real_key_press_event;
|
1998-06-30 08:02:53 +00:00
|
|
|
klass->key_release_event = gtk_widget_real_key_release_event;
|
1997-11-24 22:37:52 +00:00
|
|
|
klass->enter_notify_event = NULL;
|
|
|
|
klass->leave_notify_event = NULL;
|
|
|
|
klass->configure_event = NULL;
|
|
|
|
klass->focus_in_event = NULL;
|
|
|
|
klass->focus_out_event = NULL;
|
|
|
|
klass->map_event = NULL;
|
|
|
|
klass->unmap_event = NULL;
|
|
|
|
klass->property_notify_event = gtk_selection_property_notify;
|
|
|
|
klass->selection_clear_event = gtk_selection_clear;
|
|
|
|
klass->selection_request_event = gtk_selection_request;
|
|
|
|
klass->selection_notify_event = gtk_selection_notify;
|
|
|
|
klass->selection_received = NULL;
|
|
|
|
klass->proximity_in_event = NULL;
|
|
|
|
klass->proximity_out_event = NULL;
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
klass->drag_begin = NULL;
|
|
|
|
klass->drag_end = NULL;
|
|
|
|
klass->drag_data_delete = NULL;
|
|
|
|
klass->drag_leave = NULL;
|
|
|
|
klass->drag_motion = NULL;
|
|
|
|
klass->drag_drop = NULL;
|
|
|
|
klass->drag_data_received = NULL;
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
klass->no_expose_event = NULL;
|
1998-07-01 19:36:53 +00:00
|
|
|
|
|
|
|
klass->debug_msg = gtk_widget_debug_msg;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
1998-06-28 07:46:10 +00:00
|
|
|
gtk_widget_set_arg (GtkObject *object,
|
1998-01-16 00:49:51 +00:00
|
|
|
GtkArg *arg,
|
|
|
|
guint arg_id)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-06-28 07:46:10 +00:00
|
|
|
GtkWidget *widget;
|
|
|
|
|
|
|
|
widget = GTK_WIDGET (object);
|
1998-03-26 21:57:45 +00:00
|
|
|
|
1998-01-16 00:49:51 +00:00
|
|
|
switch (arg_id)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-06-28 07:46:10 +00:00
|
|
|
guint32 saved_flags;
|
|
|
|
|
1998-03-15 21:14:28 +00:00
|
|
|
case ARG_NAME:
|
|
|
|
gtk_widget_set_name (widget, GTK_VALUE_STRING (*arg));
|
|
|
|
break;
|
|
|
|
case ARG_PARENT:
|
|
|
|
gtk_container_add (GTK_CONTAINER (GTK_VALUE_OBJECT (*arg)), widget);
|
|
|
|
break;
|
1998-01-16 00:49:51 +00:00
|
|
|
case ARG_X:
|
1998-01-18 03:09:42 +00:00
|
|
|
gtk_widget_set_uposition (widget, GTK_VALUE_INT (*arg), -2);
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_Y:
|
1998-01-18 03:09:42 +00:00
|
|
|
gtk_widget_set_uposition (widget, -2, GTK_VALUE_INT (*arg));
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_WIDTH:
|
1998-07-16 02:47:15 +00:00
|
|
|
gtk_widget_set_usize (widget, GTK_VALUE_INT (*arg), -2);
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_HEIGHT:
|
1998-07-16 02:47:15 +00:00
|
|
|
gtk_widget_set_usize (widget, -2, GTK_VALUE_INT (*arg));
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_VISIBLE:
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_VALUE_BOOL(*arg))
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_show (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
else
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_hide (widget);
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_SENSITIVE:
|
1998-01-18 03:09:42 +00:00
|
|
|
gtk_widget_set_sensitive (widget, GTK_VALUE_BOOL (*arg));
|
|
|
|
break;
|
|
|
|
case ARG_CAN_FOCUS:
|
1998-03-26 21:57:45 +00:00
|
|
|
saved_flags = GTK_WIDGET_FLAGS (widget);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (GTK_VALUE_BOOL (*arg))
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS);
|
|
|
|
else
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_FOCUS);
|
1998-03-26 21:57:45 +00:00
|
|
|
if (saved_flags != GTK_WIDGET_FLAGS (widget))
|
|
|
|
gtk_widget_queue_resize (widget);
|
1998-01-18 03:09:42 +00:00
|
|
|
break;
|
1998-01-18 11:09:04 +00:00
|
|
|
case ARG_HAS_FOCUS:
|
|
|
|
if (GTK_VALUE_BOOL (*arg))
|
|
|
|
gtk_widget_grab_focus (widget);
|
|
|
|
break;
|
1998-01-18 03:09:42 +00:00
|
|
|
case ARG_CAN_DEFAULT:
|
1998-03-26 21:57:45 +00:00
|
|
|
saved_flags = GTK_WIDGET_FLAGS (widget);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (GTK_VALUE_BOOL (*arg))
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_DEFAULT);
|
|
|
|
else
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_DEFAULT);
|
1998-03-26 21:57:45 +00:00
|
|
|
if (saved_flags != GTK_WIDGET_FLAGS (widget))
|
|
|
|
gtk_widget_queue_resize (widget);
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
1998-01-18 11:09:04 +00:00
|
|
|
case ARG_HAS_DEFAULT:
|
|
|
|
if (GTK_VALUE_BOOL (*arg))
|
|
|
|
gtk_widget_grab_default (widget);
|
|
|
|
break;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
case ARG_COMPOSITE_CHILD:
|
|
|
|
if (GTK_VALUE_BOOL(*arg))
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_COMPOSITE_CHILD);
|
|
|
|
else
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_COMPOSITE_CHILD);
|
|
|
|
break;
|
1998-03-15 21:14:28 +00:00
|
|
|
case ARG_STYLE:
|
|
|
|
gtk_widget_set_style (widget, (GtkStyle*) GTK_VALUE_BOXED (*arg));
|
|
|
|
break;
|
1998-01-16 00:49:51 +00:00
|
|
|
case ARG_EVENTS:
|
1998-06-24 17:15:05 +00:00
|
|
|
if (!GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
gtk_widget_set_events (widget, GTK_VALUE_FLAGS (*arg));
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
|
|
|
case ARG_EXTENSION_EVENTS:
|
1998-01-18 03:09:42 +00:00
|
|
|
gtk_widget_set_extension_events (widget, GTK_VALUE_FLAGS (*arg));
|
1998-01-16 00:49:51 +00:00
|
|
|
break;
|
1998-01-21 23:03:11 +00:00
|
|
|
default:
|
|
|
|
break;
|
1998-01-18 03:09:42 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-20 23:58:42 +00:00
|
|
|
* gtk_widget_get_arg:
|
1998-01-18 03:09:42 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-06-28 07:46:10 +00:00
|
|
|
gtk_widget_get_arg (GtkObject *object,
|
1998-01-18 03:09:42 +00:00
|
|
|
GtkArg *arg,
|
|
|
|
guint arg_id)
|
|
|
|
{
|
1998-06-28 07:46:10 +00:00
|
|
|
GtkWidget *widget;
|
|
|
|
|
|
|
|
widget = GTK_WIDGET (object);
|
1998-01-18 03:09:42 +00:00
|
|
|
|
|
|
|
switch (arg_id)
|
|
|
|
{
|
1998-06-28 07:46:10 +00:00
|
|
|
GtkWidgetAuxInfo *aux_info;
|
|
|
|
gint *eventp;
|
|
|
|
GdkExtensionMode *modep;
|
|
|
|
|
1998-03-15 21:14:28 +00:00
|
|
|
case ARG_NAME:
|
|
|
|
if (widget->name)
|
|
|
|
GTK_VALUE_STRING (*arg) = g_strdup (widget->name);
|
|
|
|
else
|
|
|
|
GTK_VALUE_STRING (*arg) = g_strdup ("");
|
|
|
|
break;
|
|
|
|
case ARG_PARENT:
|
|
|
|
GTK_VALUE_OBJECT (*arg) = (GtkObject*) widget->parent;
|
|
|
|
break;
|
1998-01-18 03:09:42 +00:00
|
|
|
case ARG_X:
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!aux_info)
|
1998-10-12 06:01:09 +00:00
|
|
|
GTK_VALUE_INT (*arg) = -1;
|
1998-01-18 03:09:42 +00:00
|
|
|
else
|
|
|
|
GTK_VALUE_INT (*arg) = aux_info->x;
|
|
|
|
break;
|
|
|
|
case ARG_Y:
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!aux_info)
|
1998-10-12 06:01:09 +00:00
|
|
|
GTK_VALUE_INT (*arg) = -1;
|
1998-01-18 03:09:42 +00:00
|
|
|
else
|
|
|
|
GTK_VALUE_INT (*arg) = aux_info->y;
|
|
|
|
break;
|
|
|
|
case ARG_WIDTH:
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!aux_info)
|
1998-10-12 06:01:09 +00:00
|
|
|
GTK_VALUE_INT (*arg) = -1;
|
1998-01-18 03:09:42 +00:00
|
|
|
else
|
|
|
|
GTK_VALUE_INT (*arg) = aux_info->width;
|
|
|
|
break;
|
|
|
|
case ARG_HEIGHT:
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!aux_info)
|
1998-10-12 06:01:09 +00:00
|
|
|
GTK_VALUE_INT (*arg) = -1;
|
1998-01-18 03:09:42 +00:00
|
|
|
else
|
|
|
|
GTK_VALUE_INT (*arg) = aux_info->height;
|
|
|
|
break;
|
|
|
|
case ARG_VISIBLE:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_VISIBLE (widget) != FALSE);
|
1998-01-18 03:09:42 +00:00
|
|
|
break;
|
|
|
|
case ARG_SENSITIVE:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_SENSITIVE (widget) != FALSE);
|
1998-01-18 03:09:42 +00:00
|
|
|
break;
|
|
|
|
case ARG_CAN_FOCUS:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_CAN_FOCUS (widget) != FALSE);
|
1998-01-18 03:09:42 +00:00
|
|
|
break;
|
1998-01-18 11:09:04 +00:00
|
|
|
case ARG_HAS_FOCUS:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_HAS_FOCUS (widget) != FALSE);
|
1998-01-18 11:09:04 +00:00
|
|
|
break;
|
1998-01-18 03:09:42 +00:00
|
|
|
case ARG_CAN_DEFAULT:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_CAN_DEFAULT (widget) != FALSE);
|
1998-01-18 03:09:42 +00:00
|
|
|
break;
|
1998-01-18 11:09:04 +00:00
|
|
|
case ARG_HAS_DEFAULT:
|
1998-03-17 23:07:30 +00:00
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_HAS_DEFAULT (widget) != FALSE);
|
1998-01-18 11:09:04 +00:00
|
|
|
break;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
case ARG_COMPOSITE_CHILD:
|
|
|
|
GTK_VALUE_BOOL (*arg) = (GTK_WIDGET_COMPOSITE_CHILD (widget) != FALSE);
|
|
|
|
break;
|
1998-03-15 21:14:28 +00:00
|
|
|
case ARG_STYLE:
|
|
|
|
GTK_VALUE_BOXED (*arg) = (gpointer) gtk_widget_get_style (widget);
|
|
|
|
break;
|
1998-01-18 03:09:42 +00:00
|
|
|
case ARG_EVENTS:
|
1998-03-14 04:43:14 +00:00
|
|
|
eventp = gtk_object_get_data_by_id (GTK_OBJECT (widget), event_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!eventp)
|
|
|
|
GTK_VALUE_FLAGS (*arg) = 0;
|
|
|
|
else
|
|
|
|
GTK_VALUE_FLAGS (*arg) = *eventp;
|
|
|
|
break;
|
|
|
|
case ARG_EXTENSION_EVENTS:
|
1998-03-14 04:43:14 +00:00
|
|
|
modep = gtk_object_get_data_by_id (GTK_OBJECT (widget), extension_event_key_id);
|
1998-01-18 03:09:42 +00:00
|
|
|
if (!modep)
|
|
|
|
GTK_VALUE_FLAGS (*arg) = 0;
|
|
|
|
else
|
|
|
|
GTK_VALUE_FLAGS (*arg) = *modep;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
arg->type = GTK_TYPE_INVALID;
|
1998-01-21 23:03:11 +00:00
|
|
|
break;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_init:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_init (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GdkColormap *colormap;
|
|
|
|
GdkVisual *visual;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
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
|
|
|
GTK_PRIVATE_FLAGS (widget) = 0;
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->state = GTK_STATE_NORMAL;
|
|
|
|
widget->saved_state = GTK_STATE_NORMAL;
|
|
|
|
widget->name = NULL;
|
|
|
|
widget->requisition.width = 0;
|
|
|
|
widget->requisition.height = 0;
|
|
|
|
widget->allocation.x = -1;
|
|
|
|
widget->allocation.y = -1;
|
|
|
|
widget->allocation.width = 1;
|
|
|
|
widget->allocation.height = 1;
|
|
|
|
widget->window = NULL;
|
|
|
|
widget->parent = NULL;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
GTK_WIDGET_SET_FLAGS (widget,
|
|
|
|
GTK_SENSITIVE |
|
|
|
|
GTK_PARENT_SENSITIVE |
|
|
|
|
(composite_child_stack ? GTK_COMPOSITE_CHILD : 0));
|
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
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->style = gtk_widget_peek_style ();
|
|
|
|
gtk_style_ref (widget->style);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
colormap = gtk_widget_peek_colormap ();
|
|
|
|
visual = gtk_widget_peek_visual ();
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-12-18 02:17:14 +00:00
|
|
|
/* XXX - should we ref the colormap and visual, too? */
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (colormap != gtk_widget_get_default_colormap ())
|
1997-12-18 02:17:14 +00:00
|
|
|
{
|
|
|
|
/* gdk_colormap_ref (colormap); */
|
|
|
|
gtk_object_set_data (GTK_OBJECT (widget), colormap_key, colormap);
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (visual != gtk_widget_get_default_visual ())
|
1997-12-18 02:17:14 +00:00
|
|
|
{
|
|
|
|
/* gdk_visual_ref (visual); */
|
|
|
|
gtk_object_set_data (GTK_OBJECT (widget), visual_key, visual);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_new:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GtkWidget*
|
1998-08-24 05:27:29 +00:00
|
|
|
gtk_widget_new (GtkType widget_type,
|
|
|
|
const gchar *first_arg_name,
|
1997-11-24 22:37:52 +00:00
|
|
|
...)
|
|
|
|
{
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
GtkObject *object;
|
|
|
|
va_list var_args;
|
|
|
|
GSList *arg_list = NULL;
|
|
|
|
GSList *info_list = NULL;
|
|
|
|
gchar *error;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
g_return_val_if_fail (gtk_type_is_a (widget_type, GTK_TYPE_WIDGET), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
object = gtk_type_new (widget_type);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-08-24 05:27:29 +00:00
|
|
|
va_start (var_args, first_arg_name);
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
|
|
|
|
&arg_list,
|
|
|
|
&info_list,
|
1998-08-24 05:27:29 +00:00
|
|
|
first_arg_name,
|
|
|
|
var_args);
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
va_end (var_args);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
if (error)
|
|
|
|
{
|
|
|
|
g_warning ("gtk_widget_new(): %s", error);
|
|
|
|
g_free (error);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GSList *slist_arg;
|
|
|
|
GSList *slist_info;
|
|
|
|
|
|
|
|
slist_arg = arg_list;
|
|
|
|
slist_info = info_list;
|
|
|
|
while (slist_arg)
|
|
|
|
{
|
|
|
|
gtk_object_arg_set (object, slist_arg->data, slist_info->data);
|
|
|
|
slist_arg = slist_arg->next;
|
|
|
|
slist_info = slist_info->next;
|
|
|
|
}
|
|
|
|
gtk_args_collect_cleanup (arg_list, info_list);
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
if (!GTK_OBJECT_CONSTRUCTED (object))
|
|
|
|
gtk_object_default_construct (object);
|
|
|
|
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
return GTK_WIDGET (object);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_newv:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GtkWidget*
|
1998-08-24 05:27:29 +00:00
|
|
|
gtk_widget_newv (GtkType type,
|
1998-01-16 05:11:10 +00:00
|
|
|
guint nargs,
|
1997-11-24 22:37:52 +00:00
|
|
|
GtkArg *args)
|
|
|
|
{
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
g_return_val_if_fail (gtk_type_is_a (type, GTK_TYPE_WIDGET), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return GTK_WIDGET (gtk_object_newv (type, nargs, args));
|
|
|
|
}
|
|
|
|
|
1998-01-16 05:11:10 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_get (GtkWidget *widget,
|
|
|
|
GtkArg *arg)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-16 05:11:10 +00:00
|
|
|
g_return_if_fail (arg != NULL);
|
|
|
|
|
|
|
|
gtk_object_getv (GTK_OBJECT (widget), 1, arg);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_getv:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_getv (GtkWidget *widget,
|
|
|
|
guint nargs,
|
|
|
|
GtkArg *args)
|
|
|
|
{
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
1998-01-16 05:11:10 +00:00
|
|
|
gtk_object_getv (GTK_OBJECT (widget), nargs, args);
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1998-08-24 05:27:29 +00:00
|
|
|
gtk_widget_set (GtkWidget *widget,
|
|
|
|
const gchar *first_arg_name,
|
1997-11-24 22:37:52 +00:00
|
|
|
...)
|
|
|
|
{
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
GtkObject *object;
|
|
|
|
va_list var_args;
|
|
|
|
GSList *arg_list = NULL;
|
|
|
|
GSList *info_list = NULL;
|
|
|
|
gchar *error;
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
object = GTK_OBJECT (widget);
|
|
|
|
|
1998-08-24 05:27:29 +00:00
|
|
|
va_start (var_args, first_arg_name);
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
|
|
|
|
&arg_list,
|
|
|
|
&info_list,
|
1998-08-24 05:27:29 +00:00
|
|
|
first_arg_name,
|
|
|
|
var_args);
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
va_end (var_args);
|
|
|
|
|
|
|
|
if (error)
|
|
|
|
{
|
|
|
|
g_warning ("gtk_widget_set(): %s", error);
|
|
|
|
g_free (error);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GSList *slist_arg;
|
|
|
|
GSList *slist_info;
|
|
|
|
|
|
|
|
slist_arg = arg_list;
|
|
|
|
slist_info = info_list;
|
|
|
|
while (slist_arg)
|
|
|
|
{
|
|
|
|
gtk_object_arg_set (object, slist_arg->data, slist_info->data);
|
|
|
|
slist_arg = slist_arg->next;
|
|
|
|
slist_info = slist_info->next;
|
|
|
|
}
|
|
|
|
gtk_args_collect_cleanup (arg_list, info_list);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_setv:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_setv (GtkWidget *widget,
|
1998-01-16 05:11:10 +00:00
|
|
|
guint nargs,
|
1997-11-28 01:22:38 +00:00
|
|
|
GtkArg *args)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_object_setv (GTK_OBJECT (widget), nargs, args);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-20 23:58:42 +00:00
|
|
|
* gtk_widget_unparent:
|
|
|
|
* do any cleanup necessary necessary
|
1998-02-03 14:13:05 +00:00
|
|
|
* for setting parent = NULL.
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_unparent (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GtkWidget *toplevel;
|
1998-02-18 04:09:13 +00:00
|
|
|
GtkWidget *old_parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-30 23:47:09 +00:00
|
|
|
if (widget->parent == NULL)
|
|
|
|
return;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-02-03 14:13:05 +00:00
|
|
|
/* keep this function in sync with gtk_menu_detach()
|
|
|
|
*/
|
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
/* unset focused and default children properly, this code
|
|
|
|
* should eventually move into some gtk_window_unparent_branch() or
|
|
|
|
* similar function.
|
1998-05-03 15:45:08 +00:00
|
|
|
*/
|
1998-11-06 22:05:02 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
toplevel = gtk_widget_get_toplevel (widget);
|
1998-05-03 15:45:08 +00:00
|
|
|
if (GTK_CONTAINER (widget->parent)->focus_child == widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-05-03 15:45:08 +00:00
|
|
|
gtk_container_set_focus_child (GTK_CONTAINER (widget->parent), NULL);
|
|
|
|
|
|
|
|
if (GTK_IS_WINDOW (toplevel))
|
|
|
|
{
|
|
|
|
GtkWidget *child;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-05-03 15:45:08 +00:00
|
|
|
child = GTK_WINDOW (toplevel)->focus_widget;
|
|
|
|
|
|
|
|
while (child && child != widget)
|
|
|
|
child = child->parent;
|
|
|
|
|
|
|
|
if (child == widget)
|
|
|
|
gtk_window_set_focus (GTK_WINDOW (toplevel), NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (GTK_IS_WINDOW (toplevel))
|
|
|
|
{
|
|
|
|
GtkWidget *child;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-04-13 00:20:17 +00:00
|
|
|
child = GTK_WINDOW (toplevel)->default_widget;
|
|
|
|
|
|
|
|
while (child && child != widget)
|
|
|
|
child = child->parent;
|
|
|
|
|
|
|
|
if (child == widget)
|
|
|
|
gtk_window_set_default (GTK_WINDOW (toplevel), NULL);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-02-10 04:17:10 +00:00
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
if (GTK_WIDGET_REDRAW_PENDING (widget))
|
|
|
|
gtk_widget_redraw_queue_remove (widget);
|
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
if (GTK_IS_RESIZE_CONTAINER (widget))
|
|
|
|
gtk_container_clear_resize_widgets (GTK_CONTAINER (widget));
|
|
|
|
|
|
|
|
/* Remove the widget and all its children from any ->resize_widgets list
|
|
|
|
* of all the parents in our branch. This code should move into gtkcontainer.c
|
|
|
|
* somwhen, since we mess around with ->resize_widgets, which is
|
|
|
|
* actually not of our business.
|
|
|
|
*
|
|
|
|
* Two ways to make this prettier:
|
1998-04-08 21:40:45 +00:00
|
|
|
* Write a g_slist_conditional_remove (GSList, gboolean (*)(gpointer))
|
|
|
|
* Change resize_widgets to a GList
|
|
|
|
*/
|
1998-06-24 06:25:14 +00:00
|
|
|
toplevel = widget->parent;
|
|
|
|
while (toplevel)
|
1998-02-10 04:17:10 +00:00
|
|
|
{
|
1998-06-24 06:25:14 +00:00
|
|
|
GSList *slist;
|
|
|
|
GSList *prev;
|
1998-04-08 21:40:45 +00:00
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
if (!GTK_CONTAINER (toplevel)->resize_widgets)
|
|
|
|
{
|
|
|
|
toplevel = toplevel->parent;
|
|
|
|
continue;
|
|
|
|
}
|
1998-04-08 21:40:45 +00:00
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
prev = NULL;
|
|
|
|
slist = GTK_CONTAINER (toplevel)->resize_widgets;
|
|
|
|
while (slist)
|
1998-04-08 21:40:45 +00:00
|
|
|
{
|
1998-06-24 06:25:14 +00:00
|
|
|
GtkWidget *child;
|
|
|
|
GtkWidget *parent;
|
|
|
|
GSList *last;
|
1998-04-08 21:40:45 +00:00
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
last = slist;
|
|
|
|
slist = last->next;
|
|
|
|
child = last->data;
|
|
|
|
|
|
|
|
parent = child;
|
|
|
|
while (parent && (parent != widget))
|
|
|
|
parent = parent->parent;
|
|
|
|
|
|
|
|
if (parent == widget)
|
|
|
|
{
|
|
|
|
GTK_PRIVATE_UNSET_FLAG (child, GTK_RESIZE_NEEDED);
|
|
|
|
|
|
|
|
if (prev)
|
|
|
|
prev->next = slist;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* it is really messy to have this signal disconnection
|
|
|
|
* in gtkwidget.c, the resize_widgets invariants should
|
|
|
|
* all be taken care off by gtkcontainer.c exclusively.
|
|
|
|
*/
|
|
|
|
if (!slist)
|
|
|
|
gtk_signal_disconnect_by_func (GTK_OBJECT (toplevel),
|
|
|
|
GTK_SIGNAL_FUNC (gtk_container_clear_resize_widgets),
|
|
|
|
NULL);
|
|
|
|
GTK_CONTAINER (toplevel)->resize_widgets = slist;
|
|
|
|
}
|
|
|
|
|
|
|
|
g_slist_free_1 (last);
|
|
|
|
}
|
1998-04-08 21:40:45 +00:00
|
|
|
else
|
1998-06-24 06:25:14 +00:00
|
|
|
prev = last;
|
1998-04-08 21:40:45 +00:00
|
|
|
}
|
1998-06-24 06:25:14 +00:00
|
|
|
|
|
|
|
toplevel = toplevel->parent;
|
1998-02-10 04:17:10 +00:00
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->window &&
|
|
|
|
GTK_WIDGET_NO_WINDOW (widget) &&
|
|
|
|
GTK_WIDGET_DRAWABLE (widget))
|
1998-11-06 22:05:02 +00:00
|
|
|
gtk_widget_queue_clear (widget);
|
1998-02-01 02:28:14 +00:00
|
|
|
|
1998-03-30 23:04:51 +00:00
|
|
|
/* Reset the width and height here, to force reallocation if we
|
|
|
|
* get added back to a new parent. This won't work if our new
|
|
|
|
* allocation is smaller than 1x1 and we actually want a size of 1x1...
|
|
|
|
* (would 0x0 be OK here?)
|
|
|
|
*/
|
|
|
|
widget->allocation.width = 1;
|
|
|
|
widget->allocation.height = 1;
|
|
|
|
|
1998-02-01 02:28:14 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_IN_REPARENT (widget))
|
|
|
|
gtk_widget_unrealize (widget);
|
1998-02-18 04:09:13 +00:00
|
|
|
|
|
|
|
old_parent = widget->parent;
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->parent = NULL;
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_widget_set_parent_window (widget, NULL);
|
1998-02-22 02:18:29 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[PARENT_SET], old_parent);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_destroy:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_destroy (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
g_return_if_fail (GTK_OBJECT_CONSTRUCTED (widget));
|
|
|
|
|
1998-03-30 20:03:36 +00:00
|
|
|
gtk_object_destroy ((GtkObject*) widget);
|
1998-01-30 23:47:09 +00:00
|
|
|
}
|
|
|
|
|
1998-02-10 04:17:10 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_destroyed:
|
|
|
|
* Utility function: sets widget_pointer
|
|
|
|
* to NULL when widget is destroyed.
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
void
|
|
|
|
gtk_widget_destroyed (GtkWidget *widget,
|
|
|
|
GtkWidget **widget_pointer)
|
|
|
|
{
|
1998-02-07 04:59:23 +00:00
|
|
|
/* Don't make any assumptions about the
|
|
|
|
* value of widget!
|
|
|
|
* Even check widget_pointer.
|
|
|
|
*/
|
1998-01-30 23:47:09 +00:00
|
|
|
if (widget_pointer)
|
|
|
|
*widget_pointer = NULL;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_show:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_show (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_VISIBLE (widget))
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[SHOW]);
|
|
|
|
}
|
|
|
|
|
1998-03-28 00:10:49 +00:00
|
|
|
|
|
|
|
/*************************************************************
|
|
|
|
* gtk_widget_show_now:
|
|
|
|
* Show a widget, and if it is an unmapped toplevel widget
|
|
|
|
* wait for the map_event before returning
|
|
|
|
*
|
|
|
|
* Warning: This routine will call the main loop recursively.
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*************************************************************/
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_show_map_callback (GtkWidget *widget, GdkEvent *event, gint *flag)
|
|
|
|
{
|
|
|
|
*flag = TRUE;
|
|
|
|
gtk_signal_disconnect_by_data (GTK_OBJECT (widget), flag);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_show_now (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
gint flag = FALSE;
|
|
|
|
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
1998-03-28 00:10:49 +00:00
|
|
|
/* make sure we will get event */
|
|
|
|
if (!GTK_WIDGET_MAPPED (widget) &&
|
|
|
|
GTK_WIDGET_TOPLEVEL (widget))
|
|
|
|
{
|
|
|
|
gtk_widget_show (widget);
|
|
|
|
|
|
|
|
gtk_signal_connect (GTK_OBJECT (widget), "map_event",
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_show_map_callback),
|
|
|
|
&flag);
|
|
|
|
|
|
|
|
while (!flag)
|
|
|
|
gtk_main_iteration();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
gtk_widget_show (widget);
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_hide:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_hide (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-03-12 21:54:39 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_VISIBLE (widget))
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[HIDE]);
|
|
|
|
}
|
|
|
|
|
1998-03-12 21:54:39 +00:00
|
|
|
gint
|
1998-03-13 17:45:16 +00:00
|
|
|
gtk_widget_hide_on_delete (GtkWidget *widget)
|
1998-03-12 21:54:39 +00:00
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
1998-03-13 17:45:16 +00:00
|
|
|
|
1998-03-12 21:54:39 +00:00
|
|
|
gtk_widget_hide (widget);
|
1998-03-13 17:45:16 +00:00
|
|
|
|
1998-03-12 21:54:39 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1998-01-02 20:22:38 +00:00
|
|
|
void
|
|
|
|
gtk_widget_show_all (GtkWidget *widget)
|
|
|
|
{
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
GtkWidgetClass *class;
|
|
|
|
|
1998-01-02 20:22:38 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-02 20:22:38 +00:00
|
|
|
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
class = GTK_WIDGET_CLASS (GTK_OBJECT (widget)->klass);
|
|
|
|
|
|
|
|
if (class->show_all)
|
|
|
|
class->show_all (widget);
|
|
|
|
}
|
1998-01-02 20:22:38 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_hide_all (GtkWidget *widget)
|
|
|
|
{
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
GtkWidgetClass *class;
|
|
|
|
|
1998-01-02 20:22:38 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
class = GTK_WIDGET_CLASS (GTK_OBJECT (widget)->klass);
|
1998-01-02 20:22:38 +00:00
|
|
|
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
if (class->hide_all)
|
|
|
|
class->hide_all (widget);
|
1998-01-02 20:22:38 +00:00
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_map:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_map (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_MAPPED (widget))
|
|
|
|
{
|
|
|
|
if (!GTK_WIDGET_REALIZED (widget))
|
|
|
|
gtk_widget_realize (widget);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[MAP]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_unmap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_unmap (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_MAPPED (widget))
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[UNMAP]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_realize:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_realize (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
gint events;
|
|
|
|
GdkExtensionMode mode;
|
|
|
|
GtkWidgetShapeInfo *shape_info;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_REALIZED (widget))
|
|
|
|
{
|
|
|
|
/*
|
1997-11-28 01:22:38 +00:00
|
|
|
if (GTK_IS_CONTAINER (widget) && !GTK_WIDGET_NO_WINDOW (widget))
|
1998-08-18 16:58:09 +00:00
|
|
|
g_message ("gtk_widget_realize(%s)", gtk_type_name (GTK_WIDGET_TYPE (widget)));
|
1997-11-28 01:22:38 +00:00
|
|
|
*/
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->parent && !GTK_WIDGET_REALIZED (widget->parent))
|
|
|
|
gtk_widget_realize (widget->parent);
|
1998-02-27 16:31:06 +00:00
|
|
|
|
|
|
|
gtk_widget_ensure_style (widget);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[REALIZE]);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
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
|
|
|
if (GTK_WIDGET_HAS_SHAPE_MASK (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1997-11-28 01:22:38 +00:00
|
|
|
shape_info = gtk_object_get_data (GTK_OBJECT (widget),
|
1997-11-24 22:37:52 +00:00
|
|
|
shape_info_key);
|
|
|
|
gdk_window_shape_combine_mask (widget->window,
|
|
|
|
shape_info->shape_mask,
|
|
|
|
shape_info->offset_x,
|
|
|
|
shape_info->offset_y);
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
mode = gtk_widget_get_extension_events (widget);
|
|
|
|
if (mode != GDK_EXTENSION_EVENTS_NONE)
|
|
|
|
{
|
|
|
|
events = gtk_widget_get_events (widget);
|
|
|
|
gdk_input_set_extension_events (widget->window, events, mode);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_unrealize:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_unrealize (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-11-06 22:05:02 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
if (GTK_WIDGET_REDRAW_PENDING (widget))
|
1998-11-06 22:05:02 +00:00
|
|
|
gtk_widget_redraw_queue_remove (widget);
|
1998-03-14 04:43:14 +00:00
|
|
|
|
|
|
|
if (GTK_WIDGET_HAS_SHAPE_MASK (widget))
|
|
|
|
gtk_widget_shape_combine_mask (widget, NULL, -1, -1);
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
1998-03-21 22:11:26 +00:00
|
|
|
{
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[UNREALIZE]);
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_REALIZED | GTK_MAPPED);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_queue_draw:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
typedef struct _GtkDrawData GtkDrawData;
|
|
|
|
struct _GtkDrawData {
|
|
|
|
GdkRectangle rect;
|
|
|
|
GdkWindow *window;
|
|
|
|
};
|
|
|
|
|
|
|
|
static GMemChunk *draw_data_mem_chunk = NULL;
|
|
|
|
static GSList *draw_data_free_list = NULL;
|
|
|
|
static const gchar *draw_data_key = "gtk-draw-data";
|
1998-11-29 06:29:40 +00:00
|
|
|
static GQuark draw_data_key_id = 0;
|
1998-11-06 22:05:02 +00:00
|
|
|
|
|
|
|
static gint gtk_widget_idle_draw (gpointer data);
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_queue_draw_data (GtkWidget *widget,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
gint width,
|
|
|
|
gint height,
|
|
|
|
GdkWindow *window)
|
1998-01-30 23:47:09 +00:00
|
|
|
{
|
1998-11-06 22:05:02 +00:00
|
|
|
GSList *node;
|
|
|
|
GtkDrawData *data;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-05-18 04:31:03 +00:00
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
if ((width != 0) && (height != 0) && GTK_WIDGET_DRAWABLE (widget))
|
|
|
|
{
|
|
|
|
if (!draw_data_key_id)
|
|
|
|
draw_data_key_id = g_quark_from_static_string (draw_data_key);
|
|
|
|
|
|
|
|
if (draw_data_free_list)
|
|
|
|
{
|
|
|
|
node = draw_data_free_list;
|
|
|
|
data = node->data;
|
|
|
|
draw_data_free_list = draw_data_free_list->next;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (!draw_data_mem_chunk)
|
|
|
|
draw_data_mem_chunk = g_mem_chunk_create (GtkDrawData, 64,
|
|
|
|
G_ALLOC_ONLY);
|
|
|
|
data = g_chunk_new (GtkDrawData, draw_data_mem_chunk);
|
|
|
|
node = g_slist_alloc();
|
|
|
|
node->data = data;
|
|
|
|
}
|
|
|
|
|
|
|
|
data->rect.x = x;
|
|
|
|
data->rect.y = y;
|
|
|
|
|
|
|
|
if ((width < 0) || (height < 0))
|
|
|
|
{
|
|
|
|
data->rect.width = 0;
|
|
|
|
data->rect.height = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
data->rect.width = width;
|
|
|
|
data->rect.height = height;
|
|
|
|
}
|
|
|
|
data->window = window;
|
|
|
|
|
|
|
|
if ((width < 0) || (height < 0))
|
|
|
|
{
|
|
|
|
GSList *draw_data_list =
|
|
|
|
gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
if (draw_data_list)
|
|
|
|
draw_data_free_list = g_slist_concat (draw_data_list,
|
|
|
|
draw_data_free_list);
|
|
|
|
node->next = NULL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
node->next = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
|
|
|
|
if (!GTK_WIDGET_REDRAW_PENDING (widget))
|
|
|
|
{
|
|
|
|
GTK_PRIVATE_SET_FLAG (widget, GTK_REDRAW_PENDING);
|
|
|
|
if (gtk_widget_redraw_queue == NULL)
|
|
|
|
gtk_idle_add_priority (GTK_PRIORITY_INTERNAL,
|
|
|
|
gtk_widget_idle_draw,
|
|
|
|
NULL);
|
|
|
|
gtk_widget_redraw_queue = g_slist_prepend (gtk_widget_redraw_queue, widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), draw_data_key_id, node);
|
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
}
|
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
void
|
|
|
|
gtk_widget_queue_draw_area (GtkWidget *widget,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
gint width,
|
|
|
|
gint height)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
gtk_widget_queue_draw_data (widget, x, y, width, height, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_widget_queue_draw (GtkWidget *widget)
|
1998-11-06 22:05:02 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
gtk_widget_queue_draw_data (widget, 0, 0, -1, -1, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_queue_clear_area (GtkWidget *widget,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
gint width,
|
|
|
|
gint height)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidget *parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-11-06 22:05:02 +00:00
|
|
|
|
|
|
|
/* Find the correct widget */
|
|
|
|
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
parent = widget;
|
1998-11-06 22:05:02 +00:00
|
|
|
while (parent && GTK_WIDGET_NO_WINDOW (parent))
|
|
|
|
parent = parent->parent;
|
|
|
|
|
|
|
|
if (parent)
|
|
|
|
gtk_widget_queue_draw_data (parent, x, y, width, height, widget->window);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
gint wx, wy, wwidth, wheight;
|
|
|
|
/* Translate widget relative to window-relative */
|
|
|
|
|
|
|
|
gdk_window_get_position (widget->window, &wx, &wy);
|
|
|
|
x -= wx - widget->allocation.x;
|
|
|
|
y -= wy - widget->allocation.y;
|
|
|
|
|
|
|
|
gdk_window_get_size (widget->window, &wwidth, &wheight);
|
|
|
|
|
|
|
|
if (x < 0)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-11-06 22:05:02 +00:00
|
|
|
width += x; x = 0;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-11-06 22:05:02 +00:00
|
|
|
if (y < 0)
|
|
|
|
{
|
|
|
|
height += y; y = 0;
|
|
|
|
}
|
|
|
|
if (x + width > wwidth)
|
|
|
|
width = wwidth - x;
|
|
|
|
if (y + height > wheight)
|
|
|
|
height = wheight - y;
|
|
|
|
|
|
|
|
gtk_widget_queue_draw_data (widget, x, y, width, height, NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_redraw_queue_remove (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GSList *draw_data_list;
|
|
|
|
GSList *tmp_list;
|
|
|
|
|
|
|
|
g_return_if_fail (GTK_WIDGET_REDRAW_PENDING (widget));
|
|
|
|
|
|
|
|
gtk_widget_redraw_queue = g_slist_remove (gtk_widget_redraw_queue, widget);
|
|
|
|
|
|
|
|
draw_data_list = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
tmp_list = g_slist_last (draw_data_list);
|
|
|
|
if (tmp_list)
|
|
|
|
{
|
|
|
|
tmp_list->next = draw_data_free_list;
|
|
|
|
draw_data_free_list = draw_data_list;
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_REDRAW_PENDING);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_queue_clear (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
gtk_widget_queue_clear_area (widget, widget->allocation.x,
|
|
|
|
widget->allocation.y,
|
|
|
|
widget->allocation.width,
|
|
|
|
widget->allocation.height);
|
|
|
|
else
|
|
|
|
gtk_widget_queue_clear_area (widget, 0, 0,
|
|
|
|
widget->allocation.width,
|
|
|
|
widget->allocation.height);
|
|
|
|
}
|
|
|
|
|
|
|
|
static gint
|
|
|
|
gtk_widget_draw_data_combine (GtkDrawData *parent, GtkDrawData *child)
|
|
|
|
{
|
|
|
|
gint parent_x2, parent_y2;
|
|
|
|
gint child_x2, child_y2;
|
|
|
|
|
|
|
|
/* Check for intersection */
|
|
|
|
|
|
|
|
parent_x2 = parent->rect.x + parent->rect.width;
|
|
|
|
child_x2 = child->rect.x + child->rect.width;
|
|
|
|
parent_y2 = parent->rect.y + parent->rect.height;
|
|
|
|
child_y2 = child->rect.y + child->rect.height;
|
|
|
|
|
|
|
|
if ((child->rect.x > parent_x2) || (parent->rect.x > child_x2) ||
|
|
|
|
(child->rect.y > parent_y2) || (parent->rect.y > child_y2))
|
|
|
|
return FALSE;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
parent->rect.x = MIN (parent->rect.x, child->rect.x);
|
|
|
|
parent->rect.y = MIN (parent->rect.y, child->rect.y);
|
|
|
|
parent->rect.width = MAX (parent_x2, child_x2) - parent->rect.x;
|
|
|
|
parent->rect.height = MAX (parent_y2, child_y2) - parent->rect.y;
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Take a rectangle with respect to window, and translate it
|
|
|
|
* to coordinates relative to widget's allocation, clipping through
|
|
|
|
* intermediate windows. Returns whether translation failed. If the
|
|
|
|
* translation failed, we have something like a handlebox, where
|
|
|
|
* the child widget's GdkWindow is not a child of the parents GdkWindow.
|
|
|
|
*/
|
|
|
|
static gboolean
|
|
|
|
gtk_widget_clip_rect (GtkWidget *widget,
|
|
|
|
GdkWindow *window,
|
|
|
|
GdkRectangle *rect,
|
|
|
|
gint *x_offset,
|
|
|
|
gint *y_offset)
|
|
|
|
{
|
|
|
|
gint x,y, width, height;
|
|
|
|
|
|
|
|
while (window && (window != widget->window))
|
|
|
|
{
|
|
|
|
gdk_window_get_position (window, &x, &y);
|
|
|
|
rect->x += x;
|
|
|
|
if (x_offset)
|
|
|
|
*x_offset += x;
|
|
|
|
rect->y += y;
|
|
|
|
if (y_offset)
|
|
|
|
*y_offset += y;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
window = gdk_window_get_parent (window);
|
|
|
|
if (!window)
|
|
|
|
return FALSE;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
gdk_window_get_size (window, &width, &height);
|
|
|
|
|
|
|
|
if (rect->x < 0)
|
|
|
|
{
|
|
|
|
rect->width += rect->x;
|
|
|
|
rect->x = 0;
|
|
|
|
}
|
|
|
|
if (rect->y < 0)
|
|
|
|
{
|
|
|
|
rect->height += rect->y;
|
|
|
|
rect->y = 0;
|
|
|
|
}
|
|
|
|
if (rect->x + rect->width > width)
|
|
|
|
rect->width = width - rect->x;
|
|
|
|
if (rect->y + rect->height > height)
|
|
|
|
rect->height = height - rect->y;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-11-06 22:05:02 +00:00
|
|
|
|
|
|
|
if (!window)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if (!GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
if (gdk_window_get_toplevel (window) != window)
|
|
|
|
{
|
|
|
|
gdk_window_get_position (window, &x, &y);
|
|
|
|
rect->x += x - widget->allocation.x;
|
|
|
|
if (x_offset)
|
|
|
|
*x_offset += x - widget->allocation.x;
|
|
|
|
rect->y += y - widget->allocation.y;
|
|
|
|
if (y_offset)
|
|
|
|
*y_offset += y - widget->allocation.y;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gint
|
|
|
|
gtk_widget_idle_draw (gpointer data)
|
|
|
|
{
|
|
|
|
GSList *widget_list;
|
|
|
|
GSList *draw_data_list;
|
|
|
|
GtkWidget *widget;
|
|
|
|
|
|
|
|
/* Translate all draw requests to be allocation-relative */
|
|
|
|
widget_list = gtk_widget_redraw_queue;
|
|
|
|
while (widget_list)
|
|
|
|
{
|
|
|
|
widget = widget_list->data;
|
|
|
|
draw_data_list = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
|
|
|
|
while (draw_data_list)
|
|
|
|
{
|
|
|
|
gboolean full_allocation = FALSE;
|
|
|
|
GtkDrawData *data = draw_data_list->data;
|
|
|
|
|
|
|
|
if (data->window)
|
|
|
|
{
|
|
|
|
/* If the translation fails, we have a handlebox,
|
|
|
|
* so redraw the whole widget. Could be done better?
|
|
|
|
*/
|
|
|
|
full_allocation = !gtk_widget_clip_rect (widget,
|
|
|
|
data->window,
|
|
|
|
&data->rect,
|
|
|
|
NULL, NULL);
|
|
|
|
data->window = NULL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ((data->rect.width == 0) && (data->rect.height == 0))
|
|
|
|
{
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
data->rect.x = widget->allocation.x;
|
|
|
|
data->rect.y = widget->allocation.y;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
data->rect.x = 0;
|
|
|
|
data->rect.y = 0;
|
|
|
|
}
|
|
|
|
data->rect.width = widget->allocation.width;
|
|
|
|
data->rect.height = widget->allocation.height;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
draw_data_list = draw_data_list->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
widget_list = widget_list->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Coalesce redraws
|
|
|
|
*/
|
|
|
|
widget_list = gtk_widget_redraw_queue;
|
|
|
|
while (widget_list)
|
|
|
|
{
|
|
|
|
GSList *prev_node = NULL;
|
|
|
|
widget = widget_list->data;
|
|
|
|
draw_data_list = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
|
|
|
|
while (draw_data_list)
|
|
|
|
{
|
|
|
|
gint x_offset, y_offset;
|
|
|
|
GtkDrawData *data = draw_data_list->data;
|
|
|
|
GSList *parent_list = draw_data_list->next;
|
|
|
|
GtkWidget *parent;
|
|
|
|
GdkWindow *window;
|
|
|
|
|
|
|
|
x_offset = 0;
|
|
|
|
y_offset = 0;
|
|
|
|
|
|
|
|
parent = widget;
|
|
|
|
while (parent)
|
|
|
|
{
|
|
|
|
while (parent_list)
|
|
|
|
{
|
|
|
|
if (gtk_widget_draw_data_combine (parent_list->data, data))
|
|
|
|
{
|
|
|
|
GSList *tmp;
|
|
|
|
if (prev_node)
|
|
|
|
prev_node->next = draw_data_list->next;
|
|
|
|
else
|
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id,
|
|
|
|
draw_data_list->next);
|
|
|
|
|
|
|
|
tmp = draw_data_list->next;
|
|
|
|
draw_data_list->next = draw_data_free_list;
|
|
|
|
draw_data_free_list = draw_data_list;
|
|
|
|
draw_data_list = tmp;
|
|
|
|
|
|
|
|
goto next_rect;
|
|
|
|
}
|
|
|
|
|
|
|
|
parent_list = parent_list->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
window = parent->window;
|
|
|
|
|
|
|
|
if (parent->parent && parent->parent->window != window)
|
|
|
|
{
|
|
|
|
if (!GTK_WIDGET_NO_WINDOW (parent))
|
|
|
|
{
|
|
|
|
gint x, y;
|
|
|
|
gdk_window_get_position (window, &x, &y);
|
|
|
|
data->rect.x -= x - parent->allocation.x;
|
|
|
|
x_offset -= x - parent->allocation.x;
|
|
|
|
data->rect.y -= y - parent->allocation.y;
|
|
|
|
y_offset -= y - parent->allocation.y;
|
|
|
|
}
|
|
|
|
/* If we can't translate the rectangle, stop trying to
|
|
|
|
* merge. (This occurs for a handlebox)
|
|
|
|
*/
|
|
|
|
if (!gtk_widget_clip_rect (parent->parent, window, &data->rect,
|
|
|
|
&x_offset, &y_offset))
|
|
|
|
parent = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (parent)
|
|
|
|
parent = parent->parent;
|
|
|
|
|
|
|
|
if (parent && GTK_WIDGET_REDRAW_PENDING (parent))
|
|
|
|
parent_list = gtk_object_get_data_by_id (GTK_OBJECT (parent),
|
|
|
|
draw_data_key_id);
|
|
|
|
else
|
|
|
|
parent_list = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* OK, this rectangle stays around. But take advantage
|
|
|
|
* of the work we've done to clip it to the visible area -
|
|
|
|
* rect.width/height have already been appropriately
|
|
|
|
* decreased
|
|
|
|
*/
|
|
|
|
data->rect.x -= x_offset;
|
|
|
|
data->rect.y -= y_offset;
|
|
|
|
|
|
|
|
|
|
|
|
prev_node = draw_data_list;
|
|
|
|
|
|
|
|
draw_data_list = draw_data_list->next;
|
|
|
|
next_rect:
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
widget_list = widget_list->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Process the draws */
|
|
|
|
|
|
|
|
widget_list = gtk_widget_redraw_queue;
|
|
|
|
|
|
|
|
while (widget_list)
|
|
|
|
{
|
|
|
|
widget = widget_list->data;
|
|
|
|
draw_data_list = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id);
|
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget),
|
|
|
|
draw_data_key_id,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_REDRAW_PENDING);
|
|
|
|
|
|
|
|
while (draw_data_list)
|
|
|
|
{
|
|
|
|
GtkDrawData *data = draw_data_list->data;
|
|
|
|
gtk_widget_draw (widget, &data->rect);
|
|
|
|
|
|
|
|
if (draw_data_list->next)
|
|
|
|
draw_data_list = draw_data_list->next;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
draw_data_list->next = draw_data_free_list;
|
|
|
|
draw_data_free_list = draw_data_list;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
widget_list = widget_list->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
g_slist_free (gtk_widget_redraw_queue);
|
|
|
|
gtk_widget_redraw_queue = NULL;
|
|
|
|
|
|
|
|
return FALSE;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_queue_resize (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-06-24 06:25:14 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-06-19 01:26:24 +00:00
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
if (GTK_IS_RESIZE_CONTAINER (widget))
|
|
|
|
gtk_container_clear_resize_widgets (GTK_CONTAINER (widget));
|
1998-06-19 01:26:24 +00:00
|
|
|
|
1998-06-24 06:25:14 +00:00
|
|
|
if (widget->parent)
|
|
|
|
gtk_container_queue_resize (GTK_CONTAINER (widget->parent));
|
|
|
|
else if (GTK_WIDGET_TOPLEVEL (widget))
|
|
|
|
gtk_container_queue_resize (GTK_CONTAINER (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_draw:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_draw (GtkWidget *widget,
|
|
|
|
GdkRectangle *area)
|
|
|
|
{
|
|
|
|
GdkRectangle temp_area;
|
1998-03-12 07:28:41 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-03-12 07:28:41 +00:00
|
|
|
|
1998-03-26 20:57:29 +00:00
|
|
|
if (GTK_WIDGET_DRAWABLE (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
if (!area)
|
|
|
|
{
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
temp_area.x = widget->allocation.x;
|
|
|
|
temp_area.y = widget->allocation.y;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
temp_area.x = 0;
|
|
|
|
temp_area.y = 0;
|
|
|
|
}
|
1998-03-12 07:28:41 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
temp_area.width = widget->allocation.width;
|
|
|
|
temp_area.height = widget->allocation.height;
|
|
|
|
area = &temp_area;
|
|
|
|
}
|
1998-03-12 07:28:41 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW], area);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_draw_focus:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_draw_focus (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW_FOCUS]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_draw_default:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_draw_default (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW_DEFAULT]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_size_request:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_size_request (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
GtkRequisition *requisition)
|
|
|
|
{
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-30 23:47:09 +00:00
|
|
|
|
|
|
|
gtk_widget_ref (widget);
|
1998-02-27 22:09:20 +00:00
|
|
|
gtk_widget_ensure_style (widget);
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[SIZE_REQUEST],
|
|
|
|
requisition);
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1998-01-30 23:47:09 +00:00
|
|
|
if (aux_info)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-01-30 23:47:09 +00:00
|
|
|
if (aux_info->width > 0)
|
|
|
|
requisition->width = aux_info->width;
|
|
|
|
if (aux_info->height > 0)
|
|
|
|
requisition->height = aux_info->height;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_size_allocate:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_size_allocate (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
GtkAllocation *allocation)
|
|
|
|
{
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
|
|
|
GtkAllocation real_allocation;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
real_allocation = *allocation;
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (aux_info)
|
|
|
|
{
|
|
|
|
if (aux_info->x != -1)
|
|
|
|
real_allocation.x = aux_info->x;
|
|
|
|
if (aux_info->y != -1)
|
|
|
|
real_allocation.y = aux_info->y;
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[SIZE_ALLOCATE], &real_allocation);
|
|
|
|
}
|
|
|
|
|
1998-06-18 03:22:09 +00:00
|
|
|
static void
|
|
|
|
gtk_widget_stop_add_accelerator (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
gtk_signal_emit_stop (GTK_OBJECT (widget), widget_signals[ADD_ACCELERATOR]);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_stop_remove_accelerator (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
gtk_signal_emit_stop (GTK_OBJECT (widget), widget_signals[REMOVE_ACCELERATOR]);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
1998-11-28 01:56:09 +00:00
|
|
|
gtk_widget_lock_accelerators (GtkWidget *widget)
|
1998-06-18 03:22:09 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
if (gtk_signal_handler_pending_by_func (GTK_OBJECT (widget),
|
|
|
|
widget_signals[ADD_ACCELERATOR],
|
|
|
|
TRUE,
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_add_accelerator),
|
|
|
|
NULL) == 0)
|
|
|
|
{
|
|
|
|
gtk_signal_connect (GTK_OBJECT (widget),
|
|
|
|
"add_accelerator",
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_add_accelerator),
|
|
|
|
NULL);
|
|
|
|
gtk_signal_connect (GTK_OBJECT (widget),
|
|
|
|
"remove_accelerator",
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_remove_accelerator),
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
1998-11-28 01:56:09 +00:00
|
|
|
gtk_widget_unlock_accelerators (GtkWidget *widget)
|
1998-06-18 03:22:09 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
if (gtk_signal_handler_pending_by_func (GTK_OBJECT (widget),
|
|
|
|
widget_signals[ADD_ACCELERATOR],
|
|
|
|
TRUE,
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_add_accelerator),
|
|
|
|
NULL) > 0)
|
|
|
|
{
|
|
|
|
gtk_signal_disconnect_by_func (GTK_OBJECT (widget),
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_add_accelerator),
|
|
|
|
NULL);
|
|
|
|
gtk_signal_disconnect_by_func (GTK_OBJECT (widget),
|
|
|
|
GTK_SIGNAL_FUNC (gtk_widget_stop_remove_accelerator),
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-11-28 01:56:09 +00:00
|
|
|
void
|
|
|
|
gtk_widget_thaw_accelerators (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_message ("gtk_widget_thaw_accelerators() is deprecated");
|
|
|
|
|
|
|
|
gtk_widget_unlock_accelerators (widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_freeze_accelerators (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_message ("gtk_widget_freeze_accelerators() is deprecated");
|
|
|
|
|
|
|
|
gtk_widget_lock_accelerators (widget);
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
void
|
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
|
|
|
gtk_widget_add_accelerator (GtkWidget *widget,
|
|
|
|
const gchar *accel_signal,
|
|
|
|
GtkAccelGroup *accel_group,
|
|
|
|
guint accel_key,
|
|
|
|
guint accel_mods,
|
|
|
|
GtkAccelFlags accel_flags)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
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
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (accel_group != NULL);
|
|
|
|
|
|
|
|
gtk_accel_group_add (accel_group,
|
|
|
|
accel_key,
|
|
|
|
accel_mods,
|
|
|
|
accel_flags,
|
|
|
|
(GtkObject*) widget,
|
|
|
|
accel_signal);
|
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
|
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
|
|
|
void
|
|
|
|
gtk_widget_remove_accelerator (GtkWidget *widget,
|
|
|
|
GtkAccelGroup *accel_group,
|
|
|
|
guint accel_key,
|
|
|
|
guint accel_mods)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (accel_group != NULL);
|
|
|
|
|
|
|
|
gtk_accel_group_remove (accel_group,
|
|
|
|
accel_key,
|
|
|
|
accel_mods,
|
|
|
|
(GtkObject*) widget);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
void
|
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
|
|
|
gtk_widget_remove_accelerators (GtkWidget *widget,
|
|
|
|
const gchar *accel_signal,
|
|
|
|
gboolean visible_only)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
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
|
|
|
GSList *slist;
|
|
|
|
guint signal_id;
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
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
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (accel_signal != NULL);
|
|
|
|
|
|
|
|
signal_id = gtk_signal_lookup (accel_signal, GTK_OBJECT_TYPE (widget));
|
|
|
|
g_return_if_fail (signal_id != 0);
|
|
|
|
|
|
|
|
slist = gtk_accel_group_entries_from_object (GTK_OBJECT (widget));
|
|
|
|
while (slist)
|
|
|
|
{
|
|
|
|
GtkAccelEntry *ac_entry;
|
|
|
|
|
|
|
|
ac_entry = slist->data;
|
|
|
|
slist = slist->next;
|
|
|
|
if (ac_entry->accel_flags & GTK_ACCEL_VISIBLE &&
|
|
|
|
ac_entry->signal_id == signal_id)
|
|
|
|
gtk_widget_remove_accelerator (GTK_WIDGET (widget),
|
|
|
|
ac_entry->accel_group,
|
|
|
|
ac_entry->accelerator_key,
|
|
|
|
ac_entry->accelerator_mods);
|
|
|
|
}
|
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
|
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
|
|
|
guint
|
|
|
|
gtk_widget_accelerator_signal (GtkWidget *widget,
|
|
|
|
GtkAccelGroup *accel_group,
|
|
|
|
guint accel_key,
|
|
|
|
guint accel_mods)
|
|
|
|
{
|
|
|
|
GtkAccelEntry *ac_entry;
|
|
|
|
|
|
|
|
g_return_val_if_fail (widget != NULL, 0);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
|
|
|
|
g_return_val_if_fail (accel_group != NULL, 0);
|
|
|
|
|
|
|
|
ac_entry = gtk_accel_group_get_entry (accel_group, accel_key, accel_mods);
|
|
|
|
|
|
|
|
if (ac_entry && ac_entry->object == (GtkObject*) widget)
|
|
|
|
return ac_entry->signal_id;
|
|
|
|
return 0;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
1998-06-09 07:11:55 +00:00
|
|
|
static gint
|
|
|
|
gtk_widget_real_key_press_event (GtkWidget *widget,
|
|
|
|
GdkEventKey *event)
|
|
|
|
{
|
|
|
|
gboolean handled = FALSE;
|
|
|
|
|
|
|
|
g_return_val_if_fail (widget != NULL, handled);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), handled);
|
|
|
|
g_return_val_if_fail (event != NULL, handled);
|
|
|
|
|
|
|
|
if (!handled)
|
|
|
|
handled = gtk_bindings_activate (GTK_OBJECT (widget),
|
1998-06-30 08:02:53 +00:00
|
|
|
event->keyval,
|
|
|
|
event->state);
|
|
|
|
|
|
|
|
return handled;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gint
|
|
|
|
gtk_widget_real_key_release_event (GtkWidget *widget,
|
|
|
|
GdkEventKey *event)
|
|
|
|
{
|
|
|
|
gboolean handled = FALSE;
|
|
|
|
|
|
|
|
g_return_val_if_fail (widget != NULL, handled);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), handled);
|
|
|
|
g_return_val_if_fail (event != NULL, handled);
|
|
|
|
|
|
|
|
if (!handled)
|
|
|
|
handled = gtk_bindings_activate (GTK_OBJECT (widget),
|
|
|
|
event->keyval,
|
|
|
|
event->state | GDK_RELEASE_MASK);
|
1998-06-09 07:11:55 +00:00
|
|
|
|
|
|
|
return handled;
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_event:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
gint
|
|
|
|
gtk_widget_event (GtkWidget *widget,
|
|
|
|
GdkEvent *event)
|
|
|
|
{
|
|
|
|
gint return_val;
|
|
|
|
gint signal_num;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
new function to perform the same actions as gtk_list_remove_items, but
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
1998-02-05 03:53:41 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, TRUE);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), TRUE);
|
1998-02-17 02:19:30 +00:00
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_ref (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
return_val = FALSE;
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[EVENT], event,
|
|
|
|
&return_val);
|
1998-02-03 14:13:05 +00:00
|
|
|
if (return_val || GTK_OBJECT_DESTROYED (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_NOTHING:
|
|
|
|
signal_num = -1;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
signal_num = BUTTON_PRESS_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
signal_num = BUTTON_RELEASE_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
signal_num = MOTION_NOTIFY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_DELETE:
|
|
|
|
signal_num = DELETE_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_DESTROY:
|
|
|
|
signal_num = DESTROY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
signal_num = KEY_PRESS_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
signal_num = KEY_RELEASE_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
signal_num = ENTER_NOTIFY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
signal_num = LEAVE_NOTIFY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_FOCUS_CHANGE:
|
|
|
|
if (event->focus_change.in)
|
|
|
|
signal_num = FOCUS_IN_EVENT;
|
|
|
|
else
|
|
|
|
signal_num = FOCUS_OUT_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_CONFIGURE:
|
|
|
|
signal_num = CONFIGURE_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_MAP:
|
|
|
|
signal_num = MAP_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_UNMAP:
|
|
|
|
signal_num = UNMAP_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_PROPERTY_NOTIFY:
|
|
|
|
signal_num = PROPERTY_NOTIFY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_SELECTION_CLEAR:
|
|
|
|
signal_num = SELECTION_CLEAR_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_SELECTION_REQUEST:
|
|
|
|
signal_num = SELECTION_REQUEST_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_SELECTION_NOTIFY:
|
|
|
|
signal_num = SELECTION_NOTIFY_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
signal_num = PROXIMITY_IN_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_PROXIMITY_OUT:
|
|
|
|
signal_num = PROXIMITY_OUT_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_NO_EXPOSE:
|
|
|
|
signal_num = NO_EXPOSE_EVENT;
|
|
|
|
break;
|
|
|
|
case GDK_CLIENT_EVENT:
|
|
|
|
signal_num = CLIENT_EVENT;
|
|
|
|
break;
|
new function to perform the same actions as gtk_list_remove_items, but
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
1998-02-05 03:53:41 +00:00
|
|
|
case GDK_EXPOSE:
|
1998-11-06 22:05:02 +00:00
|
|
|
/* there is no sense in providing a widget with bogus expose events.
|
|
|
|
* Widgets that are going to be resized don't need to be
|
|
|
|
* exposed, since they will be redrawn anyways.
|
new function to perform the same actions as gtk_list_remove_items, but
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
1998-02-05 03:53:41 +00:00
|
|
|
*/
|
1998-11-06 22:05:02 +00:00
|
|
|
if (!event->any.window ||
|
|
|
|
GTK_WIDGET_RESIZE_NEEDED (widget) ||
|
|
|
|
(widget->parent && GTK_WIDGET_RESIZE_NEEDED (widget->parent)))
|
new function to perform the same actions as gtk_list_remove_items, but
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
1998-02-05 03:53:41 +00:00
|
|
|
{
|
|
|
|
gtk_widget_unref (widget);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
signal_num = EXPOSE_EVENT;
|
|
|
|
break;
|
1998-05-14 18:01:35 +00:00
|
|
|
case GDK_VISIBILITY_NOTIFY:
|
|
|
|
signal_num = VISIBILITY_NOTIFY_EVENT;
|
|
|
|
break;
|
1998-01-30 23:47:09 +00:00
|
|
|
default:
|
|
|
|
g_warning ("could not determine signal number for event: %d", event->type);
|
|
|
|
gtk_widget_unref (widget);
|
1998-02-03 14:13:05 +00:00
|
|
|
return TRUE;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
if (signal_num != -1)
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[signal_num], event, &return_val);
|
|
|
|
|
1998-02-03 14:13:05 +00:00
|
|
|
return_val |= GTK_OBJECT_DESTROYED (widget);
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
1998-02-03 14:13:05 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return return_val;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_activate:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
gboolean
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_widget_activate (GtkWidget *widget)
|
|
|
|
{
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (WIDGET_CLASS (widget)->activate_signal)
|
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.
1998-11-23 01:54:45 +00:00
|
|
|
{
|
|
|
|
/* FIXME: we should eventually check the signals signature here */
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), WIDGET_CLASS (widget)->activate_signal);
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
gtk_widget_scroll_adjustements (GtkWidget *widget,
|
|
|
|
GtkAdjustment *hadjustment,
|
|
|
|
GtkAdjustment *vadjustment)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
|
|
|
if (hadjustment)
|
|
|
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadjustment), FALSE);
|
|
|
|
if (vadjustment)
|
|
|
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadjustment), FALSE);
|
|
|
|
|
|
|
|
if (WIDGET_CLASS (widget)->scroll_adjustments_signal)
|
|
|
|
{
|
|
|
|
/* FIXME: we should eventually check the signals signature here */
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget),
|
|
|
|
WIDGET_CLASS (widget)->scroll_adjustments_signal,
|
|
|
|
hadjustment, vadjustment);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return FALSE;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-20 23:58:42 +00:00
|
|
|
* gtk_widget_reparent_container_child:
|
|
|
|
* assistent function to gtk_widget_reparent
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
1997-12-18 02:17:14 +00:00
|
|
|
static void
|
1998-11-04 03:32:22 +00:00
|
|
|
gtk_widget_reparent_container_child (GtkWidget *widget,
|
|
|
|
gpointer client_data)
|
1997-12-18 02:17:14 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-12-18 02:17:14 +00:00
|
|
|
g_return_if_fail (client_data != NULL);
|
1998-01-30 23:47:09 +00:00
|
|
|
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
if (widget->window)
|
|
|
|
gdk_window_unref (widget->window);
|
|
|
|
widget->window = (GdkWindow*) client_data;
|
|
|
|
if (widget->window)
|
|
|
|
gdk_window_ref (widget->window);
|
1997-12-18 02:17:14 +00:00
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
if (GTK_IS_CONTAINER (widget))
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
gtk_container_forall (GTK_CONTAINER (widget),
|
|
|
|
gtk_widget_reparent_container_child,
|
|
|
|
client_data);
|
1998-01-30 23:47:09 +00:00
|
|
|
}
|
1997-12-18 02:17:14 +00:00
|
|
|
else
|
1998-01-30 23:47:09 +00:00
|
|
|
gdk_window_reparent (widget->window,
|
|
|
|
(GdkWindow*) client_data, 0, 0);
|
1997-12-18 02:17:14 +00:00
|
|
|
}
|
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_reparent:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
1997-12-18 02:17:14 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
void
|
|
|
|
gtk_widget_reparent (GtkWidget *widget,
|
|
|
|
GtkWidget *new_parent)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-02-03 14:13:05 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (new_parent != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_CONTAINER (new_parent));
|
1998-02-03 14:13:05 +00:00
|
|
|
g_return_if_fail (widget->parent != NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->parent != new_parent)
|
|
|
|
{
|
1998-02-01 02:28:14 +00:00
|
|
|
/* First try to see if we can get away without unrealizing
|
1998-02-04 00:06:29 +00:00
|
|
|
* the widget as we reparent it. if so we set a flag so
|
|
|
|
* that gtk_widget_unparent doesn't unrealize widget
|
1998-02-01 02:28:14 +00:00
|
|
|
*/
|
|
|
|
if (GTK_WIDGET_REALIZED (widget) && GTK_WIDGET_REALIZED (new_parent))
|
1998-02-04 00:06:29 +00:00
|
|
|
GTK_PRIVATE_SET_FLAG (widget, GTK_IN_REPARENT);
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_ref (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
|
|
|
|
gtk_container_add (GTK_CONTAINER (new_parent), widget);
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
|
|
|
|
1998-02-01 02:28:14 +00:00
|
|
|
if (GTK_WIDGET_IN_REPARENT (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-02-04 00:06:29 +00:00
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_IN_REPARENT);
|
|
|
|
|
1998-02-01 02:28:14 +00:00
|
|
|
/* OK, now fix up the widget's window. (And that for any
|
|
|
|
* children, if the widget is NO_WINDOW and a container)
|
|
|
|
*/
|
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
if (GTK_IS_CONTAINER (widget))
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
gtk_container_forall (GTK_CONTAINER (widget),
|
|
|
|
gtk_widget_reparent_container_child,
|
|
|
|
gtk_widget_get_parent_window (widget));
|
1998-02-01 02:28:14 +00:00
|
|
|
else
|
1997-12-18 02:17:14 +00:00
|
|
|
{
|
1998-02-01 02:28:14 +00:00
|
|
|
GdkWindow *parent_window;
|
|
|
|
|
|
|
|
parent_window = gtk_widget_get_parent_window (widget);
|
|
|
|
if (parent_window != widget->window)
|
1998-01-30 23:47:09 +00:00
|
|
|
{
|
1998-02-01 02:28:14 +00:00
|
|
|
if (widget->window)
|
|
|
|
gdk_window_unref (widget->window);
|
|
|
|
widget->window = parent_window;
|
|
|
|
if (widget->window)
|
|
|
|
gdk_window_ref (widget->window);
|
1998-01-30 23:47:09 +00:00
|
|
|
}
|
1997-12-18 02:17:14 +00:00
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
else
|
1998-02-01 02:28:14 +00:00
|
|
|
gdk_window_reparent (widget->window, gtk_widget_get_parent_window (widget), 0, 0);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_popup:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_popup (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint x,
|
|
|
|
gint y)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_VISIBLE (widget))
|
|
|
|
{
|
|
|
|
if (!GTK_WIDGET_REALIZED (widget))
|
|
|
|
gtk_widget_realize (widget);
|
|
|
|
if (!GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
gdk_window_move (widget->window, x, y);
|
|
|
|
gtk_widget_show (widget);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_intersect:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
gint
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_intersect (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
GdkRectangle *area,
|
|
|
|
GdkRectangle *intersection)
|
|
|
|
{
|
|
|
|
GdkRectangle *dest;
|
|
|
|
GdkRectangle tmp;
|
|
|
|
gint return_val;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, FALSE);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (area != NULL, FALSE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (intersection)
|
|
|
|
dest = intersection;
|
|
|
|
else
|
|
|
|
dest = &tmp;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return_val = gdk_rectangle_intersect ((GdkRectangle*) &widget->allocation, area, dest);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (return_val && intersection && !GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
intersection->x -= widget->allocation.x;
|
|
|
|
intersection->y -= widget->allocation.y;
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return return_val;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_grab_focus:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_grab_focus (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-05-01 04:23:59 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
if (GTK_WIDGET_CAN_FOCUS (widget))
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-05-03 15:45:08 +00:00
|
|
|
GtkWidget *parent;
|
1998-05-01 04:23:59 +00:00
|
|
|
GtkWidget *child;
|
|
|
|
GtkType window_type;
|
|
|
|
|
|
|
|
window_type = gtk_window_get_type ();
|
1998-05-03 15:45:08 +00:00
|
|
|
parent = widget->parent;
|
1998-05-01 04:23:59 +00:00
|
|
|
child = widget;
|
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
while (parent && !gtk_type_is_a (GTK_WIDGET_TYPE (parent), window_type))
|
1998-05-01 04:23:59 +00:00
|
|
|
{
|
1998-05-03 15:45:08 +00:00
|
|
|
gtk_container_set_focus_child (GTK_CONTAINER (parent), child);
|
|
|
|
child = parent;
|
|
|
|
parent = parent->parent;
|
1998-05-01 04:23:59 +00:00
|
|
|
}
|
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
if (parent && gtk_type_is_a (GTK_WIDGET_TYPE (parent), window_type))
|
1998-05-01 04:23:59 +00:00
|
|
|
{
|
1998-05-03 15:45:08 +00:00
|
|
|
gtk_container_set_focus_child (GTK_CONTAINER (parent), child);
|
|
|
|
gtk_window_set_focus (GTK_WINDOW (parent), widget);
|
1998-05-01 04:23:59 +00:00
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_grab_default:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_grab_default (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GtkWidget *window;
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkType window_type;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (GTK_WIDGET_CAN_DEFAULT (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
window_type = gtk_window_get_type ();
|
|
|
|
window = widget->parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
while (window && !gtk_type_is_a (GTK_WIDGET_TYPE (window), window_type))
|
1997-11-24 22:37:52 +00:00
|
|
|
window = window->parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
if (window && gtk_type_is_a (GTK_WIDGET_TYPE (window), window_type))
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_window_set_default (GTK_WINDOW (window), widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_name:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1997-11-28 01:22:38 +00:00
|
|
|
gtk_widget_set_name (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
const gchar *name)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->name)
|
|
|
|
g_free (widget->name);
|
|
|
|
widget->name = g_strdup (name);
|
1998-02-27 16:31:06 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_USER_STYLE (widget))
|
1998-02-27 16:31:06 +00:00
|
|
|
gtk_widget_set_rc_style (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_name:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
gchar*
|
|
|
|
gtk_widget_get_name (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->name)
|
|
|
|
return widget->name;
|
|
|
|
return gtk_type_name (GTK_WIDGET_TYPE (widget));
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_state:
|
|
|
|
*
|
|
|
|
* arguments:
|
1998-01-20 23:58:42 +00:00
|
|
|
* widget
|
|
|
|
* state
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1998-01-20 23:58:42 +00:00
|
|
|
gtk_widget_set_state (GtkWidget *widget,
|
|
|
|
GtkStateType state)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-03-26 21:57:45 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
if (state == GTK_WIDGET_STATE (widget))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (state == GTK_STATE_INSENSITIVE)
|
|
|
|
gtk_widget_set_sensitive (widget, FALSE);
|
|
|
|
else
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-01-20 23:58:42 +00:00
|
|
|
GtkStateData data;
|
|
|
|
|
|
|
|
data.state = state;
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
data.state_restoration = FALSE;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
data.use_forall = FALSE;
|
1998-01-20 23:58:42 +00:00
|
|
|
if (widget->parent)
|
1998-03-26 21:57:45 +00:00
|
|
|
data.parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (widget->parent) != FALSE);
|
1998-01-20 23:58:42 +00:00
|
|
|
else
|
1998-03-26 21:57:45 +00:00
|
|
|
data.parent_sensitive = TRUE;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
gtk_widget_propagate_state (widget, &data);
|
1998-11-06 22:05:02 +00:00
|
|
|
|
|
|
|
if (GTK_WIDGET_DRAWABLE (widget))
|
|
|
|
gtk_widget_queue_clear (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_sensitive:
|
|
|
|
*
|
|
|
|
* arguments:
|
1998-01-20 23:58:42 +00:00
|
|
|
* widget
|
|
|
|
* boolean value for sensitivity
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_sensitive (GtkWidget *widget,
|
1998-01-20 23:58:42 +00:00
|
|
|
gint sensitive)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-01-20 23:58:42 +00:00
|
|
|
GtkStateData data;
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-03-26 21:57:45 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
sensitive = (sensitive != FALSE);
|
|
|
|
|
|
|
|
if (sensitive == (GTK_WIDGET_SENSITIVE (widget) != FALSE))
|
|
|
|
return;
|
1998-01-20 23:58:42 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (sensitive)
|
|
|
|
{
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_SENSITIVE);
|
1998-03-26 21:57:45 +00:00
|
|
|
data.state = GTK_WIDGET_SAVED_STATE (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_SENSITIVE);
|
1998-01-20 23:58:42 +00:00
|
|
|
data.state = GTK_WIDGET_STATE (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
data.state_restoration = TRUE;
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
data.use_forall = TRUE;
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
if (widget->parent)
|
1998-03-26 21:57:45 +00:00
|
|
|
data.parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (widget->parent) != FALSE);
|
1998-01-20 23:58:42 +00:00
|
|
|
else
|
1998-03-26 21:57:45 +00:00
|
|
|
data.parent_sensitive = TRUE;
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
gtk_widget_propagate_state (widget, &data);
|
1998-11-06 22:05:02 +00:00
|
|
|
if (GTK_WIDGET_DRAWABLE (widget))
|
|
|
|
gtk_widget_queue_clear (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_parent:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_parent (GtkWidget *widget,
|
|
|
|
GtkWidget *parent)
|
|
|
|
{
|
1998-01-20 23:58:42 +00:00
|
|
|
GtkStateData data;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
new function to perform the same actions as gtk_list_remove_items, but
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
1998-02-05 03:53:41 +00:00
|
|
|
g_return_if_fail (widget->parent == NULL);
|
|
|
|
g_return_if_fail (!GTK_WIDGET_TOPLEVEL (widget));
|
1998-01-30 23:47:09 +00:00
|
|
|
g_return_if_fail (parent != NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (parent));
|
1998-06-17 08:48:22 +00:00
|
|
|
g_return_if_fail (widget != parent);
|
1998-01-30 23:47:09 +00:00
|
|
|
|
1998-02-03 14:13:05 +00:00
|
|
|
/* keep this function in sync with gtk_menu_attach_to_widget()
|
|
|
|
*/
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_ref (widget);
|
1998-02-03 14:13:05 +00:00
|
|
|
gtk_object_sink (GTK_OBJECT (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->parent = parent;
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
if (GTK_WIDGET_STATE (parent) != GTK_STATE_NORMAL)
|
|
|
|
data.state = GTK_WIDGET_STATE (parent);
|
|
|
|
else
|
|
|
|
data.state = GTK_WIDGET_STATE (widget);
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
data.state_restoration = FALSE;
|
1998-03-26 21:57:45 +00:00
|
|
|
data.parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (parent) != FALSE);
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
data.use_forall = GTK_WIDGET_IS_SENSITIVE (parent) != GTK_WIDGET_IS_SENSITIVE (widget);
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
gtk_widget_propagate_state (widget, &data);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-01 23:29:40 +00:00
|
|
|
gtk_widget_set_style_recurse (widget, NULL);
|
1998-02-18 04:09:13 +00:00
|
|
|
|
1998-02-22 02:18:29 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[PARENT_SET], NULL);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
/*****************************************
|
|
|
|
* Widget styles
|
|
|
|
* see docs/styles.txt
|
|
|
|
*****************************************/
|
|
|
|
void
|
|
|
|
gtk_widget_set_style (GtkWidget *widget,
|
|
|
|
GtkStyle *style)
|
|
|
|
{
|
|
|
|
GtkStyle *default_style;
|
1998-02-27 22:09:20 +00:00
|
|
|
gboolean initial_emission;
|
1998-02-27 16:31:06 +00:00
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-02-27 16:31:06 +00:00
|
|
|
g_return_if_fail (style != NULL);
|
|
|
|
|
1998-02-27 22:09:20 +00:00
|
|
|
initial_emission = !GTK_WIDGET_RC_STYLE (widget) && !GTK_WIDGET_USER_STYLE (widget);
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_RC_STYLE);
|
|
|
|
GTK_PRIVATE_SET_FLAG (widget, GTK_USER_STYLE);
|
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
default_style = gtk_object_get_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id);
|
1998-02-27 16:31:06 +00:00
|
|
|
if (!default_style)
|
|
|
|
{
|
|
|
|
gtk_style_ref (widget->style);
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!saved_default_style_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
saved_default_style_key_id = g_quark_from_static_string (saved_default_style_key);
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id, widget->style);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
1998-02-27 22:09:20 +00:00
|
|
|
gtk_widget_set_style_internal (widget, style, initial_emission);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_ensure_style (GtkWidget *widget)
|
|
|
|
{
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
if (!GTK_WIDGET_USER_STYLE (widget) &&
|
|
|
|
!GTK_WIDGET_RC_STYLE (widget))
|
|
|
|
gtk_widget_set_rc_style (widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_rc_style (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GtkStyle *saved_style;
|
|
|
|
GtkStyle *new_style;
|
1998-02-27 22:09:20 +00:00
|
|
|
gboolean initial_emission;
|
1998-02-27 16:31:06 +00:00
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-02-27 16:31:06 +00:00
|
|
|
|
1998-02-27 22:09:20 +00:00
|
|
|
initial_emission = !GTK_WIDGET_RC_STYLE (widget) && !GTK_WIDGET_USER_STYLE (widget);
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_USER_STYLE);
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_RC_STYLE);
|
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
saved_style = gtk_object_get_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id);
|
1998-02-27 16:31:06 +00:00
|
|
|
new_style = gtk_rc_get_style (widget);
|
|
|
|
if (new_style)
|
|
|
|
{
|
|
|
|
if (!saved_style)
|
|
|
|
{
|
|
|
|
gtk_style_ref (widget->style);
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!saved_default_style_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
saved_default_style_key_id = g_quark_from_static_string (saved_default_style_key);
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id, widget->style);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
1998-02-27 22:09:20 +00:00
|
|
|
gtk_widget_set_style_internal (widget, new_style, initial_emission);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (saved_style)
|
|
|
|
{
|
1998-02-27 22:09:20 +00:00
|
|
|
g_assert (initial_emission == FALSE); /* FIXME: remove this line */
|
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_remove_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id);
|
1998-02-27 22:09:20 +00:00
|
|
|
gtk_widget_set_style_internal (widget, saved_style, initial_emission);
|
1998-02-27 16:31:06 +00:00
|
|
|
gtk_style_unref (saved_style);
|
|
|
|
}
|
1998-02-27 22:09:20 +00:00
|
|
|
else
|
|
|
|
{
|
1998-03-01 23:29:40 +00:00
|
|
|
if (initial_emission)
|
|
|
|
gtk_widget_set_style_internal (widget, widget->style, TRUE);
|
1998-02-27 22:09:20 +00:00
|
|
|
}
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-03-01 17:44:24 +00:00
|
|
|
void
|
|
|
|
gtk_widget_restore_default_style (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GtkStyle *default_style;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-03-01 17:44:24 +00:00
|
|
|
|
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_USER_STYLE);
|
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
default_style = gtk_object_get_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id);
|
1998-03-01 17:44:24 +00:00
|
|
|
if (default_style)
|
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_remove_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id);
|
1998-03-01 17:44:24 +00:00
|
|
|
gtk_widget_set_style_internal (widget, default_style, FALSE);
|
|
|
|
gtk_style_unref (default_style);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
GtkStyle*
|
|
|
|
gtk_widget_get_style (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-10-25 10:00:19 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1998-02-27 16:31:06 +00:00
|
|
|
|
|
|
|
return widget->style;
|
|
|
|
}
|
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
void
|
|
|
|
gtk_widget_modify_style (GtkWidget *widget,
|
|
|
|
GtkRcStyle *style)
|
|
|
|
{
|
|
|
|
GtkRcStyle *old_style;
|
|
|
|
|
|
|
|
if (!rc_style_key_id)
|
|
|
|
rc_style_key_id = g_quark_from_static_string (rc_style_key);
|
|
|
|
|
|
|
|
old_style = gtk_object_get_data_by_id (GTK_OBJECT (widget), rc_style_key_id);
|
|
|
|
|
|
|
|
if (style != old_style)
|
|
|
|
gtk_object_set_data_by_id_full (GTK_OBJECT (widget),
|
|
|
|
rc_style_key_id,
|
|
|
|
style,
|
|
|
|
(GtkDestroyNotify)gtk_rc_style_unref);
|
|
|
|
}
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
static void
|
|
|
|
gtk_widget_style_set (GtkWidget *widget,
|
|
|
|
GtkStyle *previous_style)
|
|
|
|
{
|
|
|
|
if (GTK_WIDGET_REALIZED (widget) &&
|
|
|
|
!GTK_WIDGET_NO_WINDOW (widget))
|
1998-05-01 16:15:39 +00:00
|
|
|
{
|
|
|
|
gtk_style_set_background (widget->style, widget->window, widget->state);
|
|
|
|
if (GTK_WIDGET_DRAWABLE (widget))
|
|
|
|
gdk_window_clear (widget->window);
|
|
|
|
}
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_set_style_internal (GtkWidget *widget,
|
1998-02-27 22:09:20 +00:00
|
|
|
GtkStyle *style,
|
|
|
|
gboolean initial_emission)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-06 22:05:02 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-02-27 16:31:06 +00:00
|
|
|
g_return_if_fail (style != NULL);
|
|
|
|
|
|
|
|
if (widget->style != style)
|
|
|
|
{
|
|
|
|
GtkStyle *previous_style;
|
|
|
|
|
1998-11-06 22:05:02 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
1998-11-28 07:42:37 +00:00
|
|
|
{
|
|
|
|
gtk_widget_reset_shapes (widget);
|
|
|
|
gtk_style_detach (widget->style);
|
|
|
|
}
|
1998-02-27 16:31:06 +00:00
|
|
|
|
|
|
|
previous_style = widget->style;
|
|
|
|
widget->style = style;
|
|
|
|
gtk_style_ref (widget->style);
|
|
|
|
|
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
|
|
|
widget->style = gtk_style_attach (widget->style, widget->window);
|
|
|
|
|
1998-02-27 22:09:20 +00:00
|
|
|
gtk_signal_emit (GTK_OBJECT (widget),
|
|
|
|
widget_signals[STYLE_SET],
|
|
|
|
initial_emission ? NULL : previous_style);
|
1998-02-27 16:31:06 +00:00
|
|
|
gtk_style_unref (previous_style);
|
|
|
|
|
1998-03-05 06:32:42 +00:00
|
|
|
if (widget->parent && !initial_emission)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
|
|
|
GtkRequisition old_requisition;
|
|
|
|
|
|
|
|
old_requisition = widget->requisition;
|
|
|
|
gtk_widget_size_request (widget, &widget->requisition);
|
|
|
|
|
|
|
|
if ((old_requisition.width != widget->requisition.width) ||
|
|
|
|
(old_requisition.height != widget->requisition.height))
|
|
|
|
gtk_widget_queue_resize (widget);
|
|
|
|
else if (GTK_WIDGET_DRAWABLE (widget))
|
1998-11-06 22:05:02 +00:00
|
|
|
gtk_widget_queue_clear (widget);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
}
|
1998-02-27 22:09:20 +00:00
|
|
|
else if (initial_emission)
|
|
|
|
{
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget),
|
|
|
|
widget_signals[STYLE_SET],
|
|
|
|
NULL);
|
|
|
|
}
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_set_style_recurse (GtkWidget *widget,
|
|
|
|
gpointer client_data)
|
|
|
|
{
|
1998-03-01 23:29:40 +00:00
|
|
|
if (GTK_WIDGET_RC_STYLE (widget))
|
1998-02-27 16:31:06 +00:00
|
|
|
gtk_widget_set_rc_style (widget);
|
|
|
|
|
|
|
|
if (GTK_IS_CONTAINER (widget))
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
gtk_container_forall (GTK_CONTAINER (widget),
|
|
|
|
gtk_widget_set_style_recurse,
|
|
|
|
NULL);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
1998-05-01 16:15:39 +00:00
|
|
|
void
|
|
|
|
gtk_widget_reset_rc_styles (GtkWidget *widget)
|
|
|
|
{
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
1998-05-01 16:15:39 +00:00
|
|
|
gtk_widget_set_style_recurse (widget, NULL);
|
|
|
|
}
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
void
|
|
|
|
gtk_widget_set_default_style (GtkStyle *style)
|
|
|
|
{
|
1998-11-04 03:32:22 +00:00
|
|
|
if (style != gtk_default_style)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
1998-08-17 14:48:51 +00:00
|
|
|
if (gtk_default_style)
|
|
|
|
gtk_style_unref (gtk_default_style);
|
|
|
|
gtk_default_style = style;
|
|
|
|
if (gtk_default_style)
|
|
|
|
gtk_style_ref (gtk_default_style);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
GtkStyle*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_get_default_style (void)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
1998-08-17 14:48:51 +00:00
|
|
|
if (!gtk_default_style)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
1998-08-17 14:48:51 +00:00
|
|
|
gtk_default_style = gtk_style_new ();
|
|
|
|
gtk_style_ref (gtk_default_style);
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
1998-08-17 14:48:51 +00:00
|
|
|
return gtk_default_style;
|
1998-02-27 16:31:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_push_style (GtkStyle *style)
|
|
|
|
{
|
|
|
|
g_return_if_fail (style != NULL);
|
|
|
|
|
|
|
|
gtk_style_ref (style);
|
|
|
|
style_stack = g_slist_prepend (style_stack, style);
|
|
|
|
}
|
|
|
|
|
|
|
|
static GtkStyle*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_peek_style (void)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
|
|
|
if (style_stack)
|
|
|
|
return (GtkStyle*) style_stack->data;
|
|
|
|
else
|
|
|
|
return gtk_widget_get_default_style ();
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_pop_style (void)
|
1998-02-27 16:31:06 +00:00
|
|
|
{
|
|
|
|
GSList *tmp;
|
|
|
|
|
|
|
|
if (style_stack)
|
|
|
|
{
|
|
|
|
tmp = style_stack;
|
|
|
|
style_stack = style_stack->next;
|
|
|
|
gtk_style_unref ((GtkStyle*) tmp->data);
|
|
|
|
g_slist_free_1 (tmp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-01-18 15:09:10 +00:00
|
|
|
/*************************************************************
|
|
|
|
* gtk_widget_set_parent_window:
|
|
|
|
* Set a non default parent window for widget
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
* widget:
|
|
|
|
* parent_window
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*************************************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_parent_window (GtkWidget *widget,
|
|
|
|
GdkWindow *parent_window)
|
|
|
|
{
|
|
|
|
GdkWindow *old_parent_window;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-01-18 15:09:10 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
old_parent_window = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
parent_window_key_id);
|
1998-01-18 15:09:10 +00:00
|
|
|
|
|
|
|
if (parent_window != old_parent_window)
|
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!parent_window_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
parent_window_key_id = g_quark_from_static_string (parent_window_key);
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), parent_window_key_id,
|
|
|
|
parent_window);
|
1998-01-18 15:09:10 +00:00
|
|
|
if (old_parent_window)
|
|
|
|
gdk_window_unref (old_parent_window);
|
|
|
|
if (parent_window)
|
|
|
|
gdk_window_ref (parent_window);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************
|
|
|
|
* gtk_widget_get_parent_window:
|
|
|
|
* Get widget's parent window
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
* widget:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
* parent window
|
|
|
|
*************************************************************/
|
|
|
|
|
|
|
|
GdkWindow *
|
|
|
|
gtk_widget_get_parent_window (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GdkWindow *parent_window;
|
|
|
|
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-02-22 12:16:01 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
|
|
|
g_return_val_if_fail (widget->parent != NULL, NULL);
|
1998-01-18 15:09:10 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
parent_window = gtk_object_get_data_by_id (GTK_OBJECT (widget),
|
|
|
|
parent_window_key_id);
|
1998-01-18 15:09:10 +00:00
|
|
|
|
|
|
|
return (parent_window != NULL) ? parent_window : widget->parent->window;
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_uposition:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_uposition (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint x,
|
|
|
|
gint y)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!aux_info)
|
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!aux_info_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
aux_info_key_id = g_quark_from_static_string (aux_info_key);
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info = gtk_widget_aux_info_new ();
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), aux_info_key_id, aux_info);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (x > -2)
|
|
|
|
aux_info->x = x;
|
|
|
|
if (y > -2)
|
|
|
|
aux_info->y = y;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget) && GTK_IS_WINDOW (widget) &&
|
|
|
|
(aux_info->x != -1) && (aux_info->y != -1))
|
|
|
|
{
|
|
|
|
gdk_window_set_hints (widget->window, aux_info->x, aux_info->y, 0, 0, 0, 0, GDK_HINT_POS);
|
|
|
|
gdk_window_move (widget->window, aux_info->x, aux_info->y);
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_VISIBLE (widget) && widget->parent)
|
|
|
|
gtk_widget_size_allocate (widget, &widget->allocation);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_usize:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_usize (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint width,
|
|
|
|
gint height)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!aux_info)
|
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!aux_info_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
aux_info_key_id = g_quark_from_static_string (aux_info_key);
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info = gtk_widget_aux_info_new ();
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), aux_info_key_id, aux_info);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-07-16 02:47:15 +00:00
|
|
|
if (width > -2)
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info->width = width;
|
1998-07-16 02:47:15 +00:00
|
|
|
if (height > -2)
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info->height = height;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_VISIBLE (widget))
|
|
|
|
gtk_widget_queue_resize (widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_events:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_events (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint events)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
gint *eventp;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (!GTK_WIDGET_NO_WINDOW (widget));
|
|
|
|
g_return_if_fail (!GTK_WIDGET_REALIZED (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
eventp = gtk_object_get_data_by_id (GTK_OBJECT (widget), event_key_id);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (events)
|
|
|
|
{
|
|
|
|
if (!eventp)
|
|
|
|
eventp = g_new (gint, 1);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
*eventp = events;
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!event_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
event_key_id = g_quark_from_static_string (event_key);
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), event_key_id, eventp);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-03-14 04:43:14 +00:00
|
|
|
else if (eventp)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
g_free (eventp);
|
|
|
|
gtk_object_remove_data_by_id (GTK_OBJECT (widget), event_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_add_events:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_add_events (GtkWidget *widget,
|
|
|
|
gint events)
|
|
|
|
{
|
|
|
|
gint *eventp;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
Added a modular client-message-filter mechanism, that is used for the DND
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.
1998-10-18 22:51:24 +00:00
|
|
|
g_return_if_fail (!GTK_WIDGET_NO_WINDOW (widget));
|
|
|
|
|
|
|
|
eventp = gtk_object_get_data_by_id (GTK_OBJECT (widget), event_key_id);
|
|
|
|
|
|
|
|
if (events)
|
|
|
|
{
|
|
|
|
if (!eventp)
|
|
|
|
{
|
|
|
|
eventp = g_new (gint, 1);
|
|
|
|
*eventp = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
*eventp |= events;
|
|
|
|
if (!event_key_id)
|
|
|
|
event_key_id = g_quark_from_static_string (event_key);
|
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), event_key_id, eventp);
|
|
|
|
}
|
|
|
|
else if (eventp)
|
|
|
|
{
|
|
|
|
g_free (eventp);
|
|
|
|
gtk_object_remove_data_by_id (GTK_OBJECT (widget), event_key_id);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
|
|
|
{
|
|
|
|
gdk_window_set_events (widget->window,
|
|
|
|
gdk_window_get_events (widget->window) | events);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_extension_events:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_extension_events (GtkWidget *widget,
|
|
|
|
GdkExtensionMode mode)
|
|
|
|
{
|
|
|
|
GdkExtensionMode *modep;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
modep = gtk_object_get_data_by_id (GTK_OBJECT (widget), extension_event_key_id);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!modep)
|
|
|
|
modep = g_new (GdkExtensionMode, 1);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
*modep = mode;
|
1998-03-14 04:43:14 +00:00
|
|
|
if (!extension_event_key_id)
|
1998-06-19 02:07:47 +00:00
|
|
|
extension_event_key_id = g_quark_from_static_string (extension_event_key);
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_object_set_data_by_id (GTK_OBJECT (widget), extension_event_key_id, modep);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_toplevel:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GtkWidget*
|
|
|
|
gtk_widget_get_toplevel (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
while (widget->parent)
|
|
|
|
widget = widget->parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return widget;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_ancestor:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GtkWidget*
|
|
|
|
gtk_widget_get_ancestor (GtkWidget *widget,
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkType widget_type)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
while (widget && !gtk_type_is_a (GTK_WIDGET_TYPE (widget), widget_type))
|
1997-11-24 22:37:52 +00:00
|
|
|
widget = widget->parent;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-05-08 23:20:48 +00:00
|
|
|
if (!(widget && gtk_type_is_a (GTK_WIDGET_TYPE (widget), widget_type)))
|
1997-11-24 22:37:52 +00:00
|
|
|
return NULL;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return widget;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GdkColormap*
|
|
|
|
gtk_widget_get_colormap (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GdkColormap *colormap;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-08-25 00:06:38 +00:00
|
|
|
if (widget->window)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-08-25 00:06:38 +00:00
|
|
|
colormap = gdk_window_get_colormap (widget->window);
|
|
|
|
/* If window was destroyed previously, we'll get NULL here */
|
1997-11-24 22:37:52 +00:00
|
|
|
if (colormap)
|
|
|
|
return colormap;
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-08-25 00:06:38 +00:00
|
|
|
colormap = gtk_object_get_data (GTK_OBJECT (widget), colormap_key);
|
|
|
|
if (colormap)
|
|
|
|
return colormap;
|
|
|
|
|
|
|
|
return gtk_widget_get_default_colormap ();
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GdkVisual*
|
|
|
|
gtk_widget_get_visual (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GdkVisual *visual;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-08-25 00:06:38 +00:00
|
|
|
if (widget->window)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-08-25 00:06:38 +00:00
|
|
|
visual = gdk_window_get_visual (widget->window);
|
|
|
|
/* If window was destroyed previously, we'll get NULL here */
|
1997-11-24 22:37:52 +00:00
|
|
|
if (visual)
|
|
|
|
return visual;
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-08-25 00:06:38 +00:00
|
|
|
visual = gtk_object_get_data (GTK_OBJECT (widget), visual_key);
|
|
|
|
if (visual)
|
|
|
|
return visual;
|
|
|
|
|
|
|
|
return gtk_widget_get_default_visual ();
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_events:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
gint
|
|
|
|
gtk_widget_get_events (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
gint *events;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, 0);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
events = gtk_object_get_data_by_id (GTK_OBJECT (widget), event_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (events)
|
|
|
|
return *events;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_extension_events:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GdkExtensionMode
|
|
|
|
gtk_widget_get_extension_events (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
GdkExtensionMode *mode;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (widget != NULL, 0);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
mode = gtk_object_get_data_by_id (GTK_OBJECT (widget), extension_event_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (mode)
|
|
|
|
return *mode;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_pointer:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_get_pointer (GtkWidget *widget,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint *x,
|
|
|
|
gint *y)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (x)
|
|
|
|
*x = -1;
|
|
|
|
if (y)
|
|
|
|
*y = -1;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
|
|
|
{
|
|
|
|
gdk_window_get_pointer (widget->window, x, y, NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
if (x)
|
|
|
|
*x -= widget->allocation.x;
|
|
|
|
if (y)
|
|
|
|
*y -= widget->allocation.y;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_is_ancestor:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
gint
|
|
|
|
gtk_widget_is_ancestor (GtkWidget *widget,
|
|
|
|
GtkWidget *ancestor)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, FALSE);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_val_if_fail (ancestor != NULL, FALSE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
while (widget)
|
|
|
|
{
|
|
|
|
if (widget->parent == ancestor)
|
|
|
|
return TRUE;
|
|
|
|
widget = widget->parent;
|
|
|
|
}
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
1998-11-29 06:29:40 +00:00
|
|
|
static GQuark quark_composite_name = 0;
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_composite_name (GtkWidget *widget,
|
|
|
|
gchar *name)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (GTK_WIDGET_COMPOSITE_CHILD (widget));
|
|
|
|
g_return_if_fail (name != NULL);
|
|
|
|
|
|
|
|
if (!quark_composite_name)
|
|
|
|
quark_composite_name = g_quark_from_static_string ("gtk-composite-name");
|
|
|
|
|
|
|
|
gtk_object_set_data_by_id_full (GTK_OBJECT (widget),
|
|
|
|
quark_composite_name,
|
|
|
|
g_strdup (name),
|
|
|
|
g_free);
|
|
|
|
}
|
|
|
|
|
|
|
|
gchar*
|
|
|
|
gtk_widget_get_composite_name (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (widget != NULL, NULL);
|
|
|
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
|
|
|
|
|
|
|
if (GTK_WIDGET_COMPOSITE_CHILD (widget) && widget->parent)
|
|
|
|
return gtk_container_child_composite_name (GTK_CONTAINER (widget->parent),
|
|
|
|
widget);
|
|
|
|
else
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_push_composite_child (void)
|
|
|
|
{
|
|
|
|
composite_child_stack++;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_pop_composite_child (void)
|
|
|
|
{
|
|
|
|
if (composite_child_stack)
|
|
|
|
composite_child_stack--;
|
|
|
|
}
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_push_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_push_colormap (GdkColormap *cmap)
|
|
|
|
{
|
1998-02-26 01:48:28 +00:00
|
|
|
g_return_if_fail (cmap != NULL);
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
colormap_stack = g_slist_prepend (colormap_stack, cmap);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_push_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_push_visual (GdkVisual *visual)
|
|
|
|
{
|
1998-02-26 01:48:28 +00:00
|
|
|
g_return_if_fail (visual != NULL);
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
visual_stack = g_slist_prepend (visual_stack, visual);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_pop_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_pop_colormap (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GSList *tmp;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (colormap_stack)
|
|
|
|
{
|
|
|
|
tmp = colormap_stack;
|
|
|
|
colormap_stack = colormap_stack->next;
|
|
|
|
g_slist_free_1 (tmp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_pop_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_pop_visual (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GSList *tmp;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (visual_stack)
|
|
|
|
{
|
|
|
|
tmp = visual_stack;
|
|
|
|
visual_stack = visual_stack->next;
|
|
|
|
g_slist_free_1 (tmp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_default_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_default_colormap (GdkColormap *colormap)
|
|
|
|
{
|
1997-12-18 02:17:14 +00:00
|
|
|
if (default_colormap != colormap)
|
|
|
|
{
|
|
|
|
if (default_colormap)
|
|
|
|
gdk_colormap_unref (default_colormap);
|
|
|
|
default_colormap = colormap;
|
|
|
|
if (default_colormap)
|
|
|
|
gdk_colormap_ref (default_colormap);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_set_default_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_set_default_visual (GdkVisual *visual)
|
|
|
|
{
|
|
|
|
default_visual = visual;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_default_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GdkColormap*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_get_default_colormap (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
if (!default_colormap)
|
|
|
|
default_colormap = gdk_colormap_get_system ();
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return default_colormap;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_get_default_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
GdkVisual*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_get_default_visual (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
if (!default_visual)
|
|
|
|
default_visual = gdk_visual_get_system ();
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return default_visual;
|
|
|
|
}
|
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
static void
|
|
|
|
gtk_widget_shutdown (GtkObject *object)
|
|
|
|
{
|
|
|
|
GtkWidget *widget;
|
|
|
|
|
|
|
|
/* gtk_object_destroy() will already hold a refcount on object
|
|
|
|
*/
|
|
|
|
widget = GTK_WIDGET (object);
|
|
|
|
|
|
|
|
if (widget->parent)
|
|
|
|
gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
|
|
|
|
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_VISIBLE);
|
|
|
|
if (GTK_WIDGET_REALIZED (widget))
|
|
|
|
gtk_widget_unrealize (widget);
|
|
|
|
|
|
|
|
parent_class->shutdown (object);
|
|
|
|
}
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
static void
|
|
|
|
gtk_widget_real_destroy (GtkObject *object)
|
|
|
|
{
|
1998-03-14 04:43:14 +00:00
|
|
|
GtkWidget *widget;
|
1998-02-28 19:09:20 +00:00
|
|
|
GtkStyle *saved_style;
|
1998-01-30 23:47:09 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
/* gtk_object_destroy() will already hold a refcount on object
|
|
|
|
*/
|
|
|
|
widget = GTK_WIDGET (object);
|
1998-01-30 23:47:09 +00:00
|
|
|
|
|
|
|
gtk_grab_remove (widget);
|
|
|
|
gtk_selection_remove_all (widget);
|
1998-04-24 00:26:01 +00:00
|
|
|
|
|
|
|
saved_style = gtk_object_get_data_by_id (object, saved_default_style_key_id);
|
1998-02-28 19:09:20 +00:00
|
|
|
if (saved_style)
|
|
|
|
{
|
|
|
|
gtk_style_unref (saved_style);
|
1998-04-24 00:26:01 +00:00
|
|
|
gtk_object_remove_data_by_id (object, saved_default_style_key_id);
|
1998-02-28 19:09:20 +00:00
|
|
|
}
|
|
|
|
|
1998-02-26 01:48:28 +00:00
|
|
|
gtk_style_unref (widget->style);
|
|
|
|
widget->style = NULL;
|
|
|
|
|
|
|
|
parent_class->destroy (object);
|
1998-01-30 23:47:09 +00:00
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static void
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_widget_finalize (GtkObject *object)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidget *widget;
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
|
|
|
gint *events;
|
|
|
|
GdkExtensionMode *mode;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
widget = GTK_WIDGET (object);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->name)
|
1998-03-14 04:43:14 +00:00
|
|
|
g_free (widget->name);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), aux_info_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (aux_info)
|
1998-03-14 04:43:14 +00:00
|
|
|
gtk_widget_aux_info_destroy (aux_info);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
events = gtk_object_get_data_by_id (GTK_OBJECT (widget), event_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (events)
|
1998-03-14 04:43:14 +00:00
|
|
|
g_free (events);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-14 04:43:14 +00:00
|
|
|
mode = gtk_object_get_data_by_id (GTK_OBJECT (widget), extension_event_key_id);
|
1997-11-24 22:37:52 +00:00
|
|
|
if (mode)
|
1998-03-14 04:43:14 +00:00
|
|
|
g_free (mode);
|
1998-01-30 23:47:09 +00:00
|
|
|
|
|
|
|
parent_class->finalize (object);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_show:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_show (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_VISIBLE (widget))
|
|
|
|
{
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->parent)
|
|
|
|
{
|
1998-03-21 22:11:26 +00:00
|
|
|
gtk_widget_queue_resize (widget->parent);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_MAPPED (widget->parent))
|
|
|
|
gtk_widget_map (widget);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_hide:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_hide (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_VISIBLE (widget))
|
|
|
|
{
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_VISIBLE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_MAPPED (widget))
|
|
|
|
gtk_widget_unmap (widget);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (widget->parent)
|
1998-06-24 06:25:14 +00:00
|
|
|
gtk_widget_queue_resize (widget->parent);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_map:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_map (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_MAPPED (widget))
|
|
|
|
{
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
gdk_window_show (widget->window);
|
|
|
|
else
|
|
|
|
gtk_widget_queue_draw (widget);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_unmap:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_unmap (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_MAPPED (widget))
|
|
|
|
{
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget))
|
1998-11-06 22:05:02 +00:00
|
|
|
gtk_widget_queue_clear (widget);
|
1997-11-24 22:37:52 +00:00
|
|
|
else
|
|
|
|
gdk_window_hide (widget->window);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_realize:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_realize (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-05-22 23:48:02 +00:00
|
|
|
g_return_if_fail (GTK_WIDGET_NO_WINDOW (widget));
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
|
1998-01-30 23:47:09 +00:00
|
|
|
if (widget->parent)
|
|
|
|
{
|
|
|
|
widget->window = gtk_widget_get_parent_window (widget);
|
|
|
|
gdk_window_ref (widget->window);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->style = gtk_style_attach (widget->style, widget->window);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_unrealize:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_unrealize (GtkWidget *widget)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-28 06:47:01 +00:00
|
|
|
|
1998-02-02 05:35:59 +00:00
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget) && GTK_WIDGET_MAPPED (widget))
|
|
|
|
gtk_widget_real_unmap (widget);
|
|
|
|
|
1997-12-18 02:17:14 +00:00
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_REALIZED | GTK_MAPPED);
|
1997-11-28 06:47:01 +00:00
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
/* printf ("unrealizing %s\n", gtk_type_name (GTK_OBJECT(widget)->klass->type));
|
|
|
|
*/
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_style_detach (widget->style);
|
|
|
|
if (!GTK_WIDGET_NO_WINDOW (widget))
|
|
|
|
{
|
|
|
|
gdk_window_set_user_data (widget->window, NULL);
|
|
|
|
gdk_window_destroy (widget->window);
|
1998-06-24 06:25:14 +00:00
|
|
|
widget->window = NULL;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
else
|
1998-02-02 05:35:59 +00:00
|
|
|
{
|
|
|
|
gdk_window_unref (widget->window);
|
1998-06-24 06:25:14 +00:00
|
|
|
widget->window = NULL;
|
1998-02-02 05:35:59 +00:00
|
|
|
}
|
1998-02-10 04:17:10 +00:00
|
|
|
|
|
|
|
/* Unrealize afterwards to improve visual effect */
|
|
|
|
|
|
|
|
if (GTK_IS_CONTAINER (widget))
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
gtk_container_forall (GTK_CONTAINER (widget),
|
|
|
|
(GtkCallback) gtk_widget_unrealize,
|
|
|
|
NULL);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
1998-01-30 23:47:09 +00:00
|
|
|
* gtk_widget_real_draw:
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_draw (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
GdkRectangle *area)
|
|
|
|
{
|
|
|
|
GdkEventExpose event;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (area != NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_DRAWABLE (widget))
|
|
|
|
{
|
|
|
|
event.type = GDK_EXPOSE;
|
1998-03-17 18:29:07 +00:00
|
|
|
event.send_event = TRUE;
|
1997-11-24 22:37:52 +00:00
|
|
|
event.window = widget->window;
|
|
|
|
event.area = *area;
|
1998-03-17 18:29:07 +00:00
|
|
|
event.count = 0;
|
|
|
|
|
1998-01-30 23:47:09 +00:00
|
|
|
gdk_window_ref (event.window);
|
1997-11-24 22:37:52 +00:00
|
|
|
gtk_widget_event (widget, (GdkEvent*) &event);
|
1998-01-30 23:47:09 +00:00
|
|
|
gdk_window_unref (event.window);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-07-17 00:03:35 +00:00
|
|
|
static void
|
|
|
|
gtk_widget_real_size_request (GtkWidget *widget,
|
|
|
|
GtkRequisition *requisition)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
requisition->width = widget->requisition.width;
|
|
|
|
requisition->height = widget->requisition.height;
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
static void
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_real_size_allocate (GtkWidget *widget,
|
1997-11-24 22:37:52 +00:00
|
|
|
GtkAllocation *allocation)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-11-06 22:05:02 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_NO_WINDOW (widget) &&
|
|
|
|
GTK_WIDGET_MAPPED (widget) &&
|
|
|
|
((widget->allocation.x != allocation->x) ||
|
|
|
|
(widget->allocation.y != allocation->y) ||
|
|
|
|
(widget->allocation.width != allocation->width) ||
|
|
|
|
(widget->allocation.height != allocation->height)) &&
|
|
|
|
(widget->allocation.width != 0) &&
|
|
|
|
(widget->allocation.height != 0))
|
1998-11-06 22:05:02 +00:00
|
|
|
gtk_widget_queue_clear (widget);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
widget->allocation = *allocation;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (GTK_WIDGET_REALIZED (widget) &&
|
|
|
|
!GTK_WIDGET_NO_WINDOW (widget))
|
1998-11-06 22:05:02 +00:00
|
|
|
{
|
|
|
|
gdk_window_move_resize (widget->window,
|
|
|
|
allocation->x, allocation->y,
|
|
|
|
allocation->width, allocation->height);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_peek_colormap:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static GdkColormap*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_peek_colormap (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
if (colormap_stack)
|
|
|
|
return (GdkColormap*) colormap_stack->data;
|
|
|
|
return gtk_widget_get_default_colormap ();
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_peek_visual:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static GdkVisual*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_peek_visual (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
if (visual_stack)
|
|
|
|
return (GdkVisual*) visual_stack->data;
|
|
|
|
return gtk_widget_get_default_visual ();
|
|
|
|
}
|
|
|
|
|
1998-02-27 16:31:06 +00:00
|
|
|
static void
|
1998-01-20 23:58:42 +00:00
|
|
|
gtk_widget_propagate_state (GtkWidget *widget,
|
|
|
|
GtkStateData *data)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-01-20 23:58:42 +00:00
|
|
|
guint8 old_state;
|
|
|
|
|
1998-03-26 21:57:45 +00:00
|
|
|
/* don't call this function with state==GTK_STATE_INSENSITIVE,
|
|
|
|
* parent_sensitive==TRUE on a sensitive widget
|
1998-01-20 23:58:42 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
old_state = GTK_WIDGET_STATE (widget);
|
|
|
|
|
|
|
|
if (data->parent_sensitive)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
1998-01-20 23:58:42 +00:00
|
|
|
|
|
|
|
if (GTK_WIDGET_IS_SENSITIVE (widget))
|
1998-03-26 21:57:45 +00:00
|
|
|
{
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
if (data->state_restoration)
|
1998-03-26 21:57:45 +00:00
|
|
|
GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
|
|
|
|
else
|
|
|
|
GTK_WIDGET_STATE (widget) = data->state;
|
|
|
|
}
|
1998-01-20 23:58:42 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
GTK_WIDGET_STATE (widget) = GTK_STATE_INSENSITIVE;
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
if (!data->state_restoration &&
|
1998-03-26 21:57:45 +00:00
|
|
|
data->state != GTK_STATE_INSENSITIVE)
|
1998-01-20 23:58:42 +00:00
|
|
|
GTK_WIDGET_SAVED_STATE (widget) = data->state;
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
Added gdk_text/string_extents() - too calculate all the metrics at once of
Tue Jul 21 12:42:01 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkfont.c: Added gdk_text/string_extents() -
too calculate all the metrics at once of a string, including
things which weren't calculated before.
* gtk/Makefile.am gtk/gtk.h gtk/gtktearoffmenu.[ch]: New
MenuItem type, that when put as the first thing in a
menu, makes the menu tearoff. Currently drawn as a
dashed line.
* gtk/gtkmenuitem.h gtk/gtkcheckmenuitem.c: Added a flag
"hide_on_activate" to the MenuItem class structure to allow
check and radio buttons to be changed with <Space> without
hiding the menu.
* gtk/gtkaccellabel.[ch]: Added new capabilities to set
a underline_group and underline_mods for the label -
accelerators added in the underline group matching
underline_mods will be displayed as an underline character.
This doesn't work - Save As needs to be underlined
as Save _As.
* gtk/gtkitemfactory.c:
- Create a AccelGroup for each MenuShell we create.
- If an '&' appears before a character 'c' in the path,
then make 'c' an accelerator in the menu's accel group,
and if the menuitem is menubar <alt>C an accelerator
in the itemfactory's accel group.
* gtk/gtklabel.[ch]: Add support for a pattern arg -
which is a string. If an '_' appears in this string,
the corresponding position in the label is underlined.
Add gtk_label_parse_uline() convenience function which
takes a string with embedded underlines, sets the
pattern and label, and returns the accelerator keyval.
* gtk/gtkmenu.[ch]: Make menus no longer a toplevel widget.
Instead, they create a GtkWindow and add themselves
to that. (When torn off, another new feature, they
create another GtkWindow to hold the torn off menu)
New function gtk_menu_set_tearoff_state()
* gtk/gtkenums.h gtk/gtkmenushell.[ch] gtk/gtkenums.h:
Added action signals for keyboard navigation of menus.
* gtk/gtkmenushell.c: Key press handler which activates
bindings for navigation, and accelerators, for handling
underline accelerators. Exported functions to select
and activate menu items in a menushell.
* gtk/testgtk.c: Added a new "Item Factory" test which
tests GtkItemFactory and the new keyboard navigation
of menus.
1998-08-12 16:49:13 +00:00
|
|
|
if (!data->state_restoration)
|
1998-03-26 21:57:45 +00:00
|
|
|
{
|
|
|
|
if (data->state != GTK_STATE_INSENSITIVE)
|
|
|
|
GTK_WIDGET_SAVED_STATE (widget) = data->state;
|
|
|
|
}
|
|
|
|
else if (GTK_WIDGET_STATE (widget) != GTK_STATE_INSENSITIVE)
|
|
|
|
GTK_WIDGET_SAVED_STATE (widget) = GTK_WIDGET_STATE (widget);
|
1998-01-20 23:58:42 +00:00
|
|
|
GTK_WIDGET_STATE (widget) = GTK_STATE_INSENSITIVE;
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
if (GTK_WIDGET_HAS_FOCUS (widget) && !GTK_WIDGET_IS_SENSITIVE (widget))
|
|
|
|
{
|
|
|
|
GtkWidget *window;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
window = gtk_widget_get_ancestor (widget, gtk_window_get_type ());
|
|
|
|
if (window)
|
|
|
|
gtk_window_set_focus (GTK_WINDOW (window), NULL);
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
if (old_state != GTK_WIDGET_STATE (widget))
|
|
|
|
{
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_ref (widget);
|
|
|
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[STATE_CHANGED], old_state);
|
|
|
|
|
1998-01-20 23:58:42 +00:00
|
|
|
if (GTK_IS_CONTAINER (widget))
|
|
|
|
{
|
1998-03-26 21:57:45 +00:00
|
|
|
data->parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (widget) != FALSE);
|
1998-01-20 23:58:42 +00:00
|
|
|
data->state = GTK_WIDGET_STATE (widget);
|
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
1998-09-03 02:38:53 +00:00
|
|
|
if (data->use_forall)
|
|
|
|
gtk_container_forall (GTK_CONTAINER (widget),
|
|
|
|
(GtkCallback) gtk_widget_propagate_state,
|
|
|
|
data);
|
|
|
|
else
|
|
|
|
gtk_container_foreach (GTK_CONTAINER (widget),
|
|
|
|
(GtkCallback) gtk_widget_propagate_state,
|
|
|
|
data);
|
1998-01-20 23:58:42 +00:00
|
|
|
}
|
1998-01-30 23:47:09 +00:00
|
|
|
gtk_widget_unref (widget);
|
1998-01-20 23:58:42 +00:00
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_aux_info_new:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static GtkWidgetAuxInfo*
|
1998-05-03 22:41:32 +00:00
|
|
|
gtk_widget_aux_info_new (void)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidgetAuxInfo *aux_info;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
if (!aux_info_mem_chunk)
|
|
|
|
aux_info_mem_chunk = g_mem_chunk_new ("widget aux info mem chunk",
|
|
|
|
sizeof (GtkWidgetAuxInfo),
|
|
|
|
1024, G_ALLOC_AND_FREE);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info = g_chunk_new (GtkWidgetAuxInfo, aux_info_mem_chunk);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
aux_info->x = -1;
|
|
|
|
aux_info->y = -1;
|
|
|
|
aux_info->width = 0;
|
|
|
|
aux_info->height = 0;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
return aux_info;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_aux_info_destroy:
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
|
|
|
|
static void
|
|
|
|
gtk_widget_aux_info_destroy (GtkWidgetAuxInfo *aux_info)
|
|
|
|
{
|
|
|
|
g_return_if_fail (aux_info != NULL);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_mem_chunk_free (aux_info_mem_chunk, aux_info);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
* gtk_widget_shape_combine_mask:
|
|
|
|
* set a shape for this widgets' gdk window, this allows for
|
|
|
|
* transparent windows etc., see gdk_window_shape_combine_mask
|
|
|
|
* for more information
|
|
|
|
*
|
|
|
|
* arguments:
|
|
|
|
*
|
|
|
|
* results:
|
|
|
|
*****************************************/
|
|
|
|
void
|
|
|
|
gtk_widget_shape_combine_mask (GtkWidget *widget,
|
|
|
|
GdkBitmap *shape_mask,
|
1997-11-28 01:22:38 +00:00
|
|
|
gint offset_x,
|
|
|
|
gint offset_y)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
|
|
|
GtkWidgetShapeInfo* shape_info;
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
1998-11-04 03:32:22 +00:00
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1997-11-24 22:37:52 +00:00
|
|
|
/* set_shape doesn't work on widgets without gdk window */
|
|
|
|
g_return_if_fail (!GTK_WIDGET_NO_WINDOW (widget));
|
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
|
|
|
|
|
|
|
if (!shape_mask)
|
1997-11-24 22:37:52 +00:00
|
|
|
{
|
1998-02-02 21:41:24 +00:00
|
|
|
GTK_PRIVATE_UNSET_FLAG (widget, GTK_HAS_SHAPE_MASK);
|
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
|
|
|
|
1998-02-17 06:03:40 +00:00
|
|
|
if (widget->window)
|
|
|
|
gdk_window_shape_combine_mask (widget->window, NULL, 0, 0);
|
|
|
|
|
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
|
|
|
shape_info = gtk_object_get_data (GTK_OBJECT (widget), shape_info_key);
|
|
|
|
gtk_object_remove_data (GTK_OBJECT (widget), shape_info_key);
|
|
|
|
g_free (shape_info);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
1998-02-02 21:41:24 +00:00
|
|
|
GTK_PRIVATE_SET_FLAG (widget, GTK_HAS_SHAPE_MASK);
|
1998-02-17 06:03:40 +00:00
|
|
|
|
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
|
|
|
shape_info = gtk_object_get_data (GTK_OBJECT (widget), shape_info_key);
|
|
|
|
if (!shape_info)
|
|
|
|
{
|
|
|
|
shape_info = g_new (GtkWidgetShapeInfo, 1);
|
|
|
|
gtk_object_set_data (GTK_OBJECT (widget), shape_info_key, shape_info);
|
|
|
|
}
|
|
|
|
shape_info->shape_mask = shape_mask;
|
|
|
|
shape_info->offset_x = offset_x;
|
|
|
|
shape_info->offset_y = offset_y;
|
|
|
|
|
|
|
|
/* set shape if widget has a gdk window allready.
|
|
|
|
* otherwise the shape is scheduled to be set by gtk_widget_realize.
|
|
|
|
*/
|
|
|
|
if (widget->window)
|
|
|
|
gdk_window_shape_combine_mask (widget->window, shape_mask,
|
|
|
|
offset_x, offset_y);
|
1997-11-24 22:37:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1998-11-28 07:42:37 +00:00
|
|
|
static void
|
|
|
|
gtk_reset_shapes_recurse (GtkWidget *widget,
|
|
|
|
GdkWindow *window)
|
|
|
|
{
|
|
|
|
GdkWindowPrivate *private;
|
|
|
|
gpointer data;
|
|
|
|
GList *list;
|
|
|
|
|
|
|
|
private = (GdkWindowPrivate*) window;
|
|
|
|
|
|
|
|
if (private->destroyed)
|
|
|
|
return;
|
|
|
|
gdk_window_get_user_data (window, &data);
|
|
|
|
if (data != widget)
|
|
|
|
return;
|
|
|
|
|
|
|
|
gdk_window_shape_combine_mask (window, NULL, 0, 0);
|
|
|
|
for (list = private->children; list; list = list->next)
|
|
|
|
gtk_reset_shapes_recurse (widget, list->data);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_reset_shapes (GtkWidget *widget)
|
|
|
|
{
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
g_return_if_fail (GTK_WIDGET_REALIZED (widget));
|
|
|
|
|
|
|
|
if (!GTK_WIDGET_HAS_SHAPE_MASK (widget))
|
|
|
|
gtk_reset_shapes_recurse (widget, widget->window);
|
|
|
|
}
|
|
|
|
|
1998-02-02 18:44:28 +00:00
|
|
|
void
|
|
|
|
gtk_widget_ref (GtkWidget *widget)
|
|
|
|
{
|
1998-03-30 20:03:36 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-03-15 21:14:28 +00:00
|
|
|
|
1998-03-30 20:03:36 +00:00
|
|
|
gtk_object_ref ((GtkObject*) widget);
|
1998-02-02 18:44:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_unref (GtkWidget *widget)
|
|
|
|
{
|
1998-03-30 20:03:36 +00:00
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
1998-03-15 21:14:28 +00:00
|
|
|
|
1998-03-30 20:03:36 +00:00
|
|
|
gtk_object_unref ((GtkObject*) widget);
|
1998-02-02 18:44:28 +00:00
|
|
|
}
|
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
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_path (GtkWidget *widget,
|
|
|
|
guint *path_length_p,
|
|
|
|
gchar **path_p,
|
|
|
|
gchar **path_reversed_p)
|
|
|
|
{
|
|
|
|
static gchar *rev_path = NULL;
|
|
|
|
static guint path_len = 0;
|
|
|
|
guint len;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
len = 0;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
gchar *string;
|
|
|
|
gchar *d, *s;
|
|
|
|
guint l;
|
|
|
|
|
|
|
|
string = gtk_widget_get_name (widget);
|
|
|
|
l = strlen (string);
|
|
|
|
while (path_len <= len + l + 1)
|
|
|
|
{
|
|
|
|
path_len += INIT_PATH_SIZE;
|
|
|
|
rev_path = g_realloc (rev_path, path_len);
|
|
|
|
}
|
|
|
|
s = string + l - 1;
|
|
|
|
d = rev_path + len;
|
|
|
|
while (s >= string)
|
|
|
|
*(d++) = *(s--);
|
|
|
|
len += l;
|
|
|
|
|
|
|
|
widget = widget->parent;
|
|
|
|
|
|
|
|
if (widget)
|
|
|
|
rev_path[len++] = '.';
|
|
|
|
else
|
|
|
|
rev_path[len++] = 0;
|
|
|
|
}
|
|
|
|
while (widget);
|
|
|
|
|
|
|
|
if (path_length_p)
|
|
|
|
*path_length_p = len - 1;
|
|
|
|
if (path_reversed_p)
|
|
|
|
*path_reversed_p = g_strdup (rev_path);
|
|
|
|
if (path_p)
|
|
|
|
{
|
|
|
|
*path_p = g_strdup (rev_path);
|
|
|
|
g_strreverse (*path_p);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gtk_widget_class_path (GtkWidget *widget,
|
|
|
|
guint *path_length_p,
|
|
|
|
gchar **path_p,
|
|
|
|
gchar **path_reversed_p)
|
|
|
|
{
|
|
|
|
static gchar *rev_path = NULL;
|
|
|
|
static guint path_len = 0;
|
|
|
|
guint len;
|
|
|
|
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
|
|
|
|
|
|
len = 0;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
gchar *string;
|
|
|
|
gchar *d, *s;
|
|
|
|
guint l;
|
|
|
|
|
|
|
|
string = gtk_type_name (GTK_WIDGET_TYPE (widget));
|
|
|
|
l = strlen (string);
|
|
|
|
while (path_len <= len + l + 1)
|
|
|
|
{
|
|
|
|
path_len += INIT_PATH_SIZE;
|
|
|
|
rev_path = g_realloc (rev_path, path_len);
|
|
|
|
}
|
|
|
|
s = string + l - 1;
|
|
|
|
d = rev_path + len;
|
|
|
|
while (s >= string)
|
|
|
|
*(d++) = *(s--);
|
|
|
|
len += l;
|
|
|
|
|
|
|
|
widget = widget->parent;
|
|
|
|
|
|
|
|
if (widget)
|
|
|
|
rev_path[len++] = '.';
|
|
|
|
else
|
|
|
|
rev_path[len++] = 0;
|
|
|
|
}
|
|
|
|
while (widget);
|
|
|
|
|
|
|
|
if (path_length_p)
|
|
|
|
*path_length_p = len - 1;
|
|
|
|
if (path_reversed_p)
|
|
|
|
*path_reversed_p = g_strdup (rev_path);
|
|
|
|
if (path_p)
|
|
|
|
{
|
|
|
|
*path_p = g_strdup (rev_path);
|
|
|
|
g_strreverse (*path_p);
|
|
|
|
}
|
|
|
|
}
|