summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2010-05-06 22:55:02 -0400
committerMatthias Clasen <mclasen@redhat.com>2010-05-06 22:55:02 -0400
commit77d4d3cdae0739c0a5643fb23891f8790f05c074 (patch)
treeebd134deb99ffd0ef47aea63e3dfcea73bd625f5 /gtk
parentb3e0e25d65db6b7be3385663ceeaecdc5c3115df (diff)
parent0de8601327d541f644dc1882c99f44551870a7ab (diff)
downloadgtk+-77d4d3cdae0739c0a5643fb23891f8790f05c074.tar.gz
Merge branch 'gtk-2-90'
Conflicts: gtk/gtkentry.h
Diffstat (limited to 'gtk')
-rw-r--r--gtk/Makefile.am74
-rw-r--r--gtk/gtk.h25
-rw-r--r--gtk/gtk.symbols833
-rw-r--r--gtk/gtkaboutdialog.c219
-rw-r--r--gtk/gtkaboutdialog.h11
-rw-r--r--gtk/gtkaccelgroup.c114
-rw-r--r--gtk/gtkaccelgroup.h39
-rw-r--r--gtk/gtkaccelgroupprivate.h36
-rw-r--r--gtk/gtkaccellabel.c154
-rw-r--r--gtk/gtkaccellabel.h19
-rw-r--r--gtk/gtkaccelmap.c4
-rw-r--r--gtk/gtkaccelmap.h2
-rw-r--r--gtk/gtkaccessible.h2
-rw-r--r--gtk/gtkaction.c136
-rw-r--r--gtk/gtkaction.h14
-rw-r--r--gtk/gtkactiongroup.h2
-rw-r--r--gtk/gtkactivatable.h2
-rw-r--r--gtk/gtkadjustment.h2
-rw-r--r--gtk/gtkalignment.h2
-rw-r--r--gtk/gtkarrow.h2
-rw-r--r--gtk/gtkaspectframe.h2
-rw-r--r--gtk/gtkassistant.h2
-rw-r--r--gtk/gtkbbox.c102
-rw-r--r--gtk/gtkbbox.h39
-rw-r--r--gtk/gtkbin.h2
-rw-r--r--gtk/gtkbindings.c47
-rw-r--r--gtk/gtkbindings.h10
-rw-r--r--gtk/gtkbox.c44
-rw-r--r--gtk/gtkbox.h9
-rw-r--r--gtk/gtkbuildable.h2
-rw-r--r--gtk/gtkbuilder.h2
-rw-r--r--gtk/gtkbutton.h2
-rw-r--r--gtk/gtkcalendar.c46
-rw-r--r--gtk/gtkcalendar.h15
-rw-r--r--gtk/gtkcelleditable.h2
-rw-r--r--gtk/gtkcelllayout.h2
-rw-r--r--gtk/gtkcellrenderer.c22
-rw-r--r--gtk/gtkcellrenderer.h9
-rw-r--r--gtk/gtkcellrendereraccel.h2
-rw-r--r--gtk/gtkcellrenderercombo.h2
-rw-r--r--gtk/gtkcellrendererpixbuf.h2
-rw-r--r--gtk/gtkcellrendererprogress.h2
-rw-r--r--gtk/gtkcellrendererspin.h2
-rw-r--r--gtk/gtkcellrenderertext.h2
-rw-r--r--gtk/gtkcellrenderertoggle.h2
-rw-r--r--gtk/gtkcellview.c20
-rw-r--r--gtk/gtkcellview.h5
-rw-r--r--gtk/gtkcheckbutton.h2
-rw-r--r--gtk/gtkcheckmenuitem.c11
-rw-r--r--gtk/gtkcheckmenuitem.h8
-rw-r--r--gtk/gtkclipboard.h2
-rw-r--r--gtk/gtkclist.c7806
-rw-r--r--gtk/gtkclist.h792
-rw-r--r--gtk/gtkcolorbutton.h2
-rw-r--r--gtk/gtkcolorsel.c79
-rw-r--r--gtk/gtkcolorsel.h18
-rw-r--r--gtk/gtkcolorseldialog.h2
-rw-r--r--gtk/gtkcombo.c1234
-rw-r--r--gtk/gtkcombo.h118
-rw-r--r--gtk/gtkcombobox.h2
-rw-r--r--gtk/gtkcomboboxentry.h2
-rw-r--r--gtk/gtkcontainer.c49
-rw-r--r--gtk/gtkcontainer.h16
-rw-r--r--gtk/gtkctree.c6144
-rw-r--r--gtk/gtkctree.h445
-rw-r--r--gtk/gtkcurve.c1039
-rw-r--r--gtk/gtkcurve.h106
-rw-r--r--gtk/gtkdebug.h2
-rw-r--r--gtk/gtkdialog.h2
-rw-r--r--gtk/gtkdnd-quartz.c10
-rw-r--r--gtk/gtkdnd.c47
-rw-r--r--gtk/gtkdnd.h10
-rw-r--r--gtk/gtkdrawingarea.c13
-rw-r--r--gtk/gtkdrawingarea.h9
-rw-r--r--gtk/gtkeditable.h2
-rw-r--r--gtk/gtkentry.c137
-rw-r--r--gtk/gtkentry.h23
-rw-r--r--gtk/gtkentrybuffer.h2
-rw-r--r--gtk/gtkentrycompletion.h2
-rw-r--r--gtk/gtkenums.h57
-rw-r--r--gtk/gtkeventbox.h2
-rw-r--r--gtk/gtkexpander.h2
-rw-r--r--gtk/gtkfilechooser.h2
-rw-r--r--gtk/gtkfilechooserbutton.c32
-rw-r--r--gtk/gtkfilechooserbutton.h9
-rw-r--r--gtk/gtkfilechooserdefault.c4
-rw-r--r--gtk/gtkfilechooserdialog.c43
-rw-r--r--gtk/gtkfilechooserdialog.h11
-rw-r--r--gtk/gtkfilechooserutils.c3
-rw-r--r--gtk/gtkfilechooserutils.h2
-rw-r--r--gtk/gtkfilechooserwidget.c29
-rw-r--r--gtk/gtkfilechooserwidget.h8
-rw-r--r--gtk/gtkfilefilter.h2
-rw-r--r--gtk/gtkfilesel.c3999
-rw-r--r--gtk/gtkfilesel.h125
-rw-r--r--gtk/gtkfixed.c48
-rw-r--r--gtk/gtkfixed.h8
-rw-r--r--gtk/gtkfontbutton.h2
-rw-r--r--gtk/gtkfontsel.c57
-rw-r--r--gtk/gtkfontsel.h16
-rw-r--r--gtk/gtkframe.h2
-rw-r--r--gtk/gtkgamma.c494
-rw-r--r--gtk/gtkgamma.h82
-rw-r--r--gtk/gtkgc.h2
-rw-r--r--gtk/gtkhandlebox.h2
-rw-r--r--gtk/gtkhbbox.c40
-rw-r--r--gtk/gtkhbbox.h10
-rw-r--r--gtk/gtkhbox.h2
-rw-r--r--gtk/gtkhpaned.h2
-rw-r--r--gtk/gtkhruler.h2
-rw-r--r--gtk/gtkhscale.h2
-rw-r--r--gtk/gtkhscrollbar.h2
-rw-r--r--gtk/gtkhseparator.h2
-rw-r--r--gtk/gtkiconfactory.h2
-rw-r--r--gtk/gtkicontheme.h2
-rw-r--r--gtk/gtkiconview.h2
-rw-r--r--gtk/gtkimage.c40
-rw-r--r--gtk/gtkimage.h13
-rw-r--r--gtk/gtkimagemenuitem.h2
-rw-r--r--gtk/gtkimcontext.h2
-rw-r--r--gtk/gtkimcontextsimple.h2
-rw-r--r--gtk/gtkimmulticontext.h2
-rw-r--r--gtk/gtkinputdialog.c764
-rw-r--r--gtk/gtkinputdialog.h100
-rw-r--r--gtk/gtkinvisible.h2
-rw-r--r--gtk/gtkitem.h2
-rw-r--r--gtk/gtkitemfactory.c1586
-rw-r--r--gtk/gtkitemfactory.h236
-rw-r--r--gtk/gtklabel.c41
-rw-r--r--gtk/gtklabel.h16
-rw-r--r--gtk/gtklayout.c36
-rw-r--r--gtk/gtklayout.h16
-rw-r--r--gtk/gtklinkbutton.h2
-rw-r--r--gtk/gtklist.c2587
-rw-r--r--gtk/gtklist.h138
-rw-r--r--gtk/gtklistitem.c635
-rw-r--r--gtk/gtklistitem.h91
-rw-r--r--gtk/gtkliststore.h2
-rw-r--r--gtk/gtkmain.c192
-rw-r--r--gtk/gtkmain.h51
-rw-r--r--gtk/gtkmarshal.list36
-rw-r--r--gtk/gtkmenu.c2
-rw-r--r--gtk/gtkmenu.h8
-rw-r--r--gtk/gtkmenubar.h8
-rw-r--r--gtk/gtkmenuitem.c18
-rw-r--r--gtk/gtkmenuitem.h7
-rw-r--r--gtk/gtkmenushell.h2
-rw-r--r--gtk/gtkmenutoolbutton.c33
-rw-r--r--gtk/gtkmenutoolbutton.h10
-rw-r--r--gtk/gtkmessagedialog.h2
-rw-r--r--gtk/gtkmisc.h2
-rw-r--r--gtk/gtkmodules.h2
-rw-r--r--gtk/gtknotebook.c278
-rw-r--r--gtk/gtknotebook.h26
-rw-r--r--gtk/gtkobject.c593
-rw-r--r--gtk/gtkobject.h116
-rw-r--r--gtk/gtkoldeditable.c829
-rw-r--r--gtk/gtkoldeditable.h126
-rw-r--r--gtk/gtkoptionmenu.c1036
-rw-r--r--gtk/gtkoptionmenu.h88
-rw-r--r--gtk/gtkpagesetup.h2
-rw-r--r--gtk/gtkpagesetupunixdialog.h2
-rw-r--r--gtk/gtkpaned.c11
-rw-r--r--gtk/gtkpaned.h11
-rw-r--r--gtk/gtkpapersize.h2
-rw-r--r--gtk/gtkpixmap.c286
-rw-r--r--gtk/gtkpixmap.h83
-rw-r--r--gtk/gtkplug.h2
-rw-r--r--gtk/gtkpreview.c565
-rw-r--r--gtk/gtkpreview.h137
-rw-r--r--gtk/gtkprintcontext.h2
-rw-r--r--gtk/gtkprinter.h2
-rw-r--r--gtk/gtkprintjob.h2
-rw-r--r--gtk/gtkprintoperation.h2
-rw-r--r--gtk/gtkprintoperationpreview.h2
-rw-r--r--gtk/gtkprintsettings.h2
-rw-r--r--gtk/gtkprintunixdialog.h2
-rw-r--r--gtk/gtkprogress.c6
-rw-r--r--gtk/gtkprogressbar.c197
-rw-r--r--gtk/gtkprogressbar.h23
-rw-r--r--gtk/gtkradioaction.h2
-rw-r--r--gtk/gtkradiobutton.h6
-rw-r--r--gtk/gtkradiomenuitem.h6
-rw-r--r--gtk/gtkradiotoolbutton.h2
-rw-r--r--gtk/gtkrange.h2
-rw-r--r--gtk/gtkrc.c96
-rw-r--r--gtk/gtkrc.h17
-rw-r--r--gtk/gtkrecentaction.h2
-rw-r--r--gtk/gtkrecentchooser.c66
-rw-r--r--gtk/gtkrecentchooser.h7
-rw-r--r--gtk/gtkrecentchooserdialog.h2
-rw-r--r--gtk/gtkrecentchoosermenu.h2
-rw-r--r--gtk/gtkrecentchooserwidget.h2
-rw-r--r--gtk/gtkrecentfilter.h2
-rw-r--r--gtk/gtkrecentmanager.c52
-rw-r--r--gtk/gtkrecentmanager.h8
-rw-r--r--gtk/gtkruler.h2
-rw-r--r--gtk/gtkscale.h2
-rw-r--r--gtk/gtkscalebutton.c40
-rw-r--r--gtk/gtkscalebutton.h10
-rw-r--r--gtk/gtkscrollbar.h2
-rw-r--r--gtk/gtkscrolledwindow.h2
-rw-r--r--gtk/gtkselection.c10
-rw-r--r--gtk/gtkselection.h6
-rw-r--r--gtk/gtkseparator.h2
-rw-r--r--gtk/gtkseparatormenuitem.h2
-rw-r--r--gtk/gtkseparatortoolitem.h2
-rw-r--r--gtk/gtksettings.h2
-rw-r--r--gtk/gtksignal.c394
-rw-r--r--gtk/gtksignal.h149
-rw-r--r--gtk/gtksizegroup.h2
-rw-r--r--gtk/gtksocket.c26
-rw-r--r--gtk/gtksocket.h7
-rw-r--r--gtk/gtkspinbutton.h7
-rw-r--r--gtk/gtkstatusbar.h2
-rw-r--r--gtk/gtkstatusicon.c18
-rw-r--r--gtk/gtkstatusicon.h6
-rw-r--r--gtk/gtkstock.h2
-rw-r--r--gtk/gtkstyle.c799
-rw-r--r--gtk/gtkstyle.h196
-rw-r--r--gtk/gtktable.h2
-rw-r--r--gtk/gtktearoffmenuitem.h2
-rw-r--r--gtk/gtktext.c5461
-rw-r--r--gtk/gtktext.h217
-rw-r--r--gtk/gtktextbuffer.h2
-rw-r--r--gtk/gtktextbufferrichtext.h2
-rw-r--r--gtk/gtktextchild.h2
-rw-r--r--gtk/gtktextiter.h2
-rw-r--r--gtk/gtktextmark.h2
-rw-r--r--gtk/gtktexttag.h2
-rw-r--r--gtk/gtktexttagtable.h2
-rw-r--r--gtk/gtktextview.h2
-rw-r--r--gtk/gtktipsquery.c524
-rw-r--r--gtk/gtktipsquery.h110
-rw-r--r--gtk/gtktoggleaction.h2
-rw-r--r--gtk/gtktogglebutton.h6
-rw-r--r--gtk/gtktoggletoolbutton.h2
-rw-r--r--gtk/gtktoolbar.c820
-rw-r--r--gtk/gtktoolbar.h118
-rw-r--r--gtk/gtktoolbutton.h2
-rw-r--r--gtk/gtktoolitem.c80
-rw-r--r--gtk/gtktoolitem.h18
-rw-r--r--gtk/gtktooltip.h2
-rw-r--r--gtk/gtktooltips.c338
-rw-r--r--gtk/gtktooltips.h109
-rw-r--r--gtk/gtktree.c1136
-rw-r--r--gtk/gtktree.h132
-rw-r--r--gtk/gtktreednd.h2
-rw-r--r--gtk/gtktreeitem.c1000
-rw-r--r--gtk/gtktreeitem.h90
-rw-r--r--gtk/gtktreemodel.h11
-rw-r--r--gtk/gtktreemodelfilter.h2
-rw-r--r--gtk/gtktreemodelsort.h2
-rw-r--r--gtk/gtktreeselection.h2
-rw-r--r--gtk/gtktreesortable.h2
-rw-r--r--gtk/gtktreestore.h2
-rw-r--r--gtk/gtktreeview.c65
-rw-r--r--gtk/gtktreeview.h15
-rw-r--r--gtk/gtktreeviewcolumn.c17
-rw-r--r--gtk/gtktreeviewcolumn.h5
-rw-r--r--gtk/gtktypeutils.c168
-rw-r--r--gtk/gtktypeutils.h167
-rw-r--r--gtk/gtkuimanager.h2
-rw-r--r--gtk/gtkvbbox.c63
-rw-r--r--gtk/gtkvbbox.h13
-rw-r--r--gtk/gtkvbox.h2
-rw-r--r--gtk/gtkviewport.h2
-rw-r--r--gtk/gtkvolumebutton.h2
-rw-r--r--gtk/gtkvpaned.h2
-rw-r--r--gtk/gtkvruler.h2
-rw-r--r--gtk/gtkvscale.h2
-rw-r--r--gtk/gtkvscrollbar.h2
-rw-r--r--gtk/gtkvseparator.h2
-rw-r--r--gtk/gtkwidget.c254
-rw-r--r--gtk/gtkwidget.h374
-rw-r--r--gtk/gtkwindow.c15
-rw-r--r--gtk/gtkwindow.h12
-rw-r--r--gtk/makefile.msc.in6
-rw-r--r--gtk/tests/builder.c8
-rw-r--r--gtk/tests/defaultvalue.c17
-rw-r--r--gtk/tests/floating.c14
-rw-r--r--gtk/tests/object.c1
282 files changed, 565 insertions, 49299 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index ce39a1c6b4..5670626aad 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -166,6 +166,7 @@ gtk_public_h_sources = \
gtkaccessible.h \
gtkaction.h \
gtkactiongroup.h \
+ gtkaccelgroupprivate.h \
gtkactivatable.h \
gtkadjustment.h \
gtkalignment.h \
@@ -506,7 +507,6 @@ gtk_base_c_sources = \
gtkimmodule.c \
gtkimmulticontext.c \
gtkinfobar.c \
- gtkinputdialog.c \
gtkinvisible.c \
gtkitem.c \
gtkkeyhash.c \
@@ -515,7 +515,6 @@ gtk_base_c_sources = \
gtklinkbutton.c \
gtkliststore.c \
gtkmain.c \
- gtkmarshal.c \
gtkmarshalers.c \
gtkmenu.c \
gtkmenubar.c \
@@ -633,54 +632,11 @@ gtk_base_c_sources = \
gtkwindow.c \
$(gtk_clipboard_dnd_c_sources)
-# Broken
-gtk_public_h_sources += \
- gtktext.h \
- gtktree.h \
- gtktreeitem.h
-gtk_base_c_sources += \
- gtktext.c \
- gtktree.c \
- gtktreeitem.c
-
# Deprecated
gtk_public_h_sources += \
- gtkclist.h \
- gtkcombo.h \
- gtkctree.h \
- gtkcurve.h \
- gtkfilesel.h \
- gtkgamma.h \
- gtkinputdialog.h \
- gtkitemfactory.h \
- gtklist.h \
- gtklistitem.h \
- gtkoldeditable.h \
- gtkoptionmenu.h \
- gtkpixmap.h \
- gtkpreview.h \
- gtkprogress.h \
- gtksignal.h \
- gtktipsquery.h \
- gtktooltips.h
+ gtkprogress.h
gtk_base_c_sources += \
- gtkclist.c \
- gtkcombo.c \
- gtkctree.c \
- gtkcurve.c \
- gtkfilesel.c \
- gtkgamma.c \
- gtkitemfactory.c \
- gtklist.c \
- gtklistitem.c \
- gtkoldeditable.c \
- gtkoptionmenu.c \
- gtkpixmap.c \
- gtkpreview.c \
- gtkprogress.c \
- gtksignal.c \
- gtktipsquery.c \
- gtktooltips.c
+ gtkprogress.c
gtk_c_sources = $(gtk_base_c_sources)
gtk_all_c_sources = $(gtk_base_c_sources)
@@ -779,7 +735,6 @@ EXTRA_DIST += gtkquartz.h
# built sources that get installed with the header files
gtk_built_public_sources = \
- gtkmarshal.h \
gtktypebuiltins.h
# built headers that don't get installed
@@ -794,13 +749,11 @@ gtk_built_sources = \
gtktypebuiltins.c \
gtktypefuncs.c \
gtkmarshalers.c \
- gtkmarshal.c \
${gtk_built_private_headers} \
${gtk_built_public_sources}
stamp_files = \
stamp-gtkmarshalers.h \
- stamp-gtkmarshal.h \
stamp-gtktypebuiltins.h \
stamp-icons
@@ -814,8 +767,7 @@ gtk_extra_sources = \
gtkstatusicon-quartz.c \
gtk.symbols \
gtkversion.h.in \
- gtkmarshalers.list \
- gtkmarshal.list
+ gtkmarshalers.list
#
# setup GTK+ sources and their dependencies
@@ -854,24 +806,6 @@ gtkmarshalers.c: @REBUILD@ gtkmarshalers.list
&& cp xgen-gmlc gtkmarshalers.c \
&& rm -f xgen-gmlc
-gtkmarshal.h: stamp-gtkmarshal.h
- @true
-stamp-gtkmarshal.h: @REBUILD@ gtkmarshal.list
- echo "#ifndef GTK_DISABLE_DEPRECATED" > xgen-gmh \
- && $(GLIB_GENMARSHAL) --prefix=gtk_marshal $(srcdir)/gtkmarshal.list --header >> xgen-gmh \
- && echo "#endif /* GTK_DISABLE_DEPRECATED */" >> xgen-gmh \
- && (cmp -s xgen-gmh gtkmarshal.h || cp xgen-gmh gtkmarshal.h) \
- && rm -f xgen-gmh \
- && echo timestamp > $(@F)
-gtkmarshal.c: @REBUILD@ gtkmarshal.list
- (echo "#include \"gtkmarshal.h\""; \
- echo "#include \"gtkalias.h\""; \
- $(GLIB_GENMARSHAL) --prefix=gtk_marshal $(srcdir)/gtkmarshal.list --body; \
- echo "#define __gtk_marshal_MARSHAL_C__"; \
- echo "#include \"gtkaliasdef.c\"") >> xgen-gmc \
- && cp xgen-gmc gtkmarshal.c \
- && rm -f xgen-gmc
-
gtktypebuiltins.h: stamp-gtktypebuiltins.h
@true
stamp-gtktypebuiltins.h: @REBUILD@ $(gtk_public_h_sources) gtktypebuiltins.h.template
diff --git a/gtk/gtk.h b/gtk/gtk.h
index 63e96d519f..cbac47556d 100644
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
@@ -218,31 +218,6 @@
#include <gtk/gtkwidget.h>
#include <gtk/gtkwindow.h>
-/* Broken */
-#include <gtk/gtktext.h>
-#include <gtk/gtktree.h>
-#include <gtk/gtktreeitem.h>
-
-/* Deprecated */
-#include <gtk/gtkclist.h>
-#include <gtk/gtkcombo.h>
-#include <gtk/gtkctree.h>
-#include <gtk/gtkcurve.h>
-#include <gtk/gtkfilesel.h>
-#include <gtk/gtkgamma.h>
-#include <gtk/gtkinputdialog.h>
-#include <gtk/gtkitemfactory.h>
-#include <gtk/gtklist.h>
-#include <gtk/gtklistitem.h>
-#include <gtk/gtkoldeditable.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtkpixmap.h>
-#include <gtk/gtkpreview.h>
-#include <gtk/gtkprogress.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtktipsquery.h>
-#include <gtk/gtktooltips.h>
-
#undef __GTK_H_INSIDE__
#endif /* __GTK_H__ */
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 2e1b8f7da5..924663b827 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -33,10 +33,6 @@ gtk_about_dialog_get_documenters
gtk_about_dialog_get_license
gtk_about_dialog_get_logo
gtk_about_dialog_get_logo_icon_name
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_about_dialog_get_name
-gtk_about_dialog_set_name
-#endif
gtk_about_dialog_get_program_name
gtk_about_dialog_set_program_name
gtk_about_dialog_get_translator_credits
@@ -146,21 +142,12 @@ gtk_accessible_get_widget
#if IN_FILE(__GTK_ACTION_C__)
gtk_action_activate
gtk_action_block_activate
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_action_block_activate_from
-#endif
gtk_action_connect_accelerator
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_action_connect_proxy
-#endif
gtk_action_create_icon
gtk_action_create_menu_item
gtk_action_create_tool_item
gtk_action_create_menu
gtk_action_disconnect_accelerator
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_action_disconnect_proxy
-#endif
gtk_action_get_always_show_image
gtk_action_get_accel_closure
gtk_action_get_accel_path
@@ -168,9 +155,6 @@ gtk_action_get_gicon
gtk_action_get_label
gtk_action_get_name
gtk_action_get_proxies
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_widget_get_action
-#endif
gtk_action_get_icon_name
gtk_action_get_is_important
gtk_action_get_sensitive
@@ -199,9 +183,6 @@ gtk_action_set_visible
gtk_action_set_visible_horizontal
gtk_action_set_visible_vertical
gtk_action_unblock_activate
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_action_unblock_activate_from
-#endif
#endif
#endif
@@ -313,13 +294,11 @@ gtk_spin_button_update_policy_get_type G_GNUC_CONST
gtk_notebook_tab_get_type G_GNUC_CONST
gtk_number_up_layout_get_type G_GNUC_CONST
gtk_anchor_type_get_type G_GNUC_CONST
-gtk_arg_flags_get_type G_GNUC_CONST
gtk_arrow_type_get_type G_GNUC_CONST
gtk_arrow_placement_get_type G_GNUC_CONST
gtk_assistant_page_type_get_type G_GNUC_CONST
gtk_attach_options_get_type G_GNUC_CONST
gtk_builder_error_get_type G_GNUC_CONST
-gtk_button_action_get_type G_GNUC_CONST
gtk_buttons_type_get_type G_GNUC_CONST
gtk_calendar_display_options_get_type G_GNUC_CONST
gtk_cell_renderer_mode_get_type G_GNUC_CONST
@@ -330,7 +309,6 @@ gtk_debug_flag_get_type G_GNUC_CONST
gtk_delete_type_get_type G_GNUC_CONST
gtk_dest_defaults_get_type G_GNUC_CONST
gtk_drag_result_get_type G_GNUC_CONST
-gtk_clist_drag_pos_get_type G_GNUC_CONST
gtk_dialog_flags_get_type G_GNUC_CONST
gtk_direction_type_get_type G_GNUC_CONST
gtk_entry_icon_position_get_type G_GNUC_CONST
@@ -348,18 +326,11 @@ gtk_window_position_get_type G_GNUC_CONST
gtk_tree_view_column_sizing_get_type G_GNUC_CONST
gtk_tree_view_drop_position_get_type G_GNUC_CONST
gtk_button_box_style_get_type G_GNUC_CONST
-gtk_cell_type_get_type G_GNUC_CONST
-gtk_ctree_expander_style_get_type G_GNUC_CONST
-gtk_ctree_expansion_type_get_type G_GNUC_CONST
-gtk_ctree_line_style_get_type G_GNUC_CONST
-gtk_ctree_pos_get_type G_GNUC_CONST
-gtk_curve_type_get_type G_GNUC_CONST
gtk_icon_lookup_flags_get_type G_GNUC_CONST
gtk_image_type_get_type G_GNUC_CONST
gtk_im_preedit_style_get_type G_GNUC_CONST
gtk_im_status_style_get_type G_GNUC_CONST
gtk_justification_get_type G_GNUC_CONST
-gtk_match_type_get_type G_GNUC_CONST
gtk_menu_direction_type_get_type G_GNUC_CONST
gtk_message_type_get_type G_GNUC_CONST
gtk_metric_type_get_type G_GNUC_CONST
@@ -376,7 +347,6 @@ gtk_path_priority_type_get_type G_GNUC_CONST
gtk_path_type_get_type G_GNUC_CONST
gtk_policy_type_get_type G_GNUC_CONST
gtk_position_type_get_type G_GNUC_CONST
-gtk_preview_type_get_type G_GNUC_CONST
gtk_print_duplex_get_type G_GNUC_CONST
gtk_print_error_get_type G_GNUC_CONST
gtk_recent_filter_flags_get_type G_GNUC_CONST
@@ -397,8 +367,6 @@ gtk_scroll_step_get_type G_GNUC_CONST
gtk_scroll_type_get_type G_GNUC_CONST
gtk_selection_mode_get_type G_GNUC_CONST
gtk_shadow_type_get_type G_GNUC_CONST
-gtk_side_type_get_type G_GNUC_CONST
-gtk_signal_run_type_get_type G_GNUC_CONST
gtk_size_group_mode_get_type G_GNUC_CONST
gtk_sort_type_get_type G_GNUC_CONST
gtk_spin_type_get_type G_GNUC_CONST
@@ -412,7 +380,6 @@ gtk_text_search_flags_get_type G_GNUC_CONST
gtk_text_window_type_get_type G_GNUC_CONST
gtk_tool_palette_drag_targets_get_type G_GNUC_CONST
gtk_tree_model_flags_get_type G_GNUC_CONST
-gtk_tree_view_mode_get_type G_GNUC_CONST
gtk_tree_view_grid_lines_get_type G_GNUC_CONST
gtk_update_type_get_type G_GNUC_CONST
gtk_visibility_get_type G_GNUC_CONST
@@ -445,10 +412,6 @@ gtk_aspect_frame_set
#if IN_HEADER(__GTK_BINDINGS_H__)
#if IN_FILE(__GTK_BINDINGS_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_binding_entry_clear
-gtk_binding_parse_binding
-#endif
gtk_binding_entry_skip
gtk_binding_entry_add_signal
gtk_binding_entry_add_signall
@@ -477,10 +440,6 @@ gtk_box_get_spacing
gtk_box_get_type G_GNUC_CONST
gtk_box_pack_end
gtk_box_pack_start
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_box_pack_end_defaults
-gtk_box_pack_start_defaults
-#endif
gtk_box_query_child_packing
gtk_box_reorder_child
gtk_box_set_child_packing
@@ -528,12 +487,6 @@ gtk_builder_value_from_string_type
#if IN_HEADER(__GTK_BUTTON_BOX_H__)
#if IN_FILE(__GTK_BUTTON_BOX_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_button_box_set_child_size
-gtk_button_box_set_child_ipadding
-gtk_button_box_get_child_ipadding
-gtk_button_box_get_child_size
-#endif
gtk_button_box_get_child_secondary
gtk_button_box_get_layout
gtk_button_box_get_type G_GNUC_CONST
@@ -581,11 +534,6 @@ gtk_button_set_use_underline
#if IN_HEADER(__GTK_CALENDAR_H__)
#if IN_FILE(__GTK_CALENDAR_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_calendar_display_options
-gtk_calendar_freeze
-gtk_calendar_thaw
-#endif
gtk_calendar_clear_marks
gtk_calendar_get_date
gtk_calendar_get_detail_height_rows
@@ -631,9 +579,6 @@ gtk_cell_layout_set_cell_data_func
#if IN_HEADER(__GTK_CELL_RENDERER_H__)
#if IN_FILE(__GTK_CELL_RENDERER_C__)
gtk_cell_renderer_activate
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_cell_renderer_editing_canceled
-#endif
gtk_cell_renderer_get_alignment
gtk_cell_renderer_get_fixed_size
gtk_cell_renderer_get_padding
@@ -717,9 +662,6 @@ gtk_cell_renderer_toggle_set_radio
#if IN_HEADER(__GTK_CELL_VIEW_H__)
#if IN_FILE(__GTK_CELL_VIEW_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_cell_view_get_cell_renderers
-#endif
gtk_cell_view_get_displayed_row
gtk_cell_view_get_model
gtk_cell_view_get_size_of_row
@@ -755,9 +697,6 @@ gtk_check_menu_item_new_with_mnemonic
gtk_check_menu_item_set_active
gtk_check_menu_item_set_draw_as_radio
gtk_check_menu_item_set_inconsistent
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_check_menu_item_set_show_toggle
-#endif
gtk_check_menu_item_toggled
#endif
#endif
@@ -796,87 +735,6 @@ gtk_clipboard_wait_is_target_available
#endif
#endif
-#if IN_HEADER(__GTK_CLIST_H__)
-#if IN_FILE(__GTK_CLIST_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_clist_append
-gtk_clist_clear
-gtk_clist_columns_autosize
-gtk_clist_column_title_active
-gtk_clist_column_title_passive
-gtk_clist_column_titles_active
-gtk_clist_column_titles_hide
-gtk_clist_column_titles_passive
-gtk_clist_column_titles_show
-gtk_clist_find_row_from_data
-gtk_clist_freeze
-gtk_clist_get_cell_style
-gtk_clist_get_cell_type
-gtk_clist_get_column_title
-gtk_clist_get_column_widget
-gtk_clist_get_hadjustment
-gtk_clist_get_pixmap
-gtk_clist_get_pixtext
-gtk_clist_get_row_data
-gtk_clist_get_row_style
-gtk_clist_get_selectable
-gtk_clist_get_selection_info
-gtk_clist_get_text
-gtk_clist_get_type G_GNUC_CONST
-gtk_clist_get_vadjustment
-gtk_clist_insert
-gtk_clist_moveto
-gtk_clist_new
-gtk_clist_new_with_titles
-gtk_clist_optimal_column_width
-gtk_clist_prepend
-gtk_clist_remove
-gtk_clist_row_is_visible
-gtk_clist_row_move
-gtk_clist_select_all
-gtk_clist_select_row
-gtk_clist_set_auto_sort
-gtk_clist_set_background
-gtk_clist_set_button_actions
-gtk_clist_set_cell_style
-gtk_clist_set_column_auto_resize
-gtk_clist_set_column_justification
-gtk_clist_set_column_max_width
-gtk_clist_set_column_min_width
-gtk_clist_set_column_resizeable
-gtk_clist_set_column_title
-gtk_clist_set_column_visibility
-gtk_clist_set_column_widget
-gtk_clist_set_column_width
-gtk_clist_set_compare_func
-gtk_clist_set_foreground
-gtk_clist_set_hadjustment
-gtk_clist_set_pixmap
-gtk_clist_set_pixtext
-gtk_clist_set_reorderable
-gtk_clist_set_row_data
-gtk_clist_set_row_data_full
-gtk_clist_set_row_height
-gtk_clist_set_row_style
-gtk_clist_set_selectable
-gtk_clist_set_selection_mode
-gtk_clist_set_shadow_type
-gtk_clist_set_shift
-gtk_clist_set_sort_column
-gtk_clist_set_sort_type
-gtk_clist_set_text
-gtk_clist_set_use_drag_icons
-gtk_clist_set_vadjustment
-gtk_clist_sort
-gtk_clist_swap_rows
-gtk_clist_thaw
-gtk_clist_undo_selection
-gtk_clist_unselect_all
-gtk_clist_unselect_row
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_COLOR_BUTTON_H__)
#if IN_FILE(__GTK_COLOR_BUTTON_C__)
gtk_color_button_get_alpha
@@ -906,12 +764,6 @@ gtk_color_selection_is_adjusting
gtk_color_selection_new
gtk_color_selection_palette_from_string
gtk_color_selection_palette_to_string
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_color_selection_set_change_palette_hook
-gtk_color_selection_set_color
-gtk_color_selection_get_color
-gtk_color_selection_set_update_policy
-#endif
gtk_color_selection_set_change_palette_with_screen_hook
gtk_color_selection_set_current_alpha
gtk_color_selection_set_current_color
@@ -980,22 +832,6 @@ gtk_combo_box_entry_set_text_column
#endif
#endif
-#if IN_HEADER(__GTK_SMART_COMBO_H__)
-#if IN_FILE(__GTK_SMART_COMBO_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_combo_disable_activate
-gtk_combo_get_type G_GNUC_CONST
-gtk_combo_new
-gtk_combo_set_case_sensitive
-gtk_combo_set_item_string
-gtk_combo_set_popdown_strings
-gtk_combo_set_use_arrows
-gtk_combo_set_use_arrows_always
-gtk_combo_set_value_in_list
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_CONTAINER_H__)
#if IN_FILE(__GTK_CONTAINER_C__)
gtk_container_add
@@ -1013,9 +849,6 @@ gtk_container_class_install_child_property
gtk_container_class_list_child_properties
gtk_container_forall
gtk_container_foreach
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_container_foreach_full
-#endif
gtk_container_get_border_width
gtk_container_get_children
gtk_container_get_focus_chain
@@ -1038,96 +871,6 @@ gtk_container_unset_focus_chain
#endif
#endif
-#if IN_HEADER(__GTK_CTREE_H__)
-#if IN_FILE(__GTK_CTREE_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_ctree_collapse
-gtk_ctree_collapse_recursive
-gtk_ctree_collapse_to_depth
-gtk_ctree_expand
-gtk_ctree_expand_recursive
-gtk_ctree_expand_to_depth
-gtk_ctree_export_to_gnode
-gtk_ctree_find
-gtk_ctree_find_all_by_row_data
-gtk_ctree_find_all_by_row_data_custom
-gtk_ctree_find_by_row_data
-gtk_ctree_find_by_row_data_custom
-gtk_ctree_find_node_ptr
-gtk_ctree_get_node_info
-gtk_ctree_get_type G_GNUC_CONST
-gtk_ctree_insert_gnode
-gtk_ctree_insert_node
-gtk_ctree_is_ancestor
-gtk_ctree_is_hot_spot
-gtk_ctree_is_viewable
-gtk_ctree_last
-gtk_ctree_move
-gtk_ctree_new
-gtk_ctree_new_with_titles
-gtk_ctree_node_get_cell_style
-gtk_ctree_node_get_cell_type
-gtk_ctree_node_get_pixmap
-gtk_ctree_node_get_pixtext
-gtk_ctree_node_get_row_data
-gtk_ctree_node_get_row_style
-gtk_ctree_node_get_selectable
-gtk_ctree_node_get_text
-gtk_ctree_node_get_type G_GNUC_CONST
-gtk_ctree_node_is_visible
-gtk_ctree_node_moveto
-gtk_ctree_node_nth
-gtk_ctree_node_set_background
-gtk_ctree_node_set_cell_style
-gtk_ctree_node_set_foreground
-gtk_ctree_node_set_pixmap
-gtk_ctree_node_set_pixtext
-gtk_ctree_node_set_row_data
-gtk_ctree_node_set_row_data_full
-gtk_ctree_node_set_row_style
-gtk_ctree_node_set_selectable
-gtk_ctree_node_set_shift
-gtk_ctree_node_set_text
-gtk_ctree_post_recursive
-gtk_ctree_post_recursive_to_depth
-gtk_ctree_pre_recursive
-gtk_ctree_pre_recursive_to_depth
-gtk_ctree_real_select_recursive
-gtk_ctree_remove_node
-gtk_ctree_select
-gtk_ctree_select_recursive
-gtk_ctree_set_drag_compare_func
-gtk_ctree_set_expander_style
-gtk_ctree_set_indent
-gtk_ctree_set_line_style
-gtk_ctree_set_node_info
-gtk_ctree_set_show_stub
-gtk_ctree_set_spacing
-gtk_ctree_sort_node
-gtk_ctree_sort_recursive
-gtk_ctree_toggle_expansion
-gtk_ctree_toggle_expansion_recursive
-gtk_ctree_unselect
-gtk_ctree_unselect_recursive
-#endif
-#endif
-#endif
-
-#if IN_HEADER(__GTK_CURVE_H__)
-#if IN_FILE(__GTK_CURVE_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_curve_get_type G_GNUC_CONST
-gtk_curve_get_vector
-gtk_curve_new
-gtk_curve_reset
-gtk_curve_set_curve_type
-gtk_curve_set_gamma
-gtk_curve_set_range
-gtk_curve_set_vector
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_WINDOW_DECORATE_H__)
#if IN_FILE(__GTK_WINDOW_DECORATE_C__)
gtk_decorated_window_calculate_frame_size
@@ -1180,9 +923,6 @@ gtk_drag_finish
gtk_drag_get_data
gtk_drag_get_source_widget
gtk_drag_highlight
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_drag_set_default_icon
-#endif
gtk_drag_set_icon_default
gtk_drag_set_icon_name
gtk_drag_set_icon_pixbuf
@@ -1226,9 +966,6 @@ gtk_status_icon_get_icon_name
gtk_status_icon_get_gicon
gtk_status_icon_get_size
gtk_status_icon_set_screen
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_status_icon_set_tooltip
-#endif
gtk_status_icon_set_tooltip_text
gtk_status_icon_get_tooltip_text
gtk_status_icon_set_tooltip_markup
@@ -1251,34 +988,6 @@ gtk_status_icon_set_name
#if IN_HEADER(__GTK_STYLE_H__)
#if IN_FILE(__GTK_STYLE_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_draw_arrow
-gtk_draw_box
-gtk_draw_box_gap
-gtk_draw_check
-gtk_draw_diamond
-gtk_draw_expander
-gtk_draw_extension
-gtk_draw_flat_box
-gtk_draw_focus
-gtk_draw_handle
-gtk_draw_hline
-gtk_draw_layout
-gtk_draw_option
-gtk_draw_polygon
-gtk_draw_resize_grip
-gtk_draw_shadow
-gtk_draw_shadow_gap
-gtk_draw_slider
-gtk_draw_string
-gtk_draw_tab
-gtk_draw_vline
-gtk_style_set_font
-gtk_style_get_font
-gtk_style_ref
-gtk_style_unref
-gtk_paint_string
-#endif
gtk_paint_arrow
gtk_paint_box
gtk_paint_box_gap
@@ -1325,9 +1034,6 @@ gtk_style_get
#if IN_FILE(__GTK_DRAWING_AREA_C__)
gtk_drawing_area_get_type G_GNUC_CONST
gtk_drawing_area_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_drawing_area_size
-#endif
#endif
#endif
@@ -1416,14 +1122,6 @@ gtk_entry_set_visibility
gtk_entry_set_width_chars
gtk_entry_text_index_to_layout_index
gtk_entry_unset_invisible_char
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_entry_append_text
-gtk_entry_new_with_max_length
-gtk_entry_prepend_text
-gtk_entry_select_region
-gtk_entry_set_editable
-gtk_entry_set_position
-#endif
#endif
#endif
@@ -1642,9 +1340,6 @@ gtk_file_chooser_unselect_uri
#if IN_FILE(__GTK_FILE_CHOOSER_DIALOG_C__)
gtk_file_chooser_dialog_get_type G_GNUC_CONST
gtk_file_chooser_dialog_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_file_chooser_dialog_new_with_backend
-#endif
#endif
#endif
@@ -1652,9 +1347,6 @@ gtk_file_chooser_dialog_new_with_backend
#if IN_FILE(__GTK_FILE_CHOOSER_WIDGET_C__)
gtk_file_chooser_widget_get_type G_GNUC_CONST
gtk_file_chooser_widget_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_file_chooser_widget_new_with_backend
-#endif
#endif
#endif
@@ -1664,9 +1356,6 @@ gtk_file_chooser_button_get_title
gtk_file_chooser_button_get_type G_GNUC_CONST
gtk_file_chooser_button_get_width_chars
gtk_file_chooser_button_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_file_chooser_button_new_with_backend
-#endif
gtk_file_chooser_button_new_with_dialog
gtk_file_chooser_button_set_title
gtk_file_chooser_button_set_width_chars
@@ -1690,48 +1379,12 @@ gtk_file_filter_set_name
#endif
#endif
-#if IN_HEADER(__GTK_FILESEL_H__)
-#if IN_FILE(__GTK_FILESEL_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_file_selection_complete
-#ifndef _WIN64
-gtk_file_selection_get_filename PRIVATE
-#endif
-#ifdef G_OS_WIN32
-gtk_file_selection_get_filename_utf8
-#endif
-#ifndef _WIN64
-gtk_file_selection_get_selections PRIVATE
-#endif
-#ifdef G_OS_WIN32
-gtk_file_selection_get_selections_utf8
-#endif
-gtk_file_selection_get_select_multiple
-gtk_file_selection_get_type G_GNUC_CONST
-gtk_file_selection_hide_fileop_buttons
-gtk_file_selection_new
-#ifndef _WIN64
-gtk_file_selection_set_filename PRIVATE
-#endif
-#ifdef G_OS_WIN32
-gtk_file_selection_set_filename_utf8
-#endif
-gtk_file_selection_set_select_multiple
-gtk_file_selection_show_fileop_buttons
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_FIXED_H__)
#if IN_FILE(__GTK_FIXED_C__)
gtk_fixed_get_type G_GNUC_CONST
gtk_fixed_move
gtk_fixed_new
gtk_fixed_put
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_fixed_set_has_window
-gtk_fixed_get_has_window
-#endif
#endif
#endif
@@ -1765,11 +1418,6 @@ gtk_font_selection_dialog_get_type G_GNUC_CONST
gtk_font_selection_dialog_new
gtk_font_selection_dialog_set_font_name
gtk_font_selection_dialog_set_preview_text
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_font_selection_dialog_get_apply_button
-gtk_font_selection_get_font
-gtk_font_selection_dialog_get_font
-#endif
gtk_font_selection_get_face
gtk_font_selection_get_face_list
gtk_font_selection_get_family
@@ -1802,15 +1450,6 @@ gtk_frame_set_shadow_type
#endif
#endif
-#if IN_HEADER(__GTK_GAMMA_CURVE_H__)
-#if IN_FILE(__GTK_GAMMA_CURVE_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_gamma_curve_get_type G_GNUC_CONST
-gtk_gamma_curve_new
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_GC_H__)
#if IN_FILE(__GTK_GC_C__)
gtk_gc_get
@@ -1843,12 +1482,6 @@ gtk_hbox_new
#if IN_FILE(__GTK_HBUTTON_BOX_C__)
gtk_hbutton_box_new
gtk_hbutton_box_get_type G_GNUC_CONST
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_hbutton_box_get_layout_default
-gtk_hbutton_box_get_spacing_default
-gtk_hbutton_box_set_layout_default
-gtk_hbutton_box_set_spacing_default
-#endif
#endif
#endif
@@ -2092,10 +1725,6 @@ gtk_icon_view_get_tooltip_column
#if IN_HEADER(__GTK_IMAGE_H__)
#if IN_FILE(__GTK_IMAGE_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_image_get
-gtk_image_set
-#endif
gtk_image_clear
gtk_image_get_animation
gtk_image_get_icon_name
@@ -2212,43 +1841,8 @@ gtk_item_toggle
#endif
#endif
-#if IN_HEADER(__GTK_ITEM_FACTORY_H__)
-#if IN_FILE(__GTK_ITEM_FACTORY_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_item_factories_path_delete
-gtk_item_factory_add_foreign
-gtk_item_factory_construct
-gtk_item_factory_create_item
-gtk_item_factory_create_items
-gtk_item_factory_create_items_ac
-gtk_item_factory_create_menu_entries
-gtk_item_factory_delete_entries
-gtk_item_factory_delete_entry
-gtk_item_factory_delete_item
-gtk_item_factory_from_path
-gtk_item_factory_from_widget
-gtk_item_factory_get_item
-gtk_item_factory_get_item_by_action
-gtk_item_factory_get_type G_GNUC_CONST
-gtk_item_factory_get_widget
-gtk_item_factory_get_widget_by_action
-gtk_item_factory_new
-gtk_item_factory_path_from_widget
-gtk_item_factory_popup
-gtk_item_factory_popup_data
-gtk_item_factory_popup_data_from_widget
-gtk_item_factory_popup_with_data
-gtk_item_factory_set_translate_func
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_LABEL_H__)
#if IN_FILE(__GTK_LABEL_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_label_get
-gtk_label_parse_uline
-#endif
gtk_label_get_angle
gtk_label_get_attributes
gtk_label_get_ellipsize
@@ -2310,10 +1904,6 @@ gtk_layout_put
gtk_layout_set_hadjustment
gtk_layout_set_size
gtk_layout_set_vadjustment
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_layout_freeze
-gtk_layout_thaw
-#endif
#endif
#endif
@@ -2330,51 +1920,6 @@ gtk_link_button_set_visited
#endif
#endif
-#if IN_HEADER(__GTK_LIST_H__)
-#if IN_FILE(__GTK_LIST_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_list_append_items
-gtk_list_child_position
-gtk_list_clear_items
-gtk_list_end_drag_selection
-gtk_list_end_selection
-gtk_list_extend_selection
-gtk_list_get_type G_GNUC_CONST
-gtk_list_insert_items
-gtk_list_new
-gtk_list_prepend_items
-gtk_list_remove_items
-gtk_list_remove_items_no_unref
-gtk_list_scroll_horizontal
-gtk_list_scroll_vertical
-gtk_list_select_all
-gtk_list_select_child
-gtk_list_select_item
-gtk_list_set_selection_mode
-gtk_list_start_selection
-gtk_list_toggle_add_mode
-gtk_list_toggle_focus_row
-gtk_list_toggle_row
-gtk_list_undo_selection
-gtk_list_unselect_all
-gtk_list_unselect_child
-gtk_list_unselect_item
-#endif
-#endif
-#endif
-
-#if IN_HEADER(__GTK_LIST_ITEM_H__)
-#if IN_FILE(__GTK_LIST_ITEM_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_list_item_deselect
-gtk_list_item_get_type G_GNUC_CONST
-gtk_list_item_new
-gtk_list_item_new_with_label
-gtk_list_item_select
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_LIST_STORE_H__)
#if IN_FILE(__GTK_LIST_STORE_C__)
gtk_list_store_append
@@ -2408,19 +1953,6 @@ gtk_get_option_group
gtk_get_current_event
gtk_get_current_event_state
gtk_get_current_event_time
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_exit
-gtk_idle_add
-gtk_idle_add_full
-gtk_idle_add_priority
-gtk_idle_remove
-gtk_idle_remove_by_data
-gtk_timeout_add
-gtk_timeout_add_full
-gtk_timeout_remove
-gtk_input_add_full
-gtk_input_remove
-#endif
gtk_false G_GNUC_CONST
gtk_true G_GNUC_CONST
gtk_events_pending
@@ -2460,48 +1992,6 @@ gtk_main_quit
#endif
#endif
-#if IN_HEADER(__GTK_INPUTDIALOG_H__)
-#if IN_FILE(__GTK_INPUTDIALOG_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_input_dialog_get_type G_GNUC_CONST
-gtk_input_dialog_new
-#endif
-#endif
-#endif
-
-#if IN_HEADER(__gtk_marshal_MARSHAL_H__)
-#if IN_FILE(__gtk_marshal_MARSHAL_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_marshal_BOOLEAN__POINTER
-gtk_marshal_BOOLEAN__POINTER_INT_INT
-gtk_marshal_BOOLEAN__POINTER_INT_INT_UINT
-gtk_marshal_BOOLEAN__POINTER_POINTER_INT_INT
-gtk_marshal_BOOLEAN__POINTER_STRING_STRING_POINTER
-gtk_marshal_BOOLEAN__VOID
-gtk_marshal_ENUM__ENUM
-gtk_marshal_INT__POINTER
-gtk_marshal_INT__POINTER_CHAR_CHAR
-gtk_marshal_VOID__ENUM_FLOAT
-gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN
-gtk_marshal_VOID__INT_INT
-gtk_marshal_VOID__INT_INT_POINTER
-gtk_marshal_VOID__POINTER_INT
-gtk_marshal_VOID__POINTER_INT_INT_POINTER_UINT_UINT
-gtk_marshal_VOID__POINTER_POINTER
-gtk_marshal_VOID__POINTER_POINTER_POINTER
-gtk_marshal_VOID__POINTER_POINTER_UINT_UINT
-gtk_marshal_VOID__POINTER_STRING_STRING
-gtk_marshal_VOID__POINTER_UINT
-gtk_marshal_VOID__POINTER_UINT_ENUM
-gtk_marshal_VOID__POINTER_UINT_UINT
-gtk_marshal_VOID__STRING_INT_POINTER
-gtk_marshal_VOID__UINT_POINTER_UINT_ENUM_ENUM_POINTER
-gtk_marshal_VOID__UINT_POINTER_UINT_UINT_ENUM
-gtk_marshal_VOID__UINT_STRING
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_MENU_BAR_H__)
#if IN_FILE(__GTK_MENU_BAR_C__)
gtk_menu_bar_get_type G_GNUC_CONST
@@ -2565,9 +2055,6 @@ gtk_menu_item_set_submenu
gtk_menu_item_set_use_underline
gtk_menu_item_toggle_size_allocate
gtk_menu_item_toggle_size_request
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_menu_item_remove_submenu
-#endif
#endif
#endif
@@ -2594,9 +2081,6 @@ gtk_menu_tool_button_get_menu
gtk_menu_tool_button_get_type G_GNUC_CONST
gtk_menu_tool_button_new
gtk_menu_tool_button_new_from_stock
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_menu_tool_button_set_arrow_tooltip
-#endif
gtk_menu_tool_button_set_arrow_tooltip_markup
gtk_menu_tool_button_set_arrow_tooltip_text
gtk_menu_tool_button_set_menu
@@ -2670,12 +2154,6 @@ gtk_notebook_query_tab_label_packing
gtk_notebook_remove_page
gtk_notebook_reorder_child
gtk_notebook_set_current_page
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_notebook_set_homogeneous_tabs
-gtk_notebook_set_tab_border
-gtk_notebook_set_tab_hborder
-gtk_notebook_set_tab_vborder
-#endif
gtk_notebook_set_menu_label
gtk_notebook_set_menu_label_text
gtk_notebook_set_scrollable
@@ -2688,10 +2166,6 @@ gtk_notebook_set_tab_label_packing
gtk_notebook_set_tab_label_text
gtk_notebook_set_tab_pos
gtk_notebook_set_window_creation_hook
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_notebook_get_group_id
-gtk_notebook_set_group_id
-#endif
gtk_notebook_get_group
gtk_notebook_set_group
gtk_notebook_get_tab_reorderable
@@ -2705,29 +2179,6 @@ gtk_notebook_set_action_widget
#if IN_HEADER(__GTK_OBJECT_H__)
#if IN_FILE(__GTK_OBJECT_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_object_add_arg_type
-gtk_object_get G_GNUC_NULL_TERMINATED
-gtk_object_set G_GNUC_NULL_TERMINATED
-gtk_object_get_data
-gtk_object_get_data_by_id
-gtk_object_get_user_data
-gtk_object_new
-gtk_object_remove_data
-gtk_object_remove_data_by_id
-gtk_object_remove_no_notify
-gtk_object_remove_no_notify_by_id
-gtk_object_ref
-gtk_object_unref
-gtk_object_weakref
-gtk_object_weakunref
-gtk_object_set_data
-gtk_object_set_data_by_id
-gtk_object_set_data_by_id_full
-gtk_object_set_data_full
-gtk_object_set_user_data
-gtk_object_sink
-#endif
gtk_object_destroy
gtk_object_get_type G_GNUC_CONST
#endif
@@ -2750,26 +2201,6 @@ gtk_orientable_set_orientation
#endif
#endif
-#if IN_HEADER(__GTK_OLD_EDITABLE_H__)
-#if IN_FILE(__GTK_OLD_EDITABLE_C__)
-gtk_old_editable_changed
-gtk_old_editable_claim_selection
-gtk_old_editable_get_type G_GNUC_CONST
-#endif
-#endif
-
-#if IN_HEADER(__GTK_OPTION_MENU_H__)
-#if IN_FILE(__GTK_OPTION_MENU_C__)
-gtk_option_menu_get_history
-gtk_option_menu_get_menu
-gtk_option_menu_get_type G_GNUC_CONST
-gtk_option_menu_new
-gtk_option_menu_remove_menu
-gtk_option_menu_set_history
-gtk_option_menu_set_menu
-#endif
-#endif
-
#if IN_HEADER(__GTK_PANED_H__)
#if IN_FILE(__GTK_PANED_C__)
gtk_paned_add1
@@ -2782,9 +2213,6 @@ gtk_paned_get_type G_GNUC_CONST
gtk_paned_pack1
gtk_paned_pack2
gtk_paned_set_position
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_paned_compute_position
-#endif
#endif
#endif
@@ -2794,18 +2222,6 @@ gtk_path_bar_get_type G_GNUC_CONST
#endif
#endif
-#if IN_HEADER(__GTK_PIXMAP_H__)
-#if IN_FILE(__GTK_PIXMAP_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_pixmap_get
-gtk_pixmap_get_type G_GNUC_CONST
-gtk_pixmap_new
-gtk_pixmap_set
-gtk_pixmap_set_build_insensitive
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_PLUG_H__)
#if IN_FILE(__GTK_PLUG_C__)
gtk_plug_construct
@@ -2819,29 +2235,6 @@ gtk_plug_new_for_display
#endif
#endif
-#if IN_HEADER(__GTK_PREVIEW_H__)
-#if IN_FILE(__GTK_PREVIEW_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_preview_draw_row
-gtk_preview_get_cmap
-gtk_preview_get_info
-gtk_preview_get_type G_GNUC_CONST
-gtk_preview_get_visual
-gtk_preview_new
-gtk_preview_put
-gtk_preview_reset
-gtk_preview_set_color_cube
-gtk_preview_set_dither
-gtk_preview_set_expand
-gtk_preview_set_gamma
-gtk_preview_set_install_cmap
-gtk_preview_set_reserved
-gtk_preview_size
-gtk_preview_uninit
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_PAGE_SETUP_H__)
#if IN_FILE(__GTK_PAGE_SETUP_C__)
gtk_page_setup_get_type G_GNUC_CONST
@@ -3271,14 +2664,6 @@ gtk_progress_bar_get_text
gtk_progress_bar_get_ellipsize
gtk_progress_bar_get_type G_GNUC_CONST
gtk_progress_bar_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_progress_bar_new_with_adjustment
-gtk_progress_bar_set_bar_style
-gtk_progress_bar_set_discrete_blocks
-gtk_progress_bar_set_activity_blocks
-gtk_progress_bar_set_activity_step
-gtk_progress_bar_update
-#endif
gtk_progress_bar_pulse
gtk_progress_bar_set_fraction
gtk_progress_bar_set_orientation
@@ -3288,27 +2673,6 @@ gtk_progress_bar_set_ellipsize
#endif
#endif
-#if IN_HEADER(__GTK_PROGRESS_H__)
-#if IN_FILE(__GTK_PROGRESS_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_progress_configure
-gtk_progress_get_current_percentage
-gtk_progress_get_current_text
-gtk_progress_get_percentage_from_value
-gtk_progress_get_text_from_value
-gtk_progress_get_type G_GNUC_CONST
-gtk_progress_get_value
-gtk_progress_set_activity_mode
-gtk_progress_set_adjustment
-gtk_progress_set_format_string
-gtk_progress_set_percentage
-gtk_progress_set_show_text
-gtk_progress_set_text_alignment
-gtk_progress_set_value
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_RADIO_ACTION_H__)
#if IN_FILE(__GTK_RADIO_ACTION_C__)
gtk_radio_action_get_current_value
@@ -3396,11 +2760,6 @@ gtk_range_set_value
#if IN_HEADER(__GTK_RC_H__)
#if IN_FILE(__GTK_RC_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_rc_add_class_style
-gtk_rc_add_widget_class_style
-gtk_rc_add_widget_name_style
-#endif
#ifndef _WIN64
gtk_rc_add_default_file PRIVATE
#endif
@@ -3440,10 +2799,6 @@ gtk_rc_set_default_files_utf8
gtk_rc_style_copy
gtk_rc_style_get_type G_GNUC_CONST
gtk_rc_style_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_rc_style_ref
-gtk_rc_style_unref
-#endif
#endif
#endif
@@ -3473,10 +2828,6 @@ gtk_recent_chooser_set_limit
gtk_recent_chooser_get_limit
gtk_recent_chooser_set_show_tips
gtk_recent_chooser_get_show_tips
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_recent_chooser_set_show_numbers
-gtk_recent_chooser_get_show_numbers
-#endif
gtk_recent_chooser_set_sort_type
gtk_recent_chooser_get_sort_type
gtk_recent_chooser_set_sort_func
@@ -3550,10 +2901,6 @@ gtk_recent_manager_get_type G_GNUC_CONST
gtk_recent_manager_new
gtk_recent_manager_get_items
gtk_recent_manager_get_default
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_recent_manager_get_for_screen
-gtk_recent_manager_set_screen
-#endif
gtk_recent_manager_add_item
gtk_recent_manager_add_full
gtk_recent_manager_remove_item
@@ -3665,10 +3012,6 @@ gtk_scale_button_set_icons
gtk_scale_button_set_value
gtk_scale_button_get_adjustment
gtk_scale_button_set_adjustment
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_scale_button_get_orientation
-gtk_scale_button_set_orientation
-#endif
gtk_scale_button_get_plus_button
gtk_scale_button_get_minus_button
gtk_scale_button_get_popup
@@ -3706,7 +3049,6 @@ gtk_scrolled_window_unset_placement
#if IN_FILE(__GTK_SELECTION_C__)
gtk_selection_add_target
gtk_selection_add_targets
-gtk_selection_clear
gtk_selection_clear_targets
gtk_selection_convert
gtk_selection_data_copy
@@ -3796,24 +3138,6 @@ gtk_rc_property_parse_requisition
#endif
#endif
-#if IN_HEADER(__GTK_SIGNAL_H__)
-#if IN_FILE(__GTK_SIGNAL_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_signal_compat_matched
-gtk_signal_connect_full
-gtk_signal_connect_object_while_alive
-gtk_signal_connect_while_alive
-gtk_signal_emit
-gtk_signal_emit_by_name
-gtk_signal_emit_stop_by_name
-gtk_signal_emitv
-gtk_signal_emitv_by_name
-gtk_signal_new
-gtk_signal_newv
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_SIZE_GROUP_H__)
#if IN_FILE(__GTK_SIZE_GROUP_C__)
gtk_size_group_add_widget
@@ -3841,9 +3165,6 @@ gtk_socket_get_id
gtk_socket_get_plug_window
gtk_socket_get_type G_GNUC_CONST
gtk_socket_new
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_socket_steal
-#endif
#endif
#endif
@@ -3967,25 +3288,6 @@ gtk_text_tag_table_remove
#endif
#endif
-#if IN_HEADER(__GTK_TEXT_H__)
-#if IN_FILE(__GTK_TEXT_C__)
-gtk_text_backward_delete
-gtk_text_forward_delete
-gtk_text_freeze
-gtk_text_get_length
-gtk_text_get_point
-gtk_text_get_type G_GNUC_CONST
-gtk_text_insert
-gtk_text_new
-gtk_text_set_adjustments
-gtk_text_set_editable
-gtk_text_set_line_wrap
-gtk_text_set_point
-gtk_text_set_word_wrap
-gtk_text_thaw
-#endif
-#endif
-
#if IN_HEADER(__GTK_TEXT_BUFFER_H__)
#if IN_FILE(__GTK_TEXT_BUFFER_C__)
gtk_text_buffer_add_selection_clipboard
@@ -4327,17 +3629,6 @@ gtk_theme_engine_get_type G_GNUC_CONST
#endif
#endif
-#if IN_HEADER(__GTK_TIPS_QUERY_H__)
-#if IN_FILE(__GTK_TIPS_QUERY_C__)
-gtk_tips_query_get_type G_GNUC_CONST
-gtk_tips_query_new
-gtk_tips_query_set_caller
-gtk_tips_query_set_labels
-gtk_tips_query_start_query
-gtk_tips_query_stop_query
-#endif
-#endif
-
#if IN_HEADER(__GTK_TOGGLE_ACTION_H__)
#if IN_FILE(__GTK_TOGGLE_ACTION_C__)
gtk_toggle_action_get_active
@@ -4378,50 +3669,22 @@ gtk_toggle_tool_button_set_active
#if IN_HEADER(__GTK_TOOLBAR_H__)
#if IN_FILE(__GTK_TOOLBAR_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_toolbar_append_element
-gtk_toolbar_set_icon_size
-gtk_toolbar_unset_icon_size
-gtk_toolbar_append_item
-gtk_toolbar_prepend_element
-gtk_toolbar_prepend_item
-gtk_toolbar_insert_element
-gtk_toolbar_insert_item
-gtk_toolbar_insert_space
-gtk_toolbar_insert_stock
-gtk_toolbar_append_space
-gtk_toolbar_prepend_space
-gtk_toolbar_remove_space
-gtk_toolbar_append_widget
-gtk_toolbar_insert_widget
-gtk_toolbar_prepend_widget
-#endif
gtk_toolbar_get_drop_index
gtk_toolbar_get_icon_size
gtk_toolbar_get_item_index
gtk_toolbar_get_n_items
gtk_toolbar_get_nth_item
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_toolbar_get_orientation
-#endif
gtk_toolbar_get_relief_style
gtk_toolbar_get_show_arrow
gtk_toolbar_get_style
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_toolbar_get_tooltips
-#endif
gtk_toolbar_get_type G_GNUC_CONST
gtk_toolbar_insert
gtk_toolbar_new
gtk_toolbar_set_drop_highlight_item
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_toolbar_set_orientation
-#endif
+gtk_toolbar_set_icon_size
gtk_toolbar_set_show_arrow
gtk_toolbar_set_style
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_toolbar_set_tooltips
-#endif
+gtk_toolbar_unset_icon_size
gtk_toolbar_unset_style
#endif
#endif
@@ -4486,9 +3749,6 @@ gtk_tool_item_set_expand
gtk_tool_item_set_homogeneous
gtk_tool_item_set_is_important
gtk_tool_item_set_proxy_menu_item
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_tool_item_set_tooltip
-#endif
gtk_tool_item_set_tooltip_markup
gtk_tool_item_set_tooltip_text
gtk_tool_item_set_use_drag_window
@@ -4564,22 +3824,6 @@ gtk_tooltip_trigger_tooltip_query
#endif
#endif
-#if IN_HEADER(__GTK_TOOLTIPS_H__)
-#if IN_FILE(__GTK_TOOLTIPS_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_tooltips_data_get
-gtk_tooltips_disable
-gtk_tooltips_enable
-gtk_tooltips_force_window
-gtk_tooltips_get_info_from_tip_window
-gtk_tooltips_get_type G_GNUC_CONST
-gtk_tooltips_new
-gtk_tooltips_set_delay
-gtk_tooltips_set_tip
-#endif
-#endif
-#endif
-
#if IN_HEADER(__GTK_TRAY_ICON_H__)
#if IN_FILE(__GTK_TRAY_ICON_X11_C__)
#ifndef G_OS_WIN32
@@ -4588,27 +3832,6 @@ gtk_tray_icon_get_type G_GNUC_CONST
#endif
#endif
-#if IN_HEADER(__GTK_TREE_H__)
-#if IN_FILE(__GTK_TREE_C__)
-gtk_tree_append
-gtk_tree_child_position
-gtk_tree_clear_items
-gtk_tree_get_type G_GNUC_CONST
-gtk_tree_insert
-gtk_tree_prepend
-gtk_tree_remove_item
-gtk_tree_remove_items
-gtk_tree_select_child
-gtk_tree_select_item
-gtk_tree_set_selection_mode
-gtk_tree_set_view_lines
-gtk_tree_set_view_mode
-gtk_tree_unselect_child
-gtk_tree_unselect_item
-gtk_tree_new
-#endif
-#endif
-
#if IN_HEADER(__GTK_TREE_DND_H__)
#if IN_FILE(__GTK_TREE_DND_C__)
gtk_tree_drag_dest_drag_data_received
@@ -4623,20 +3846,6 @@ gtk_tree_set_row_drag_data
#endif
#endif
-#if IN_HEADER(__GTK_TREE_ITEM_H__)
-#if IN_FILE(__GTK_TREE_ITEM_C__)
-gtk_tree_item_collapse
-gtk_tree_item_deselect
-gtk_tree_item_expand
-gtk_tree_item_get_type G_GNUC_CONST
-gtk_tree_item_new
-gtk_tree_item_new_with_label
-gtk_tree_item_remove_subtree
-gtk_tree_item_select
-gtk_tree_item_set_subtree
-#endif
-#endif
-
#if IN_HEADER(__GTK_TREE_MODEL_H__)
#if IN_FILE(__GTK_TREE_MODEL_C__)
gtk_tree_iter_copy
@@ -4813,9 +4022,6 @@ gtk_tree_view_column_clear_attributes
gtk_tree_view_column_clicked
gtk_tree_view_column_focus_cell
gtk_tree_view_column_get_alignment
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_tree_view_column_get_cell_renderers
-#endif
gtk_tree_view_column_get_clickable
gtk_tree_view_column_get_expand
gtk_tree_view_column_get_fixed_width
@@ -4957,14 +4163,8 @@ gtk_tree_view_set_tooltip_row
gtk_tree_view_set_tooltip_cell
gtk_tree_view_set_tooltip_column
gtk_tree_view_set_vadjustment
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_tree_view_tree_to_widget_coords
-#endif
gtk_tree_view_unset_rows_drag_dest
gtk_tree_view_unset_rows_drag_source
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_tree_view_widget_to_tree_coords
-#endif
gtk_tree_view_columns_autosize
#endif
#endif
@@ -4972,16 +4172,6 @@ gtk_tree_view_columns_autosize
#if IN_HEADER(__GTK_TYPE_UTILS_H__)
#if IN_FILE(__GTK_TYPE_UTILS_C__)
gtk_identifier_get_type G_GNUC_CONST
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_type_enum_find_value
-gtk_type_enum_get_values
-gtk_type_flags_find_value
-gtk_type_flags_get_values
-gtk_type_init
-gtk_type_new
-gtk_type_unique
-gtk_type_class
-#endif
#endif
#endif
@@ -5022,12 +4212,6 @@ gtk_vbox_new
#if IN_HEADER(__GTK_VBBOX_H__)
#if IN_FILE(__GTK_VBBOX_C__)
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_vbutton_box_get_layout_default
-gtk_vbutton_box_get_spacing_default
-gtk_vbutton_box_set_layout_default
-gtk_vbutton_box_set_spacing_default
-#endif
gtk_vbutton_box_get_type G_GNUC_CONST
gtk_vbutton_box_new
#endif
@@ -5194,16 +4378,6 @@ gtk_widget_pop_colormap
gtk_widget_pop_composite_child
gtk_widget_push_colormap
gtk_widget_push_composite_child
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_widget_draw
-gtk_widget_queue_clear
-gtk_widget_queue_clear_area
-gtk_widget_set
-gtk_widget_set_uposition
-gtk_widget_set_usize
-gtk_widget_ref
-gtk_widget_unref
-#endif
gtk_widget_queue_draw
gtk_widget_queue_draw_area
gtk_widget_queue_resize
@@ -5384,9 +4558,6 @@ gtk_window_set_mnemonics_visible
gtk_window_set_modal
gtk_window_set_opacity
gtk_window_get_opacity
-#ifndef GTK_DISABLE_DEPRECATED
-gtk_window_set_policy
-#endif
gtk_window_set_position
gtk_window_set_resizable
gtk_window_set_role
diff --git a/gtk/gtkaboutdialog.c b/gtk/gtkaboutdialog.c
index affb9466ee..54e70d603c 100644
--- a/gtk/gtkaboutdialog.c
+++ b/gtk/gtkaboutdialog.c
@@ -121,8 +121,7 @@
static GdkColor default_link_color = { 0, 0, 0, 0xeeee };
static GdkColor default_visited_link_color = { 0, 0x5555, 0x1a1a, 0x8b8b };
-typedef struct _GtkAboutDialogPrivate GtkAboutDialogPrivate;
-struct _GtkAboutDialogPrivate
+struct _GtkAboutDialogPrivate
{
gchar *name;
gchar *version;
@@ -548,10 +547,11 @@ gtk_about_dialog_init (GtkAboutDialog *about)
GtkDialog *dialog = GTK_DIALOG (about);
GtkAboutDialogPrivate *priv;
GtkWidget *vbox, *hbox, *button, *close_button, *image;
+ GtkWidget *content_area, *action_area;
/* Data */
priv = GTK_ABOUT_DIALOG_GET_PRIVATE (about);
- about->private_data = priv;
+ about->priv = priv;
priv->name = NULL;
priv->version = NULL;
@@ -570,17 +570,20 @@ gtk_about_dialog_init (GtkAboutDialog *about)
priv->hovering_over_link = FALSE;
priv->wrap_license = FALSE;
+ content_area = gtk_dialog_get_content_area (dialog);
+ action_area = gtk_dialog_get_action_area (dialog);
+
gtk_dialog_set_has_separator (dialog, FALSE);
gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (dialog->vbox), 2); /* 2 * 5 + 2 = 12 */
- gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 5);
+ gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width (GTK_CONTAINER (action_area), 5);
/* Widgets */
gtk_widget_push_composite_child ();
vbox = gtk_vbox_new (FALSE, 8);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
- gtk_box_pack_start (GTK_BOX (dialog->vbox), vbox, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
priv->logo_image = gtk_image_new ();
gtk_box_pack_start (GTK_BOX (vbox), priv->logo_image, FALSE, FALSE, 0);
@@ -627,9 +630,9 @@ gtk_about_dialog_init (GtkAboutDialog *about)
image = gtk_image_new_from_stock (GTK_STOCK_ABOUT, GTK_ICON_SIZE_BUTTON);
gtk_button_set_image (GTK_BUTTON (button), image);
gtk_widget_set_no_show_all (button, TRUE);
- gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area),
- button, FALSE, TRUE, 0);
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (about)->action_area), button, TRUE);
+ gtk_box_pack_end (GTK_BOX (action_area),
+ button, FALSE, TRUE, 0);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE);
g_signal_connect (button, "clicked",
G_CALLBACK (display_credits_dialog), about);
priv->credits_button = button;
@@ -639,9 +642,9 @@ gtk_about_dialog_init (GtkAboutDialog *about)
button = gtk_button_new_from_stock (_("_License"));
gtk_widget_set_can_default (button, TRUE);
gtk_widget_set_no_show_all (button, TRUE);
- gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area),
- button, FALSE, TRUE, 0);
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (about)->action_area), button, TRUE);
+ gtk_box_pack_end (GTK_BOX (action_area),
+ button, FALSE, TRUE, 0);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE);
g_signal_connect (button, "clicked",
G_CALLBACK (display_license_dialog), about);
priv->license_button = button;
@@ -663,7 +666,7 @@ static void
gtk_about_dialog_finalize (GObject *object)
{
GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
g_free (priv->name);
g_free (priv->version);
@@ -694,7 +697,7 @@ gtk_about_dialog_set_property (GObject *object,
GParamSpec *pspec)
{
GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
switch (prop_id)
{
@@ -753,9 +756,9 @@ gtk_about_dialog_get_property (GObject *object,
GParamSpec *pspec)
{
GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-
- switch (prop_id)
+ GtkAboutDialogPrivate *priv = about->priv;
+
+ switch (prop_id)
{
case PROP_NAME:
g_value_set_string (value, priv->name);
@@ -819,7 +822,7 @@ gtk_about_dialog_get_property (GObject *object,
static void
update_website (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
gtk_widget_show (priv->website_label);
@@ -865,25 +868,6 @@ gtk_about_dialog_show (GtkWidget *widget)
}
/**
- * gtk_about_dialog_get_name:
- * @about: a #GtkAboutDialog
- *
- * Returns the program name displayed in the about dialog.
- *
- * Return value: The program name. The string is owned by the about
- * dialog and must not be modified.
- *
- * Since: 2.6
- *
- * Deprecated: 2.12: Use gtk_about_dialog_get_program_name() instead.
- */
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_name (GtkAboutDialog *about)
-{
- return gtk_about_dialog_get_program_name (about);
-}
-
-/**
* gtk_about_dialog_get_program_name:
* @about: a #GtkAboutDialog
*
@@ -901,7 +885,7 @@ gtk_about_dialog_get_program_name (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return priv->name;
}
@@ -912,7 +896,7 @@ update_name_version (GtkAboutDialog *about)
GtkAboutDialogPrivate *priv;
gchar *title_string, *name_string;
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
title_string = g_strdup_printf (_("About %s"), priv->name);
gtk_window_set_title (GTK_WINDOW (about), title_string);
@@ -931,25 +915,6 @@ update_name_version (GtkAboutDialog *about)
}
/**
- * gtk_about_dialog_set_name:
- * @about: a #GtkAboutDialog
- * @name: (allow-none): the program name
- *
- * Sets the name to display in the about dialog.
- * If this is not set, it defaults to g_get_application_name().
- *
- * Since: 2.6
- *
- * Deprecated: 2.12: Use gtk_about_dialog_set_program_name() instead.
- */
-void
-gtk_about_dialog_set_name (GtkAboutDialog *about,
- const gchar *name)
-{
- gtk_about_dialog_set_program_name (about, name);
-}
-
-/**
* gtk_about_dialog_set_program_name:
* @about: a #GtkAboutDialog
* @name: the program name
@@ -968,7 +933,8 @@ gtk_about_dialog_set_program_name (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
+
tmp = priv->name;
priv->name = g_strdup (name ? name : g_get_application_name ());
g_free (tmp);
@@ -993,13 +959,9 @@ gtk_about_dialog_set_program_name (GtkAboutDialog *about,
G_CONST_RETURN gchar *
gtk_about_dialog_get_version (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->version;
+ return about->priv->version;
}
/**
@@ -1020,7 +982,7 @@ gtk_about_dialog_set_version (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->version;
priv->version = g_strdup (version);
@@ -1045,13 +1007,9 @@ gtk_about_dialog_set_version (GtkAboutDialog *about,
G_CONST_RETURN gchar *
gtk_about_dialog_get_copyright (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->copyright;
+ return about->priv->copyright;
}
/**
@@ -1073,7 +1031,7 @@ gtk_about_dialog_set_copyright (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->copyright;
priv->copyright = g_strdup (copyright);
@@ -1108,13 +1066,9 @@ gtk_about_dialog_set_copyright (GtkAboutDialog *about,
G_CONST_RETURN gchar *
gtk_about_dialog_get_comments (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->comments;
+ return about->priv->comments;
}
/**
@@ -1136,7 +1090,7 @@ gtk_about_dialog_set_comments (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->comments;
if (comments)
@@ -1169,13 +1123,9 @@ gtk_about_dialog_set_comments (GtkAboutDialog *about,
G_CONST_RETURN gchar *
gtk_about_dialog_get_license (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->license;
+ return about->priv->license;
}
/**
@@ -1198,7 +1148,7 @@ gtk_about_dialog_set_license (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->license;
if (license)
@@ -1230,13 +1180,9 @@ gtk_about_dialog_set_license (GtkAboutDialog *about,
gboolean
gtk_about_dialog_get_wrap_license (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), FALSE);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->wrap_license;
+ return about->priv->wrap_license;
}
/**
@@ -1257,7 +1203,7 @@ gtk_about_dialog_set_wrap_license (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
wrap_license = wrap_license != FALSE;
@@ -1287,7 +1233,7 @@ gtk_about_dialog_get_website (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return priv->website_url;
}
@@ -1313,7 +1259,7 @@ gtk_about_dialog_set_website (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->website_url;
priv->website_url = g_strdup (website);
@@ -1342,7 +1288,7 @@ gtk_about_dialog_get_website_label (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return priv->website_text;
}
@@ -1366,7 +1312,7 @@ gtk_about_dialog_set_website_label (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->website_text;
priv->website_text = g_strdup (website_label);
@@ -1397,7 +1343,7 @@ gtk_about_dialog_get_authors (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return (const gchar * const *) priv->authors;
}
@@ -1405,7 +1351,7 @@ gtk_about_dialog_get_authors (GtkAboutDialog *about)
static void
update_credits_button_visibility (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv = about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
gboolean show;
show = priv->authors != NULL ||
@@ -1439,7 +1385,7 @@ gtk_about_dialog_set_authors (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->authors;
priv->authors = g_strdupv ((gchar **)authors);
@@ -1470,7 +1416,7 @@ gtk_about_dialog_get_documenters (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return (const gchar * const *)priv->documenters;
}
@@ -1494,7 +1440,7 @@ gtk_about_dialog_set_documenters (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->documenters;
priv->documenters = g_strdupv ((gchar **)documenters);
@@ -1525,7 +1471,7 @@ gtk_about_dialog_get_artists (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
return (const gchar * const *)priv->artists;
}
@@ -1549,7 +1495,7 @@ gtk_about_dialog_set_artists (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->artists;
priv->artists = g_strdupv ((gchar **)artists);
@@ -1575,13 +1521,9 @@ gtk_about_dialog_set_artists (GtkAboutDialog *about,
G_CONST_RETURN gchar *
gtk_about_dialog_get_translator_credits (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv;
-
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
-
- return priv->translator_credits;
+ return about->priv->translator_credits;
}
/**
@@ -1615,7 +1557,7 @@ gtk_about_dialog_set_translator_credits (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
tmp = priv->translator_credits;
priv->translator_credits = g_strdup (translator_credits);
@@ -1645,7 +1587,7 @@ gtk_about_dialog_get_logo (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_PIXBUF)
return gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image));
@@ -1690,7 +1632,7 @@ gtk_about_dialog_set_logo (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
g_object_freeze_notify (G_OBJECT (about));
@@ -1740,7 +1682,7 @@ gtk_about_dialog_get_logo_icon_name (GtkAboutDialog *about)
g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_ICON_NAME)
gtk_image_get_icon_name (GTK_IMAGE (priv->logo_image), &icon_name, NULL);
@@ -1767,7 +1709,7 @@ gtk_about_dialog_set_logo_icon_name (GtkAboutDialog *about,
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
- priv = (GtkAboutDialogPrivate *)about->private_data;
+ priv = about->priv;
g_object_freeze_notify (G_OBJECT (about));
@@ -1787,7 +1729,7 @@ follow_if_link (GtkAboutDialog *about,
GtkTextIter *iter)
{
GSList *tags = NULL, *tagp = NULL;
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
gchar *url = NULL;
GtkAboutDialogActivateLinkFunc email_hook, url_hook;
gpointer email_hook_data, url_hook_data;
@@ -1928,7 +1870,7 @@ set_cursor_if_appropriate (GtkAboutDialog *about,
gint x,
gint y)
{
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
GSList *tags = NULL, *tagp = NULL;
GtkTextIter iter;
gboolean hovering_over_link = FALSE;
@@ -1989,7 +1931,7 @@ text_view_visibility_notify_event (GtkWidget *text_view,
{
gint wx, wy, bx, by;
- gdk_window_get_pointer (text_view->window, &wx, &wy, NULL);
+ gdk_window_get_pointer (gtk_widget_get_window (text_view), &wx, &wy, NULL);
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
@@ -2017,7 +1959,8 @@ text_view_new (GtkAboutDialog *about,
GdkColor color;
GdkColor link_color;
GdkColor visited_link_color;
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+
+ GtkAboutDialogPrivate *priv = about->priv;
linkify_email = (!activate_email_hook_set || activate_email_hook != NULL);
linkify_urls = (!activate_url_hook_set || activate_url_hook != NULL);
@@ -2173,9 +2116,11 @@ display_credits_dialog (GtkWidget *button,
gpointer data)
{
GtkAboutDialog *about = (GtkAboutDialog *)data;
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
GtkWidget *dialog, *notebook;
GtkDialog *credits_dialog;
+ GtkWidget *content_area;
+ GtkWidget *action_area;
if (priv->credits_dialog != NULL)
{
@@ -2189,10 +2134,14 @@ display_credits_dialog (GtkWidget *button,
GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
NULL);
credits_dialog = GTK_DIALOG (dialog);
+
+ content_area = gtk_dialog_get_content_area (credits_dialog);
+ action_area = gtk_dialog_get_action_area (credits_dialog);
+
gtk_dialog_set_has_separator (credits_dialog, FALSE);
gtk_container_set_border_width (GTK_CONTAINER (credits_dialog), 5);
- gtk_box_set_spacing (GTK_BOX (credits_dialog->vbox), 2); /* 2 * 5 + 2 = 12 */
- gtk_container_set_border_width (GTK_CONTAINER (credits_dialog->action_area), 5);
+ gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width (GTK_CONTAINER (action_area), 5);
priv->credits_dialog = dialog;
gtk_window_set_default_size (GTK_WINDOW (dialog), 360, 260);
@@ -2209,7 +2158,7 @@ display_credits_dialog (GtkWidget *button,
notebook = gtk_notebook_new ();
gtk_container_set_border_width (GTK_CONTAINER (notebook), 5);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (content_area), notebook, TRUE, TRUE, 0);
if (priv->authors != NULL)
add_credits_page (about, dialog, notebook, _("Written by"), priv->authors);
@@ -2249,9 +2198,11 @@ display_license_dialog (GtkWidget *button,
gpointer data)
{
GtkAboutDialog *about = (GtkAboutDialog *)data;
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
GtkWidget *dialog, *view, *sw;
- GtkDialog *licence_dialog;
+ GtkDialog *license_dialog;
+ GtkWidget *content_area;
+ GtkWidget *action_area;
gchar *strings[2];
if (priv->license_dialog != NULL)
@@ -2261,19 +2212,23 @@ display_license_dialog (GtkWidget *button,
}
dialog = gtk_dialog_new_with_buttons (_("License"),
- GTK_WINDOW (about),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
- NULL);
- licence_dialog = GTK_DIALOG (dialog);
- gtk_dialog_set_has_separator (licence_dialog, FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (licence_dialog), 5);
- gtk_box_set_spacing (GTK_BOX (licence_dialog->vbox), 2); /* 2 * 5 + 2 = 12 */
- gtk_container_set_border_width (GTK_CONTAINER (licence_dialog->action_area), 5);
+ GTK_WINDOW (about),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
+ NULL);
+ license_dialog = GTK_DIALOG (dialog);
+
+ content_area = gtk_dialog_get_content_area (license_dialog);
+ action_area = gtk_dialog_get_action_area (license_dialog);
+
+ gtk_dialog_set_has_separator (license_dialog, FALSE);
+ gtk_container_set_border_width (GTK_CONTAINER (license_dialog), 5);
+ gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width (GTK_CONTAINER (action_area), 5);
priv->license_dialog = dialog;
gtk_window_set_default_size (GTK_WINDOW (dialog), 420, 320);
- gtk_dialog_set_default_response (licence_dialog, GTK_RESPONSE_CANCEL);
+ gtk_dialog_set_default_response (license_dialog, GTK_RESPONSE_CANCEL);
gtk_window_set_modal (GTK_WINDOW (dialog),
gtk_window_get_modal (GTK_WINDOW (about)));
@@ -2292,7 +2247,7 @@ display_license_dialog (GtkWidget *button,
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
g_signal_connect (sw, "map", G_CALLBACK (set_policy), NULL);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), sw, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (content_area), sw, TRUE, TRUE, 0);
strings[0] = priv->license;
strings[1] = NULL;
@@ -2396,7 +2351,7 @@ gtk_about_dialog_set_url_hook (GtkAboutDialogActivateLinkFunc func,
static void
close_cb (GtkAboutDialog *about)
{
- GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+ GtkAboutDialogPrivate *priv = about->priv;
if (priv->license_dialog != NULL)
{
diff --git a/gtk/gtkaboutdialog.h b/gtk/gtkaboutdialog.h
index efb50b1cf0..5bcd67c662 100644
--- a/gtk/gtkaboutdialog.h
+++ b/gtk/gtkaboutdialog.h
@@ -22,7 +22,7 @@
Author: Anders Carlsson <andersca@codefactory.se>
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -42,6 +42,7 @@ G_BEGIN_DECLS
typedef struct _GtkAboutDialog GtkAboutDialog;
typedef struct _GtkAboutDialogClass GtkAboutDialogClass;
+typedef struct _GtkAboutDialogPrivate GtkAboutDialogPrivate;
/**
* GtkAboutDialog:
@@ -54,7 +55,7 @@ struct _GtkAboutDialog
GtkDialog parent_instance;
/*< private >*/
- gpointer GSEAL (private_data);
+ GtkAboutDialogPrivate *priv;
};
struct _GtkAboutDialogClass
@@ -73,12 +74,6 @@ GtkWidget *gtk_about_dialog_new (void);
void gtk_show_about_dialog (GtkWindow *parent,
const gchar *first_property_name,
...) G_GNUC_NULL_TERMINATED;
-
-#ifndef GTK_DISABLE_DEPRECATED
-G_CONST_RETURN gchar *gtk_about_dialog_get_name (GtkAboutDialog *about);
-void gtk_about_dialog_set_name (GtkAboutDialog *about,
- const gchar *name);
-#endif /* GTK_DISABLE_DEPRECATED */
G_CONST_RETURN gchar *gtk_about_dialog_get_program_name (GtkAboutDialog *about);
void gtk_about_dialog_set_program_name (GtkAboutDialog *about,
const gchar *name);
diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c
index 9dbab6f586..b920f8ea73 100644
--- a/gtk/gtkaccelgroup.c
+++ b/gtk/gtkaccelgroup.c
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include "gtkaccelgroup.h"
+#include "gtkaccelgroupprivate.h"
#include "gtkaccellabel.h" /* For _gtk_accel_label_class_get_accelerator_label */
#include "gtkaccelmap.h"
#include "gtkintl.h"
@@ -62,6 +63,7 @@
* and mnemonics, of course.
*/
+#define GTK_ACCEL_GROUP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_ACCEL_GROUP, GtkAccelGroupPrivate))
/* --- prototypes --- */
static void gtk_accel_group_finalize (GObject *object);
@@ -171,6 +173,8 @@ gtk_accel_group_class_init (GtkAccelGroupClass *class)
G_TYPE_UINT,
GDK_TYPE_MODIFIER_TYPE,
G_TYPE_CLOSURE);
+
+ g_type_class_add_private (object_class, sizeof (GtkAccelGroupPrivate));
}
static void
@@ -179,9 +183,9 @@ gtk_accel_group_finalize (GObject *object)
GtkAccelGroup *accel_group = GTK_ACCEL_GROUP (object);
guint i;
- for (i = 0; i < accel_group->n_accels; i++)
+ for (i = 0; i < accel_group->priv->n_accels; i++)
{
- GtkAccelGroupEntry *entry = &accel_group->priv_accels[i];
+ GtkAccelGroupEntry *entry = &accel_group->priv->priv_accels[i];
if (entry->accel_path_quark)
{
@@ -195,7 +199,7 @@ gtk_accel_group_finalize (GObject *object)
g_closure_unref (entry->closure);
}
- g_free (accel_group->priv_accels);
+ g_free (accel_group->priv->priv_accels);
G_OBJECT_CLASS (gtk_accel_group_parent_class)->finalize (object);
}
@@ -211,10 +215,10 @@ gtk_accel_group_get_property (GObject *object,
switch (param_id)
{
case PROP_IS_LOCKED:
- g_value_set_boolean (value, accel_group->lock_count > 0);
+ g_value_set_boolean (value, accel_group->priv->lock_count > 0);
break;
case PROP_MODIFIER_MASK:
- g_value_set_flags (value, accel_group->modifier_mask);
+ g_value_set_flags (value, accel_group->priv->modifier_mask);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
@@ -225,11 +229,15 @@ gtk_accel_group_get_property (GObject *object,
static void
gtk_accel_group_init (GtkAccelGroup *accel_group)
{
- accel_group->lock_count = 0;
- accel_group->modifier_mask = gtk_accelerator_get_default_mod_mask ();
- accel_group->acceleratables = NULL;
- accel_group->n_accels = 0;
- accel_group->priv_accels = NULL;
+ GtkAccelGroupPrivate *priv = GTK_ACCEL_GROUP_GET_PRIVATE (accel_group);
+
+ priv->lock_count = 0;
+ priv->modifier_mask = gtk_accelerator_get_default_mod_mask ();
+ priv->acceleratables = NULL;
+ priv->n_accels = 0;
+ priv->priv_accels = NULL;
+
+ accel_group->priv = priv;
}
/**
@@ -261,7 +269,7 @@ gtk_accel_group_get_is_locked (GtkAccelGroup *accel_group)
{
g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), FALSE);
- return accel_group->lock_count > 0;
+ return accel_group->priv->lock_count > 0;
}
/**
@@ -280,7 +288,7 @@ gtk_accel_group_get_modifier_mask (GtkAccelGroup *accel_group)
{
g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), 0);
- return accel_group->modifier_mask;
+ return accel_group->priv->modifier_mask;
}
static void
@@ -294,7 +302,7 @@ accel_group_weak_ref_detach (GSList *free_list,
GtkAccelGroup *accel_group;
accel_group = slist->data;
- accel_group->acceleratables = g_slist_remove (accel_group->acceleratables, stale_object);
+ accel_group->priv->acceleratables = g_slist_remove (accel_group->priv->acceleratables, stale_object);
g_object_unref (accel_group);
}
g_slist_free (free_list);
@@ -309,10 +317,10 @@ _gtk_accel_group_attach (GtkAccelGroup *accel_group,
g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group));
g_return_if_fail (G_IS_OBJECT (object));
- g_return_if_fail (g_slist_find (accel_group->acceleratables, object) == NULL);
+ g_return_if_fail (g_slist_find (accel_group->priv->acceleratables, object) == NULL);
g_object_ref (accel_group);
- accel_group->acceleratables = g_slist_prepend (accel_group->acceleratables, object);
+ accel_group->priv->acceleratables = g_slist_prepend (accel_group->priv->acceleratables, object);
slist = g_object_get_qdata (object, quark_acceleratable_groups);
if (slist)
g_object_weak_unref (object,
@@ -333,9 +341,9 @@ _gtk_accel_group_detach (GtkAccelGroup *accel_group,
g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group));
g_return_if_fail (G_IS_OBJECT (object));
- g_return_if_fail (g_slist_find (accel_group->acceleratables, object) != NULL);
+ g_return_if_fail (g_slist_find (accel_group->priv->acceleratables, object) != NULL);
- accel_group->acceleratables = g_slist_remove (accel_group->acceleratables, object);
+ accel_group->priv->acceleratables = g_slist_remove (accel_group->priv->acceleratables, object);
slist = g_object_get_qdata (object, quark_acceleratable_groups);
g_object_weak_unref (object,
(GWeakNotify) accel_group_weak_ref_detach,
@@ -389,12 +397,12 @@ gtk_accel_group_find (GtkAccelGroup *accel_group,
g_return_val_if_fail (find_func != NULL, NULL);
g_object_ref (accel_group);
- for (i = 0; i < accel_group->n_accels; i++)
- if (find_func (&accel_group->priv_accels[i].key,
- accel_group->priv_accels[i].closure,
+ for (i = 0; i < accel_group->priv->n_accels; i++)
+ if (find_func (&accel_group->priv->priv_accels[i].key,
+ accel_group->priv->priv_accels[i].closure,
data))
{
- key = &accel_group->priv_accels[i].key;
+ key = &accel_group->priv->priv_accels[i].key;
break;
}
g_object_unref (accel_group);
@@ -421,9 +429,9 @@ gtk_accel_group_lock (GtkAccelGroup *accel_group)
{
g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group));
- accel_group->lock_count += 1;
+ accel_group->priv->lock_count += 1;
- if (accel_group->lock_count == 1) {
+ if (accel_group->priv->lock_count == 1) {
/* State change from unlocked to locked */
g_object_notify (G_OBJECT (accel_group), "is-locked");
}
@@ -439,11 +447,11 @@ void
gtk_accel_group_unlock (GtkAccelGroup *accel_group)
{
g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group));
- g_return_if_fail (accel_group->lock_count > 0);
+ g_return_if_fail (accel_group->priv->lock_count > 0);
- accel_group->lock_count -= 1;
+ accel_group->priv->lock_count -= 1;
- if (accel_group->lock_count < 1) {
+ if (accel_group->priv->lock_count < 1) {
/* State change from locked to unlocked */
g_object_notify (G_OBJECT (accel_group), "is-locked");
}
@@ -479,25 +487,25 @@ quick_accel_add (GtkAccelGroup *accel_group,
GClosure *closure,
GQuark path_quark)
{
- guint pos, i = accel_group->n_accels++;
+ guint pos, i = accel_group->priv->n_accels++;
GtkAccelGroupEntry key;
/* find position */
key.key.accel_key = accel_key;
key.key.accel_mods = accel_mods;
for (pos = 0; pos < i; pos++)
- if (bsearch_compare_accels (&key, accel_group->priv_accels + pos) < 0)
+ if (bsearch_compare_accels (&key, accel_group->priv->priv_accels + pos) < 0)
break;
/* insert at position, ref closure */
- accel_group->priv_accels = g_renew (GtkAccelGroupEntry, accel_group->priv_accels, accel_group->n_accels);
- g_memmove (accel_group->priv_accels + pos + 1, accel_group->priv_accels + pos,
- (i - pos) * sizeof (accel_group->priv_accels[0]));
- accel_group->priv_accels[pos].key.accel_key = accel_key;
- accel_group->priv_accels[pos].key.accel_mods = accel_mods;
- accel_group->priv_accels[pos].key.accel_flags = accel_flags;
- accel_group->priv_accels[pos].closure = g_closure_ref (closure);
- accel_group->priv_accels[pos].accel_path_quark = path_quark;
+ accel_group->priv->priv_accels = g_renew (GtkAccelGroupEntry, accel_group->priv->priv_accels, accel_group->priv->n_accels);
+ g_memmove (accel_group->priv->priv_accels + pos + 1, accel_group->priv->priv_accels + pos,
+ (i - pos) * sizeof (accel_group->priv->priv_accels[0]));
+ accel_group->priv->priv_accels[pos].key.accel_key = accel_key;
+ accel_group->priv->priv_accels[pos].key.accel_mods = accel_mods;
+ accel_group->priv->priv_accels[pos].key.accel_flags = accel_flags;
+ accel_group->priv->priv_accels[pos].closure = g_closure_ref (closure);
+ accel_group->priv->priv_accels[pos].accel_path_quark = path_quark;
g_closure_sink (closure);
/* handle closure invalidation and reverse lookups */
@@ -528,7 +536,7 @@ quick_accel_remove (GtkAccelGroup *accel_group,
guint pos)
{
GQuark accel_quark = 0;
- GtkAccelGroupEntry *entry = accel_group->priv_accels + pos;
+ GtkAccelGroupEntry *entry = accel_group->priv->priv_accels + pos;
guint accel_key = entry->key.accel_key;
GdkModifierType accel_mods = entry->key.accel_mods;
GClosure *closure = entry->closure;
@@ -554,9 +562,9 @@ quick_accel_remove (GtkAccelGroup *accel_group,
_gtk_accel_map_remove_group (g_quark_to_string (entry->accel_path_quark), accel_group);
/* physically remove */
- accel_group->n_accels -= 1;
+ accel_group->priv->n_accels -= 1;
g_memmove (entry, entry + 1,
- (accel_group->n_accels - pos) * sizeof (accel_group->priv_accels[0]));
+ (accel_group->priv->n_accels - pos) * sizeof (accel_group->priv->priv_accels[0]));
/* and notify */
if (accel_quark)
@@ -577,24 +585,24 @@ quick_accel_find (GtkAccelGroup *accel_group,
*count_p = 0;
- if (!accel_group->n_accels)
+ if (!accel_group->priv->n_accels)
return NULL;
key.key.accel_key = accel_key;
key.key.accel_mods = accel_mods;
- entry = bsearch (&key, accel_group->priv_accels, accel_group->n_accels,
- sizeof (accel_group->priv_accels[0]), bsearch_compare_accels);
+ entry = bsearch (&key, accel_group->priv->priv_accels, accel_group->priv->n_accels,
+ sizeof (accel_group->priv->priv_accels[0]), bsearch_compare_accels);
if (!entry)
return NULL;
/* step back to the first member */
- for (; entry > accel_group->priv_accels; entry--)
+ for (; entry > accel_group->priv->priv_accels; entry--)
if (entry[-1].key.accel_key != accel_key ||
entry[-1].key.accel_mods != accel_mods)
break;
/* count equal members */
- for (; entry + *count_p < accel_group->priv_accels + accel_group->n_accels; (*count_p)++)
+ for (; entry + *count_p < accel_group->priv->priv_accels + accel_group->priv->n_accels; (*count_p)++)
if (entry[*count_p].key.accel_key != accel_key ||
entry[*count_p].key.accel_mods != accel_mods)
break;
@@ -708,8 +716,8 @@ gtk_accel_group_disconnect (GtkAccelGroup *accel_group,
g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), FALSE);
- for (i = 0; i < accel_group->n_accels; i++)
- if (accel_group->priv_accels[i].closure == closure || !closure)
+ for (i = 0; i < accel_group->priv->n_accels; i++)
+ if (accel_group->priv->priv_accels[i].closure == closure)
{
g_object_ref (accel_group);
quick_accel_remove (accel_group, i);
@@ -778,10 +786,10 @@ _gtk_accel_group_reconnect (GtkAccelGroup *accel_group,
g_object_ref (accel_group);
- for (i = 0; i < accel_group->n_accels; i++)
- if (accel_group->priv_accels[i].accel_path_quark == accel_path_quark)
+ for (i = 0; i < accel_group->priv->n_accels; i++)
+ if (accel_group->priv->priv_accels[i].accel_path_quark == accel_path_quark)
{
- GClosure *closure = g_closure_ref (accel_group->priv_accels[i].closure);
+ GClosure *closure = g_closure_ref (accel_group->priv->priv_accels[i].closure);
clist = g_slist_prepend (clist, closure);
}
@@ -799,6 +807,14 @@ _gtk_accel_group_reconnect (GtkAccelGroup *accel_group,
g_object_unref (accel_group);
}
+GSList*
+_gtk_accel_group_get_accelerables (GtkAccelGroup *accel_group)
+{
+ g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), NULL);
+
+ return accel_group->priv->acceleratables;
+}
+
/**
* gtk_accel_group_query:
* @accel_group: the accelerator group to query
diff --git a/gtk/gtkaccelgroup.h b/gtk/gtkaccelgroup.h
index b1e874491e..b00b039202 100644
--- a/gtk/gtkaccelgroup.h
+++ b/gtk/gtkaccelgroup.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -57,10 +57,11 @@ typedef enum
/* --- typedefs & structures --- */
-typedef struct _GtkAccelGroup GtkAccelGroup;
-typedef struct _GtkAccelGroupClass GtkAccelGroupClass;
-typedef struct _GtkAccelKey GtkAccelKey;
-typedef struct _GtkAccelGroupEntry GtkAccelGroupEntry;
+typedef struct _GtkAccelGroup GtkAccelGroup;
+typedef struct _GtkAccelGroupClass GtkAccelGroupClass;
+typedef struct _GtkAccelGroupPrivate GtkAccelGroupPrivate;
+typedef struct _GtkAccelKey GtkAccelKey;
+typedef struct _GtkAccelGroupEntry GtkAccelGroupEntry;
typedef gboolean (*GtkAccelGroupActivate) (GtkAccelGroup *accel_group,
GObject *acceleratable,
guint keyval,
@@ -85,13 +86,8 @@ typedef gboolean (*GtkAccelGroupFindFunc) (GtkAccelKey *key,
*/
struct _GtkAccelGroup
{
- GObject parent;
-
- guint GSEAL (lock_count);
- GdkModifierType GSEAL (modifier_mask);
- GSList *GSEAL (acceleratables);
- guint GSEAL (n_accels);
- GtkAccelGroupEntry *GSEAL (priv_accels);
+ GObject parent;
+ GtkAccelGroupPrivate *priv;
};
struct _GtkAccelGroupClass
@@ -183,6 +179,7 @@ GtkAccelGroupEntry* gtk_accel_group_query (GtkAccelGroup *accel_group,
void _gtk_accel_group_reconnect (GtkAccelGroup *accel_group,
GQuark accel_path_quark);
+GSList* _gtk_accel_group_get_accelerables (GtkAccelGroup *accel_group);
struct _GtkAccelGroupEntry
{
@@ -192,24 +189,6 @@ struct _GtkAccelGroupEntry
};
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * gtk_accel_group_ref:
- *
- * Deprecated equivalent of g_object_ref().
- *
- * Returns: the accel group that was passed in
- */
-#define gtk_accel_group_ref g_object_ref
-
-/**
- * gtk_accel_group_unref:
- *
- * Deprecated equivalent of g_object_unref().
- */
-#define gtk_accel_group_unref g_object_unref
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
diff --git a/gtk/gtkaccelgroupprivate.h b/gtk/gtkaccelgroupprivate.h
new file mode 100644
index 0000000000..af42d13b3f
--- /dev/null
+++ b/gtk/gtkaccelgroupprivate.h
@@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* GTK - The GIMP Toolkit
+ * Copyright (C) Javier Jardón <jjardon@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser 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
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_ACCEL_GROUP_PRIVATE_H__
+#define __GTK_ACCEL_GROUP_PRIVATE_H__
+
+
+#define GTK_ACCEL_GROUP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_ACCEL_GROUP, GtkAccelGroupPrivate))
+
+struct _GtkAccelGroupPrivate
+{
+ guint lock_count;
+ GdkModifierType modifier_mask;
+ GSList *acceleratables;
+ guint n_accels;
+ GtkAccelGroupEntry *priv_accels;
+};
+
+#endif /* __GTK_ACCEL_GROUP_PRIVATE_H__ */
diff --git a/gtk/gtkaccellabel.c b/gtk/gtkaccellabel.c
index da982bddf0..c02be06cc5 100644
--- a/gtk/gtkaccellabel.c
+++ b/gtk/gtkaccellabel.c
@@ -99,6 +99,16 @@ enum {
PROP_ACCEL_WIDGET
};
+struct _GtkAccelLabelPrivate
+{
+ guint accel_padding; /* should be style property? */
+ GtkWidget *accel_widget; /* done*/
+ GClosure *accel_closure; /* has set function */
+ GtkAccelGroup *accel_group; /* set by set_accel_closure() */
+ gchar *accel_string; /* has set function */
+ guint16 accel_string_width; /* seems to be private */
+};
+
static void gtk_accel_label_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -115,6 +125,7 @@ static gboolean gtk_accel_label_expose_event (GtkWidget *widget,
GdkEventExpose *event);
static const gchar *gtk_accel_label_get_string (GtkAccelLabel *accel_label);
+#define GTK_ACCEL_LABEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_ACCEL_LABEL, GtkAccelLabelPrivate))
G_DEFINE_TYPE (GtkAccelLabel, gtk_accel_label, GTK_TYPE_LABEL)
@@ -186,6 +197,8 @@ gtk_accel_label_class_init (GtkAccelLabelClass *class)
P_("The widget to be monitored for accelerator changes"),
GTK_TYPE_WIDGET,
GTK_PARAM_READWRITE));
+
+ g_type_class_add_private (gobject_class, sizeof (GtkAccelLabelPrivate));
}
static void
@@ -225,10 +238,10 @@ gtk_accel_label_get_property (GObject *object,
switch (prop_id)
{
case PROP_ACCEL_CLOSURE:
- g_value_set_boxed (value, accel_label->accel_closure);
+ g_value_set_boxed (value, accel_label->priv->accel_closure);
break;
case PROP_ACCEL_WIDGET:
- g_value_set_object (value, accel_label->accel_widget);
+ g_value_set_object (value, accel_label->priv->accel_widget);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -239,11 +252,15 @@ gtk_accel_label_get_property (GObject *object,
static void
gtk_accel_label_init (GtkAccelLabel *accel_label)
{
- accel_label->accel_padding = 3;
- accel_label->accel_widget = NULL;
- accel_label->accel_closure = NULL;
- accel_label->accel_group = NULL;
- accel_label->accel_string = NULL;
+ GtkAccelLabelPrivate *priv = GTK_ACCEL_LABEL_GET_PRIVATE (accel_label);
+
+ priv->accel_padding = 3;
+ priv->accel_widget = NULL;
+ priv->accel_closure = NULL;
+ priv->accel_group = NULL;
+ priv->accel_string = NULL;
+
+ accel_label->priv = priv;
}
/**
@@ -284,8 +301,8 @@ gtk_accel_label_finalize (GObject *object)
{
GtkAccelLabel *accel_label = GTK_ACCEL_LABEL (object);
- g_free (accel_label->accel_string);
-
+ g_free (accel_label->priv->accel_string);
+
G_OBJECT_CLASS (gtk_accel_label_parent_class)->finalize (object);
}
@@ -303,7 +320,7 @@ gtk_accel_label_get_accel_widget (GtkAccelLabel *accel_label)
{
g_return_val_if_fail (GTK_IS_ACCEL_LABEL (accel_label), NULL);
- return accel_label->accel_widget;
+ return accel_label->priv->accel_widget;
}
/**
@@ -320,9 +337,9 @@ guint
gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label)
{
g_return_val_if_fail (GTK_IS_ACCEL_LABEL (accel_label), 0);
-
- return (accel_label->accel_string_width +
- (accel_label->accel_string_width ? accel_label->accel_padding : 0));
+
+ return (accel_label->priv->accel_string_width +
+ (accel_label->priv->accel_string_width ? accel_label->priv->accel_padding : 0));
}
static void
@@ -337,8 +354,8 @@ gtk_accel_label_size_request (GtkWidget *widget,
layout = gtk_widget_create_pango_layout (widget, gtk_accel_label_get_string (accel_label));
pango_layout_get_pixel_size (layout, &width, NULL);
- accel_label->accel_string_width = width;
-
+ accel_label->priv->accel_string_width = width;
+
g_object_unref (layout);
}
@@ -365,13 +382,17 @@ gtk_accel_label_expose_event (GtkWidget *widget,
direction = gtk_widget_get_direction (widget);
- if (gtk_widget_is_drawable (widget))
+ if (gtk_widget_is_drawable (widget))
{
guint ac_width;
-
+ GtkAllocation allocation;
+ GtkRequisition requisition;
+
ac_width = gtk_accel_label_get_accel_width (accel_label);
-
- if (widget->allocation.width >= widget->requisition.width + ac_width)
+ gtk_widget_get_allocation (widget, &allocation);
+ gtk_widget_size_request (widget, &requisition);
+
+ if (allocation.width >= requisition.width + ac_width)
{
PangoLayout *label_layout;
PangoLayout *accel_layout;
@@ -379,12 +400,13 @@ gtk_accel_label_expose_event (GtkWidget *widget,
gint x;
gint y;
-
+ gint xpad;
+
label_layout = gtk_label_get_layout (GTK_LABEL (accel_label));
if (direction == GTK_TEXT_DIR_RTL)
- widget->allocation.x += ac_width;
- widget->allocation.width -= ac_width;
+ allocation.x += ac_width;
+ allocation.width -= ac_width;
if (gtk_label_get_ellipsize (label))
pango_layout_set_width (label_layout,
pango_layout_get_width (label_layout)
@@ -393,17 +415,19 @@ gtk_accel_label_expose_event (GtkWidget *widget,
if (GTK_WIDGET_CLASS (gtk_accel_label_parent_class)->expose_event)
GTK_WIDGET_CLASS (gtk_accel_label_parent_class)->expose_event (widget, event);
if (direction == GTK_TEXT_DIR_RTL)
- widget->allocation.x -= ac_width;
- widget->allocation.width += ac_width;
+ allocation.x -= ac_width;
+ allocation.width += ac_width;
if (gtk_label_get_ellipsize (label))
pango_layout_set_width (label_layout,
pango_layout_get_width (label_layout)
+ ac_width * PANGO_SCALE);
-
+
+ gtk_misc_get_padding (misc, &xpad, NULL);
+
if (direction == GTK_TEXT_DIR_RTL)
- x = widget->allocation.x + misc->xpad;
+ x = allocation.x + xpad;
else
- x = widget->allocation.x + widget->allocation.width - misc->xpad - ac_width;
+ x = allocation.x + allocation.width - xpad - ac_width;
gtk_label_get_layout_offsets (GTK_LABEL (accel_label), NULL, &y);
@@ -411,8 +435,8 @@ gtk_accel_label_expose_event (GtkWidget *widget,
y += get_first_baseline (label_layout) - get_first_baseline (accel_layout);
- gtk_paint_layout (widget->style,
- widget->window,
+ gtk_paint_layout (gtk_widget_get_style (widget),
+ gtk_widget_get_window (widget),
gtk_widget_get_state (widget),
FALSE,
&event->area,
@@ -440,9 +464,9 @@ refetch_widget_accel_closure (GtkAccelLabel *accel_label)
GList *clist, *list;
g_return_if_fail (GTK_IS_ACCEL_LABEL (accel_label));
- g_return_if_fail (GTK_IS_WIDGET (accel_label->accel_widget));
+ g_return_if_fail (GTK_IS_WIDGET (accel_label->priv->accel_widget));
- clist = gtk_widget_list_accel_closures (accel_label->accel_widget);
+ clist = gtk_widget_list_accel_closures (accel_label->priv->accel_widget);
for (list = clist; list; list = list->next)
{
/* we just take the first closure used */
@@ -468,21 +492,21 @@ gtk_accel_label_set_accel_widget (GtkAccelLabel *accel_label,
if (accel_widget)
g_return_if_fail (GTK_IS_WIDGET (accel_widget));
- if (accel_widget != accel_label->accel_widget)
+ if (accel_widget != accel_label->priv->accel_widget)
{
- if (accel_label->accel_widget)
+ if (accel_label->priv->accel_widget)
{
gtk_accel_label_set_accel_closure (accel_label, NULL);
- g_signal_handlers_disconnect_by_func (accel_label->accel_widget,
+ g_signal_handlers_disconnect_by_func (accel_label->priv->accel_widget,
refetch_widget_accel_closure,
accel_label);
- g_object_unref (accel_label->accel_widget);
+ g_object_unref (accel_label->priv->accel_widget);
}
- accel_label->accel_widget = accel_widget;
- if (accel_label->accel_widget)
+ accel_label->priv->accel_widget = accel_widget;
+ if (accel_label->priv->accel_widget)
{
- g_object_ref (accel_label->accel_widget);
- g_signal_connect_object (accel_label->accel_widget, "accel-closures-changed",
+ g_object_ref (accel_label->priv->accel_widget);
+ g_signal_connect_object (accel_label->priv->accel_widget, "accel-closures-changed",
G_CALLBACK (refetch_widget_accel_closure),
accel_label, G_CONNECT_SWAPPED);
refetch_widget_accel_closure (accel_label);
@@ -494,10 +518,10 @@ gtk_accel_label_set_accel_widget (GtkAccelLabel *accel_label,
static void
gtk_accel_label_reset (GtkAccelLabel *accel_label)
{
- if (accel_label->accel_string)
+ if (accel_label->priv->accel_string)
{
- g_free (accel_label->accel_string);
- accel_label->accel_string = NULL;
+ g_free (accel_label->priv->accel_string);
+ accel_label->priv->accel_string = NULL;
}
gtk_widget_queue_resize (GTK_WIDGET (accel_label));
@@ -510,7 +534,7 @@ check_accel_changed (GtkAccelGroup *accel_group,
GClosure *accel_closure,
GtkAccelLabel *accel_label)
{
- if (accel_closure == accel_label->accel_closure)
+ if (accel_closure == accel_label->priv->accel_closure)
gtk_accel_label_reset (accel_label);
}
@@ -530,22 +554,22 @@ gtk_accel_label_set_accel_closure (GtkAccelLabel *accel_label,
if (accel_closure)
g_return_if_fail (gtk_accel_group_from_accel_closure (accel_closure) != NULL);
- if (accel_closure != accel_label->accel_closure)
+ if (accel_closure != accel_label->priv->accel_closure)
{
- if (accel_label->accel_closure)
+ if (accel_label->priv->accel_closure)
{
- g_signal_handlers_disconnect_by_func (accel_label->accel_group,
+ g_signal_handlers_disconnect_by_func (accel_label->priv->accel_group,
check_accel_changed,
accel_label);
- accel_label->accel_group = NULL;
- g_closure_unref (accel_label->accel_closure);
+ accel_label->priv->accel_group = NULL;
+ g_closure_unref (accel_label->priv->accel_closure);
}
- accel_label->accel_closure = accel_closure;
- if (accel_label->accel_closure)
+ accel_label->priv->accel_closure = accel_closure;
+ if (accel_label->priv->accel_closure)
{
- g_closure_ref (accel_label->accel_closure);
- accel_label->accel_group = gtk_accel_group_from_accel_closure (accel_closure);
- g_signal_connect_object (accel_label->accel_group, "accel-changed",
+ g_closure_ref (accel_label->priv->accel_closure);
+ accel_label->priv->accel_group = gtk_accel_group_from_accel_closure (accel_closure);
+ g_signal_connect_object (accel_label->priv->accel_group, "accel-changed",
G_CALLBACK (check_accel_changed),
accel_label, 0);
}
@@ -565,10 +589,10 @@ find_accel (GtkAccelKey *key,
static const gchar *
gtk_accel_label_get_string (GtkAccelLabel *accel_label)
{
- if (!accel_label->accel_string)
+ if (!accel_label->priv->accel_string)
gtk_accel_label_refetch (accel_label);
- return accel_label->accel_string;
+ return accel_label->priv->accel_string;
}
/* Underscores in key names are better displayed as spaces
@@ -838,19 +862,19 @@ gtk_accel_label_refetch (GtkAccelLabel *accel_label)
g_return_val_if_fail (GTK_IS_ACCEL_LABEL (accel_label), FALSE);
- if (accel_label->accel_string)
+ if (accel_label->priv->accel_string)
{
- g_free (accel_label->accel_string);
- accel_label->accel_string = NULL;
+ g_free (accel_label->priv->accel_string);
+ accel_label->priv->accel_string = NULL;
}
g_object_get (gtk_widget_get_settings (GTK_WIDGET (accel_label)),
"gtk-enable-accels", &enable_accels,
NULL);
- if (enable_accels && accel_label->accel_closure)
+ if (enable_accels && accel_label->priv->accel_closure)
{
- GtkAccelKey *key = gtk_accel_group_find (accel_label->accel_group, find_accel, accel_label->accel_closure);
+ GtkAccelKey *key = gtk_accel_group_find (accel_label->priv->accel_group, find_accel, accel_label->priv->accel_closure);
if (key && key->accel_flags & GTK_ACCEL_VISIBLE)
{
@@ -861,15 +885,15 @@ gtk_accel_label_refetch (GtkAccelLabel *accel_label)
tmp = _gtk_accel_label_class_get_accelerator_label (klass,
key->accel_key,
key->accel_mods);
- accel_label->accel_string = g_strconcat (" ", tmp, NULL);
+ accel_label->priv->accel_string = g_strconcat (" ", tmp, NULL);
g_free (tmp);
}
- if (!accel_label->accel_string)
- accel_label->accel_string = g_strdup ("-/-");
+ if (!accel_label->priv->accel_string)
+ accel_label->priv->accel_string = g_strdup ("-/-");
}
- if (!accel_label->accel_string)
- accel_label->accel_string = g_strdup ("");
+ if (!accel_label->priv->accel_string)
+ accel_label->priv->accel_string = g_strdup ("");
gtk_widget_queue_resize (GTK_WIDGET (accel_label));
diff --git a/gtk/gtkaccellabel.h b/gtk/gtkaccellabel.h
index 9ae54b2f8f..3ad0a37c7a 100644
--- a/gtk/gtkaccellabel.h
+++ b/gtk/gtkaccellabel.h
@@ -27,7 +27,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -48,8 +48,9 @@ G_BEGIN_DECLS
#define GTK_ACCEL_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ACCEL_LABEL, GtkAccelLabelClass))
-typedef struct _GtkAccelLabel GtkAccelLabel;
-typedef struct _GtkAccelLabelClass GtkAccelLabelClass;
+typedef struct _GtkAccelLabel GtkAccelLabel;
+typedef struct _GtkAccelLabelClass GtkAccelLabelClass;
+typedef struct _GtkAccelLabelPrivate GtkAccelLabelPrivate;
/**
* GtkAccelLabel:
@@ -60,14 +61,7 @@ typedef struct _GtkAccelLabelClass GtkAccelLabelClass;
struct _GtkAccelLabel
{
GtkLabel label;
-
- guint GSEAL (gtk_reserved);
- guint GSEAL (accel_padding); /* should be style property? */
- GtkWidget *GSEAL (accel_widget); /* done*/
- GClosure *GSEAL (accel_closure); /* has set function */
- GtkAccelGroup *GSEAL (accel_group); /* set by set_accel_closure() */
- gchar *GSEAL (accel_string); /* has set function */
- guint16 GSEAL (accel_string_width); /* seems to be private */
+ GtkAccelLabelPrivate *priv;
};
struct _GtkAccelLabelClass
@@ -90,9 +84,6 @@ struct _GtkAccelLabelClass
void (*_gtk_reserved4) (void);
};
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_accel_label_accelerator_width gtk_accel_label_get_accel_width
-#endif /* GTK_DISABLE_DEPRECATED */
GType gtk_accel_label_get_type (void) G_GNUC_CONST;
GtkWidget* gtk_accel_label_new (const gchar *string);
diff --git a/gtk/gtkaccelmap.c b/gtk/gtkaccelmap.c
index b9f41ff61e..31028688f4 100644
--- a/gtk/gtkaccelmap.c
+++ b/gtk/gtkaccelmap.c
@@ -319,7 +319,7 @@ internal_change_entry (const gchar *accel_path,
{
GtkAccelGroup *group = slist->data;
- for (node = group->acceleratables; node; node = node->next)
+ for (node = _gtk_accel_group_get_accelerables (group); node; node = node->next)
g_hash_table_insert (window_hm, node->data, node->data);
}
g_slist_free (group_list);
@@ -367,7 +367,7 @@ internal_change_entry (const gchar *accel_path,
for (i = 0; i < n; i++)
{
seen_accel = TRUE;
- removable = !group->lock_count && !(ag_entry[i].key.accel_flags & GTK_ACCEL_LOCKED);
+ removable = !gtk_accel_group_get_is_locked (group) && !(ag_entry[i].key.accel_flags & GTK_ACCEL_LOCKED);
if (!removable)
goto break_loop_step5;
if (ag_entry[i].accel_path_quark)
diff --git a/gtk/gtkaccelmap.h b/gtk/gtkaccelmap.h
index 208704920b..0a3937ac1b 100644
--- a/gtk/gtkaccelmap.h
+++ b/gtk/gtkaccelmap.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkaccessible.h b/gtk/gtkaccessible.h
index a9d21bcdd6..e7703c5abe 100644
--- a/gtk/gtkaccessible.h
+++ b/gtk/gtkaccessible.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c
index 1cb1cecaae..4425696e19 100644
--- a/gtk/gtkaction.c
+++ b/gtk/gtkaction.c
@@ -960,63 +960,11 @@ _gtk_action_remove_from_proxy_list (GtkAction *action,
}
/**
- * gtk_action_connect_proxy:
- * @action: the action object
- * @proxy: the proxy widget
- *
- * Connects a widget to an action object as a proxy. Synchronises
- * various properties of the action with the widget (such as label
- * text, icon, tooltip, etc), and attaches a callback so that the
- * action gets activated when the proxy widget does.
- *
- * If the widget is already connected to an action, it is disconnected
- * first.
- *
- * Since: 2.4
- *
- * Deprecated: 2.16: Use gtk_activatable_set_related_action() instead.
- */
-void
-gtk_action_connect_proxy (GtkAction *action,
- GtkWidget *proxy)
-{
- g_return_if_fail (GTK_IS_ACTION (action));
- g_return_if_fail (GTK_IS_WIDGET (proxy));
- g_return_if_fail (GTK_IS_ACTIVATABLE (proxy));
-
- gtk_activatable_set_use_action_appearance (GTK_ACTIVATABLE (proxy), TRUE);
-
- gtk_activatable_set_related_action (GTK_ACTIVATABLE (proxy), action);
-}
-
-/**
- * gtk_action_disconnect_proxy:
- * @action: the action object
- * @proxy: the proxy widget
- *
- * Disconnects a proxy widget from an action.
- * Does <emphasis>not</emphasis> destroy the widget, however.
- *
- * Since: 2.4
- *
- * Deprecated: 2.16: Use gtk_activatable_set_related_action() instead.
- */
-void
-gtk_action_disconnect_proxy (GtkAction *action,
- GtkWidget *proxy)
-{
- g_return_if_fail (GTK_IS_ACTION (action));
- g_return_if_fail (GTK_IS_WIDGET (proxy));
-
- gtk_activatable_set_related_action (GTK_ACTIVATABLE (proxy), NULL);
-}
-
-/**
* gtk_action_get_proxies:
* @action: the action object
*
* Returns the proxy widgets for an action.
- * See also gtk_widget_get_action().
+ * See also gtk_activatable_get_related_action().
*
* Return value: (element-type GtkWidget) (transfer none): a #GSList of proxy widgets. The list is owned by GTK+
* and must not be modified.
@@ -1031,32 +979,6 @@ gtk_action_get_proxies (GtkAction *action)
return action->private_data->proxies;
}
-
-/**
- * gtk_widget_get_action:
- * @widget: a #GtkWidget
- *
- * Returns the #GtkAction that @widget is a proxy for.
- * See also gtk_action_get_proxies().
- *
- * Returns: the action that a widget is a proxy for, or
- * %NULL, if it is not attached to an action.
- *
- * Since: 2.10
- *
- * Deprecated: 2.16: Use gtk_activatable_get_related_action() instead.
- */
-GtkAction*
-gtk_widget_get_action (GtkWidget *widget)
-{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- if (GTK_IS_ACTIVATABLE (widget))
- return gtk_activatable_get_related_action (GTK_ACTIVATABLE (widget));
-
- return NULL;
-}
-
/**
* gtk_action_get_name:
* @action: the action object
@@ -1695,62 +1617,6 @@ gtk_action_get_gicon (GtkAction *action)
return action->private_data->gicon;
}
-/**
- * gtk_action_block_activate_from:
- * @action: the action object
- * @proxy: a proxy widget
- *
- * Disables calls to the gtk_action_activate()
- * function by signals on the given proxy widget. This is used to
- * break notification loops for things like check or radio actions.
- *
- * This function is intended for use by action implementations.
- *
- * Since: 2.4
- *
- * Deprecated: 2.16: activatables are now responsible for activating the
- * action directly so this doesnt apply anymore.
- */
-void
-gtk_action_block_activate_from (GtkAction *action,
- GtkWidget *proxy)
-{
- g_return_if_fail (GTK_IS_ACTION (action));
-
- g_signal_handlers_block_by_func (proxy, G_CALLBACK (gtk_action_activate),
- action);
-
- gtk_action_block_activate (action);
-}
-
-/**
- * gtk_action_unblock_activate_from:
- * @action: the action object
- * @proxy: a proxy widget
- *
- * Re-enables calls to the gtk_action_activate()
- * function by signals on the given proxy widget. This undoes the
- * blocking done by gtk_action_block_activate_from().
- *
- * This function is intended for use by action implementations.
- *
- * Since: 2.4
- *
- * Deprecated: 2.16: activatables are now responsible for activating the
- * action directly so this doesnt apply anymore.
- */
-void
-gtk_action_unblock_activate_from (GtkAction *action,
- GtkWidget *proxy)
-{
- g_return_if_fail (GTK_IS_ACTION (action));
-
- g_signal_handlers_unblock_by_func (proxy, G_CALLBACK (gtk_action_activate),
- action);
-
- gtk_action_unblock_activate (action);
-}
-
static void
closure_accel_activate (GClosure *closure,
GValue *return_value,
diff --git a/gtk/gtkaction.h b/gtk/gtkaction.h
index 08e051af93..999c38f6e8 100644
--- a/gtk/gtkaction.h
+++ b/gtk/gtkaction.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -110,18 +110,6 @@ void gtk_action_connect_accelerator (GtkAction *action);
void gtk_action_disconnect_accelerator (GtkAction *action);
G_CONST_RETURN gchar *gtk_action_get_accel_path (GtkAction *action);
GClosure *gtk_action_get_accel_closure (GtkAction *action);
-
-#ifndef GTK_DISABLE_DEPRECATED
-GtkAction *gtk_widget_get_action (GtkWidget *widget);
-void gtk_action_connect_proxy (GtkAction *action,
- GtkWidget *proxy);
-void gtk_action_disconnect_proxy (GtkAction *action,
- GtkWidget *proxy);
-void gtk_action_block_activate_from (GtkAction *action,
- GtkWidget *proxy);
-void gtk_action_unblock_activate_from (GtkAction *action,
- GtkWidget *proxy);
-#endif /* GTK_DISABLE_DEPRECATED */
void gtk_action_block_activate (GtkAction *action);
void gtk_action_unblock_activate (GtkAction *action);
diff --git a/gtk/gtkactiongroup.h b/gtk/gtkactiongroup.h
index 1d8b388b1f..30d7542741 100644
--- a/gtk/gtkactiongroup.h
+++ b/gtk/gtkactiongroup.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkactivatable.h b/gtk/gtkactivatable.h
index 45d1decd46..705bfa4e80 100644
--- a/gtk/gtkactivatable.h
+++ b/gtk/gtkactivatable.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkadjustment.h b/gtk/gtkadjustment.h
index f5ead22509..39a6f86293 100644
--- a/gtk/gtkadjustment.h
+++ b/gtk/gtkadjustment.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkalignment.h b/gtk/gtkalignment.h
index 4fad3027e3..9a37191d93 100644
--- a/gtk/gtkalignment.h
+++ b/gtk/gtkalignment.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkarrow.h b/gtk/gtkarrow.h
index 010e3ef227..3140d588e6 100644
--- a/gtk/gtkarrow.h
+++ b/gtk/gtkarrow.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkaspectframe.h b/gtk/gtkaspectframe.h
index d78ee87e3c..bb98f62ba4 100644
--- a/gtk/gtkaspectframe.h
+++ b/gtk/gtkaspectframe.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkassistant.h b/gtk/gtkassistant.h
index 5f26325bfa..47fd16ba86 100644
--- a/gtk/gtkassistant.h
+++ b/gtk/gtkassistant.h
@@ -23,7 +23,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkbbox.c b/gtk/gtkbbox.c
index 6272e0e942..5417be777b 100644
--- a/gtk/gtkbbox.c
+++ b/gtk/gtkbbox.c
@@ -262,55 +262,6 @@ gtk_button_box_get_child_property (GtkContainer *container,
}
}
-/* set per widget values for spacing, child size and child internal padding */
-
-/**
- * gtk_button_box_set_child_size:
- * @widget: a #GtkButtonBox
- * @min_width: a default width for buttons in @widget
- * @min_height: a default height for buttons in @widget
- *
- * Sets a new default size for the children of a given button box.
- *
- * Deprecated: This is not supported anymore and can only be set through the
- * theme changing the style properties:
- * "<link linkend="GtkButtonBox--s-child-min-width">child-min-width</link>"
- * and
- * "<link linkend="GtkButtonBox--s-child-min-height">child-min-height</link>"
- * instead.
- */
-void
-gtk_button_box_set_child_size (GtkButtonBox *widget,
- gint width, gint height)
-{
- g_return_if_fail (GTK_IS_BUTTON_BOX (widget));
-
- widget->child_min_width = width;
- widget->child_min_height = height;
-}
-
-/**
- * gtk_button_box_set_child_ipadding:
- * @widget: a #GtkButtonBox
- * @ipad_x: the horizontal padding that should be used by each button in @widget
- * @ipad_y: the vertical padding that should be used by each button in @widget
- *
- * Changes the amount of internal padding used by all buttons in a given button
- * box.
- *
- * Deprecated: Use the style properties
- * <literal>"child-internal-pad-x/-y"</literal> instead.
- */
-void
-gtk_button_box_set_child_ipadding (GtkButtonBox *widget,
- gint ipad_x, gint ipad_y)
-{
- g_return_if_fail (GTK_IS_BUTTON_BOX (widget));
-
- widget->child_ipad_x = ipad_x;
- widget->child_ipad_y = ipad_y;
-}
-
/**
* gtk_button_box_set_layout:
* @widget: a #GtkButtonBox
@@ -334,59 +285,6 @@ gtk_button_box_set_layout (GtkButtonBox *widget,
}
}
-
-/* get per widget values for spacing, child size and child internal padding */
-
-/**
- * gtk_button_box_get_child_size:
- * @widget: a #GtkButtonBox
- * @min_width: the width of the buttons contained by @widget
- * @min_height: the height of the buttons contained by @widget
- *
- * Retrieves the current width and height of all child widgets in a button box.
- * @min_width and @min_height are filled with those values, respectively.
- *
- * Deprecated: Use the style properties
- * <literal>"child-min-width/-height"</literal> instead.
- */
-void
-gtk_button_box_get_child_size (GtkButtonBox *widget,
- gint *width, gint *height)
-{
- g_return_if_fail (GTK_IS_BUTTON_BOX (widget));
- g_return_if_fail (width != NULL);
- g_return_if_fail (height != NULL);
-
- *width = widget->child_min_width;
- *height = widget->child_min_height;
-}
-
-/**
- * gtk_button_box_get_child_ipadding:
- * @widget: a #GtkButtonBox
- * @ipad_x: the horizontal padding used by buttons in @widget
- * @ipad_y: the vertical padding used by buttons in @widget
- *
- * Gets the default number of pixels that pad the buttons in a given button box.
- *
- * Deprecated: Use the style properties
- * "<link linkend="GtkButtonBox--s-child-internal-pad-x">child-internal-pad-x</link>"
- * and
- * "<link linkend="GtkButtonBox--s-child-internal-pad-y">child-internal-pad-y</link>"
- * instead.
- */
-void
-gtk_button_box_get_child_ipadding (GtkButtonBox *widget,
- gint* ipad_x, gint *ipad_y)
-{
- g_return_if_fail (GTK_IS_BUTTON_BOX (widget));
- g_return_if_fail (ipad_x != NULL);
- g_return_if_fail (ipad_y != NULL);
-
- *ipad_x = widget->child_ipad_x;
- *ipad_y = widget->child_ipad_y;
-}
-
/**
* gtk_button_box_get_layout:
* @widget: a #GtkButtonBox
diff --git a/gtk/gtkbbox.h b/gtk/gtkbbox.h
index 7a2d823e23..76ac7ba702 100644
--- a/gtk/gtkbbox.h
+++ b/gtk/gtkbbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -76,43 +76,6 @@ void gtk_button_box_set_child_secondary (GtkButtonBox *widget,
GtkWidget *child,
gboolean is_secondary);
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * gtk_button_box_set_spacing:
- * @b: a #GtkButtonBox
- * @s: the number of pixels of spacing
- *
- * Sets the amount of spacing between buttons in a given button box.
- *
- * Deprecated: Use gtk_box_set_spacing() instead.
- */
-#define gtk_button_box_set_spacing(b,s) gtk_box_set_spacing (GTK_BOX (b), s)
-
-/**
- * gtk_button_box_get_spacing:
- * @b: a #GtkButtonBox
- *
- * Retrieves how much space a button box is placing between each child button.
- *
- * Deprecated: Use gtk_box_get_spacing() instead.
- * Returns: the current spacing applied to the buttons in @widget
- */
-#define gtk_button_box_get_spacing(b) gtk_box_get_spacing (GTK_BOX (b))
-
-void gtk_button_box_set_child_size (GtkButtonBox *widget,
- gint min_width,
- gint min_height);
-void gtk_button_box_set_child_ipadding (GtkButtonBox *widget,
- gint ipad_x,
- gint ipad_y);
-void gtk_button_box_get_child_size (GtkButtonBox *widget,
- gint *min_width,
- gint *min_height);
-void gtk_button_box_get_child_ipadding (GtkButtonBox *widget,
- gint *ipad_x,
- gint *ipad_y);
-#endif
-
/* Internal method - do not use. */
void _gtk_button_box_child_requisition (GtkWidget *widget,
int *nvis_children,
diff --git a/gtk/gtkbin.h b/gtk/gtkbin.h
index b80e111833..7db2a5ae4a 100644
--- a/gtk/gtkbin.h
+++ b/gtk/gtkbin.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkbindings.c b/gtk/gtkbindings.c
index db5d83a722..c75e220587 100644
--- a/gtk/gtkbindings.c
+++ b/gtk/gtkbindings.c
@@ -707,37 +707,6 @@ gtk_binding_entry_clear_internal (GtkBindingSet *binding_set,
}
/**
- * gtk_binding_entry_add:
- * @binding_set: #a GtkBindingSet to clear an entry of
- * @keyval: key value of binding to clear
- * @modifiers: key modifier of binding to clear
- *
- * Adds a binding entry.
- *
- * Deprecated: 2.12: Use gtk_binding_entry_add_signal() instead.
- */
-
-/**
- * gtk_binding_entry_clear:
- * @binding_set: binding set to clear an entry of
- * @keyval: key value of binding to clear
- * @modifiers: key modifier of binding to clear
- *
- * Clears a binding entry.
- *
- * Deprecated: 2.12: Use gtk_binding_entry_remove() instead.
- */
-void
-gtk_binding_entry_clear (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers)
-{
- g_return_if_fail (binding_set != NULL);
-
- gtk_binding_entry_clear_internal (binding_set, keyval, modifiers);
-}
-
-/**
* gtk_binding_entry_skip:
* @binding_set: a #GtkBindingSet to skip an entry of
* @keyval: key value of binding to skip
@@ -1588,22 +1557,6 @@ gtk_binding_parse_bind (GScanner *scanner,
return G_TOKEN_NONE;
}
-/**
- * gtk_binding_parse_binding:
- * @scanner: GtkRC scanner
- *
- * Parse a binding entry from a gtkrc file.
- *
- * Return value: expected token upon errors, %G_TOKEN_NONE on success.
- *
- * Deprecated: 2.12: There should be no need to call this function outside GTK+.
- */
-guint
-gtk_binding_parse_binding (GScanner *scanner)
-{
- return _gtk_binding_parse_binding (scanner);
-}
-
guint
_gtk_binding_parse_binding (GScanner *scanner)
{
diff --git a/gtk/gtkbindings.h b/gtk/gtkbindings.h
index 0ff74230c4..904eb3e8c1 100644
--- a/gtk/gtkbindings.h
+++ b/gtk/gtkbindings.h
@@ -27,7 +27,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -111,14 +111,6 @@ gboolean gtk_binding_set_activate (GtkBindingSet *binding_set,
GdkModifierType modifiers,
GtkObject *object);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_binding_entry_add gtk_binding_entry_clear
-void gtk_binding_entry_clear (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers);
-guint gtk_binding_parse_binding (GScanner *scanner);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_binding_entry_skip (GtkBindingSet *binding_set,
guint keyval,
GdkModifierType modifiers);
diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c
index 4e69b44ca8..b9f5321c48 100644
--- a/gtk/gtkbox.c
+++ b/gtk/gtkbox.c
@@ -1331,50 +1331,6 @@ gtk_box_pack_end (GtkBox *box,
}
/**
- * gtk_box_pack_start_defaults:
- * @box: a #GtkBox
- * @widget: the #GtkWidget to be added to @box
- *
- * Adds @widget to @box, packed with reference to the start of @box.
- * The child is packed after any other child packed with reference
- * to the start of @box.
- *
- * Parameters for how to pack the child @widget, #GtkBox:expand,
- * #GtkBox:fill and #GtkBox:padding, are given their default
- * values, %TRUE, %TRUE, and 0, respectively.
- *
- * Deprecated: 2.14: Use gtk_box_pack_start()
- */
-void
-gtk_box_pack_start_defaults (GtkBox *box,
- GtkWidget *child)
-{
- gtk_box_pack_start (box, child, TRUE, TRUE, 0);
-}
-
-/**
- * gtk_box_pack_end_defaults:
- * @box: a #GtkBox
- * @widget: the #GtkWidget to be added to @box
- *
- * Adds @widget to @box, packed with reference to the end of @box.
- * The child is packed after any other child packed with reference
- * to the start of @box.
- *
- * Parameters for how to pack the child @widget, #GtkBox:expand,
- * #GtkBox:fill and #GtkBox:padding, are given their default
- * values, %TRUE, %TRUE, and 0, respectively.
- *
- * Deprecated: 2.14: Use gtk_box_pack_end()
- */
-void
-gtk_box_pack_end_defaults (GtkBox *box,
- GtkWidget *child)
-{
- gtk_box_pack_end (box, child, TRUE, TRUE, 0);
-}
-
-/**
* gtk_box_set_homogeneous:
* @box: a #GtkBox
* @homogeneous: a boolean value, %TRUE to create equal allotments,
diff --git a/gtk/gtkbox.h b/gtk/gtkbox.h
index 038c3b1c3a..ee6595699c 100644
--- a/gtk/gtkbox.h
+++ b/gtk/gtkbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -114,13 +114,6 @@ void gtk_box_pack_end (GtkBox *box,
gboolean fill,
guint padding);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_box_pack_start_defaults (GtkBox *box,
- GtkWidget *widget);
-void gtk_box_pack_end_defaults (GtkBox *box,
- GtkWidget *widget);
-#endif
-
void gtk_box_set_homogeneous (GtkBox *box,
gboolean homogeneous);
gboolean gtk_box_get_homogeneous (GtkBox *box);
diff --git a/gtk/gtkbuildable.h b/gtk/gtkbuildable.h
index ebd7ac2c41..50ed14cd1d 100644
--- a/gtk/gtkbuildable.h
+++ b/gtk/gtkbuildable.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkbuilder.h b/gtk/gtkbuilder.h
index 8a2a8290a3..bb711e27ab 100644
--- a/gtk/gtkbuilder.h
+++ b/gtk/gtkbuilder.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkbutton.h b/gtk/gtkbutton.h
index 7a67ddcf91..4ed4d301fc 100644
--- a/gtk/gtkbutton.h
+++ b/gtk/gtkbutton.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
index 80f67d3266..355327ff17 100644
--- a/gtk/gtkcalendar.c
+++ b/gtk/gtkcalendar.c
@@ -3500,22 +3500,6 @@ gtk_calendar_new (void)
}
/**
- * gtk_calendar_display_options:
- * @calendar: a #GtkCalendar.
- * @flags: the display options to set.
- *
- * Sets display options (whether to display the heading and the month headings).
- *
- * Deprecated: 2.4: Use gtk_calendar_set_display_options() instead
- **/
-void
-gtk_calendar_display_options (GtkCalendar *calendar,
- GtkCalendarDisplayOptions flags)
-{
- gtk_calendar_set_display_options (calendar, flags);
-}
-
-/**
* gtk_calendar_get_display_options:
* @calendar: a #GtkCalendar
*
@@ -3983,35 +3967,5 @@ gtk_calendar_get_detail_height_rows (GtkCalendar *calendar)
return GTK_CALENDAR_GET_PRIVATE (calendar)->detail_height_rows;
}
-/**
- * gtk_calendar_freeze:
- * @calendar: a #GtkCalendar
- *
- * Does nothing. Previously locked the display of the calendar until
- * it was thawed with gtk_calendar_thaw().
- *
- * Deprecated: 2.8:
- **/
-void
-gtk_calendar_freeze (GtkCalendar *calendar)
-{
- g_return_if_fail (GTK_IS_CALENDAR (calendar));
-}
-
-/**
- * gtk_calendar_thaw:
- * @calendar: a #GtkCalendar
- *
- * Does nothing. Previously defrosted a calendar; all the changes made
- * since the last gtk_calendar_freeze() were displayed.
- *
- * Deprecated: 2.8:
- **/
-void
-gtk_calendar_thaw (GtkCalendar *calendar)
-{
- g_return_if_fail (GTK_IS_CALENDAR (calendar));
-}
-
#define __GTK_CALENDAR_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtkcalendar.h b/gtk/gtkcalendar.h
index 9648d25be1..a18745bd0d 100644
--- a/gtk/gtkcalendar.h
+++ b/gtk/gtkcalendar.h
@@ -26,7 +26,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -36,9 +36,6 @@
#include <gtk/gtkwidget.h>
-/* Not needed, retained for compatibility -Yosh */
-#include <gtk/gtksignal.h>
-
G_BEGIN_DECLS
@@ -176,11 +173,6 @@ void gtk_calendar_set_display_options (GtkCalendar *calendar,
GtkCalendarDisplayOptions flags);
GtkCalendarDisplayOptions
gtk_calendar_get_display_options (GtkCalendar *calendar);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_calendar_display_options (GtkCalendar *calendar,
- GtkCalendarDisplayOptions flags);
-#endif
-
void gtk_calendar_get_date (GtkCalendar *calendar,
guint *year,
guint *month,
@@ -199,11 +191,6 @@ void gtk_calendar_set_detail_height_rows (GtkCalendar *calendar,
gint gtk_calendar_get_detail_width_chars (GtkCalendar *calendar);
gint gtk_calendar_get_detail_height_rows (GtkCalendar *calendar);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_calendar_freeze (GtkCalendar *calendar);
-void gtk_calendar_thaw (GtkCalendar *calendar);
-#endif
-
G_END_DECLS
#endif /* __GTK_CALENDAR_H__ */
diff --git a/gtk/gtkcelleditable.h b/gtk/gtkcelleditable.h
index 74d6949ae0..603e120ada 100644
--- a/gtk/gtkcelleditable.h
+++ b/gtk/gtkcelleditable.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcelllayout.h b/gtk/gtkcelllayout.h
index b3d8d06090..04e4745ee9 100644
--- a/gtk/gtkcelllayout.h
+++ b/gtk/gtkcelllayout.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c
index b55b0985ae..6093719044 100644
--- a/gtk/gtkcellrenderer.c
+++ b/gtk/gtkcellrenderer.c
@@ -940,28 +940,6 @@ gtk_cell_renderer_get_sensitive (GtkCellRenderer *cell)
}
/**
- * gtk_cell_renderer_editing_canceled:
- * @cell: A #GtkCellRenderer
- *
- * Causes the cell renderer to emit the #GtkCellRenderer::editing-canceled
- * signal.
- *
- * This function is for use only by implementations of cell renderers that
- * need to notify the client program that an editing process was canceled
- * and the changes were not committed.
- *
- * Since: 2.4
- * Deprecated: 2.6: Use gtk_cell_renderer_stop_editing() instead
- **/
-void
-gtk_cell_renderer_editing_canceled (GtkCellRenderer *cell)
-{
- g_return_if_fail (GTK_IS_CELL_RENDERER (cell));
-
- gtk_cell_renderer_stop_editing (cell, TRUE);
-}
-
-/**
* gtk_cell_renderer_stop_editing:
* @cell: A #GtkCellRenderer
* @canceled: %TRUE if the editing has been canceled
diff --git a/gtk/gtkcellrenderer.h b/gtk/gtkcellrenderer.h
index aece202ae9..d16f3d4160 100644
--- a/gtk/gtkcellrenderer.h
+++ b/gtk/gtkcellrenderer.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -183,11 +183,8 @@ void gtk_cell_renderer_set_sensitive (GtkCellRenderer *cell,
gboolean gtk_cell_renderer_get_sensitive (GtkCellRenderer *cell);
/* For use by cell renderer implementations only */
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_cell_renderer_editing_canceled (GtkCellRenderer *cell);
-#endif
-void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell,
- gboolean canceled);
+void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell,
+ gboolean canceled);
G_END_DECLS
diff --git a/gtk/gtkcellrendereraccel.h b/gtk/gtkcellrendereraccel.h
index 7ca2c60a7e..562f7f3634 100644
--- a/gtk/gtkcellrendereraccel.h
+++ b/gtk/gtkcellrendereraccel.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrenderercombo.h b/gtk/gtkcellrenderercombo.h
index 379c6e649e..49b63206e1 100644
--- a/gtk/gtkcellrenderercombo.h
+++ b/gtk/gtkcellrenderercombo.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrendererpixbuf.h b/gtk/gtkcellrendererpixbuf.h
index 33b92d03e9..8043c2d63e 100644
--- a/gtk/gtkcellrendererpixbuf.h
+++ b/gtk/gtkcellrendererpixbuf.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrendererprogress.h b/gtk/gtkcellrendererprogress.h
index fa5569f95a..1a1eec6421 100644
--- a/gtk/gtkcellrendererprogress.h
+++ b/gtk/gtkcellrendererprogress.h
@@ -25,7 +25,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrendererspin.h b/gtk/gtkcellrendererspin.h
index b9f0bb1a6a..5daccdac2c 100644
--- a/gtk/gtkcellrendererspin.h
+++ b/gtk/gtkcellrendererspin.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrenderertext.h b/gtk/gtkcellrenderertext.h
index fb96219e54..5397927e1a 100644
--- a/gtk/gtkcellrenderertext.h
+++ b/gtk/gtkcellrenderertext.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellrenderertoggle.h b/gtk/gtkcellrenderertoggle.h
index cf6a3c2f3d..59a2ec571b 100644
--- a/gtk/gtkcellrenderertoggle.h
+++ b/gtk/gtkcellrenderertoggle.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c
index 0dd98b0a76..a2692114f4 100644
--- a/gtk/gtkcellview.c
+++ b/gtk/gtkcellview.c
@@ -1064,26 +1064,6 @@ gtk_cell_view_cell_layout_get_cells (GtkCellLayout *layout)
return g_list_reverse (retval);
}
-/**
- * gtk_cell_view_get_cell_renderers:
- * @cell_view: a #GtkCellView
- *
- * Returns the cell renderers which have been added to @cell_view.
- *
- * Return value: a list of cell renderers. The list, but not the
- * renderers has been newly allocated and should be freed with
- * g_list_free() when no longer needed.
- *
- * Since: 2.6
- *
- * Deprecated: 2.18: use gtk_cell_layout_get_cells() instead.
- **/
-GList *
-gtk_cell_view_get_cell_renderers (GtkCellView *cell_view)
-{
- return gtk_cell_view_cell_layout_get_cells (GTK_CELL_LAYOUT (cell_view));
-}
-
static gboolean
gtk_cell_view_buildable_custom_tag_start (GtkBuildable *buildable,
GtkBuilder *builder,
diff --git a/gtk/gtkcellview.h b/gtk/gtkcellview.h
index 73de84e191..06305f9a29 100644
--- a/gtk/gtkcellview.h
+++ b/gtk/gtkcellview.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -72,9 +72,6 @@ gboolean gtk_cell_view_get_size_of_row (GtkCellView *cell_v
void gtk_cell_view_set_background_color (GtkCellView *cell_view,
const GdkColor *color);
-#ifndef GTK_DISABLE_DEPRECATED
-GList *gtk_cell_view_get_cell_renderers (GtkCellView *cell_view);
-#endif
G_END_DECLS
diff --git a/gtk/gtkcheckbutton.h b/gtk/gtkcheckbutton.h
index 54c6dcfa39..90e65c2ec8 100644
--- a/gtk/gtkcheckbutton.h
+++ b/gtk/gtkcheckbutton.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c
index 8c77d618e4..754382f00e 100644
--- a/gtk/gtkcheckmenuitem.c
+++ b/gtk/gtkcheckmenuitem.c
@@ -283,17 +283,6 @@ gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item,
}
void
-gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item,
- gboolean always)
-{
- g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item));
-
-#if 0
- menu_item->always_show_toggle = always != FALSE;
-#endif
-}
-
-void
gtk_check_menu_item_toggled (GtkCheckMenuItem *check_menu_item)
{
g_signal_emit (check_menu_item, check_menu_item_signals[TOGGLED], 0);
diff --git a/gtk/gtkcheckmenuitem.h b/gtk/gtkcheckmenuitem.h
index b6f2e9adfe..bf5230cf89 100644
--- a/gtk/gtkcheckmenuitem.h
+++ b/gtk/gtkcheckmenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -91,12 +91,6 @@ void gtk_check_menu_item_set_draw_as_radio (GtkCheckMenuItem *check_menu_i
gboolean gtk_check_menu_item_get_draw_as_radio (GtkCheckMenuItem *check_menu_item);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item,
- gboolean always);
-#define gtk_check_menu_item_set_state gtk_check_menu_item_set_active
-#endif
-
G_END_DECLS
#endif /* __GTK_CHECK_MENU_ITEM_H__ */
diff --git a/gtk/gtkclipboard.h b/gtk/gtkclipboard.h
index 742c9b359b..f0e5514a09 100644
--- a/gtk/gtkclipboard.h
+++ b/gtk/gtkclipboard.h
@@ -19,7 +19,7 @@
* Global clipboard abstraction.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c
deleted file mode 100644
index eb37434f72..0000000000
--- a/gtk/gtkclist.c
+++ /dev/null
@@ -1,7806 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald,
- * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#define __GTK_CLIST_C__
-
-#include <gdk/gdkkeysyms.h>
-
-#include "gtkmain.h"
-#include "gtkobject.h"
-#include "gtkctree.h"
-#include "gtkclist.h"
-#include "gtkbindings.h"
-#include "gtkdnd.h"
-#include "gtkmarshalers.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-/* length of button_actions array */
-#define MAX_BUTTON 5
-
-/* the width of the column resize windows */
-#define DRAG_WIDTH 6
-
-/* minimum allowed width of a column */
-#define COLUMN_MIN_WIDTH 5
-
-/* this defigns the base grid spacing */
-#define CELL_SPACING 1
-
-/* added the horizontal space at the beginning and end of a row*/
-#define COLUMN_INSET 3
-
-/* used for auto-scrolling */
-#define SCROLL_TIME 100
-
-/* gives the top pixel of the given row in context of
- * the clist's voffset */
-#define ROW_TOP_YPIXEL(clist, row) (((clist)->row_height * (row)) + \
- (((row) + 1) * CELL_SPACING) + \
- (clist)->voffset)
-
-/* returns the row index from a y pixel location in the
- * context of the clist's voffset */
-#define ROW_FROM_YPIXEL(clist, y) (((y) - (clist)->voffset) / \
- ((clist)->row_height + CELL_SPACING))
-
-/* gives the left pixel of the given column in context of
- * the clist's hoffset */
-#define COLUMN_LEFT_XPIXEL(clist, colnum) ((clist)->column[(colnum)].area.x + \
- (clist)->hoffset)
-
-/* returns the column index from a x pixel location in the
- * context of the clist's hoffset */
-static inline gint
-COLUMN_FROM_XPIXEL (GtkCList * clist,
- gint x)
-{
- gint i, cx;
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].visible)
- {
- cx = clist->column[i].area.x + clist->hoffset;
-
- if (x >= (cx - (COLUMN_INSET + CELL_SPACING)) &&
- x <= (cx + clist->column[i].area.width + COLUMN_INSET))
- return i;
- }
-
- /* no match */
- return -1;
-}
-
-/* returns the top pixel of the given row in the context of
- * the list height */
-#define ROW_TOP(clist, row) (((clist)->row_height + CELL_SPACING) * (row))
-
-/* returns the left pixel of the given column in the context of
- * the list width */
-#define COLUMN_LEFT(clist, colnum) ((clist)->column[(colnum)].area.x)
-
-/* returns the total height of the list */
-#define LIST_HEIGHT(clist) (((clist)->row_height * ((clist)->rows)) + \
- (CELL_SPACING * ((clist)->rows + 1)))
-
-
-/* returns the total width of the list */
-static inline gint
-LIST_WIDTH (GtkCList * clist)
-{
- gint last_column;
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--);
-
- if (last_column >= 0)
- return (clist->column[last_column].area.x +
- clist->column[last_column].area.width +
- COLUMN_INSET + CELL_SPACING);
- return 0;
-}
-
-/* returns the GList item for the nth row */
-#define ROW_ELEMENT(clist, row) (((row) == (clist)->rows - 1) ? \
- (clist)->row_list_end : \
- g_list_nth ((clist)->row_list, (row)))
-
-
-/* redraw the list if it's not frozen */
-#define CLIST_UNFROZEN(clist) (((GtkCList*) (clist))->freeze_count == 0)
-#define CLIST_REFRESH(clist) G_STMT_START { \
- if (CLIST_UNFROZEN (clist)) \
- GTK_CLIST_GET_CLASS (clist)->refresh ((GtkCList*) (clist)); \
-} G_STMT_END
-
-
-/* Signals */
-enum {
- SELECT_ROW,
- UNSELECT_ROW,
- ROW_MOVE,
- CLICK_COLUMN,
- RESIZE_COLUMN,
- TOGGLE_FOCUS_ROW,
- SELECT_ALL,
- UNSELECT_ALL,
- UNDO_SELECTION,
- START_SELECTION,
- END_SELECTION,
- TOGGLE_ADD_MODE,
- EXTEND_SELECTION,
- SCROLL_VERTICAL,
- SCROLL_HORIZONTAL,
- ABORT_COLUMN_RESIZE,
- LAST_SIGNAL
-};
-
-enum {
- SYNC_REMOVE,
- SYNC_INSERT
-};
-
-enum {
- ARG_0,
- ARG_N_COLUMNS,
- ARG_SHADOW_TYPE,
- ARG_SELECTION_MODE,
- ARG_ROW_HEIGHT,
- ARG_TITLES_ACTIVE,
- ARG_REORDERABLE,
- ARG_USE_DRAG_ICONS,
- ARG_SORT_TYPE
-};
-
-/* GtkCList Methods */
-static void gtk_clist_class_init (GtkCListClass *klass);
-static void gtk_clist_init (GtkCList *clist);
-static GObject* gtk_clist_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_params);
-
-/* GtkObject Methods */
-static void gtk_clist_destroy (GtkObject *object);
-static void gtk_clist_finalize (GObject *object);
-static void gtk_clist_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_clist_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-
-/* GtkWidget Methods */
-static void gtk_clist_set_scroll_adjustments (GtkCList *clist,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
-static void gtk_clist_realize (GtkWidget *widget);
-static void gtk_clist_unrealize (GtkWidget *widget);
-static void gtk_clist_map (GtkWidget *widget);
-static void gtk_clist_unmap (GtkWidget *widget);
-static gint gtk_clist_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static gint gtk_clist_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_clist_button_release (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_clist_motion (GtkWidget *widget,
- GdkEventMotion *event);
-static void gtk_clist_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_clist_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_clist_draw_focus (GtkWidget *widget);
-static gint gtk_clist_focus_in (GtkWidget *widget,
- GdkEventFocus *event);
-static gint gtk_clist_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
-static gint gtk_clist_focus (GtkWidget *widget,
- GtkDirectionType direction);
-static void gtk_clist_set_focus_child (GtkContainer *container,
- GtkWidget *child);
-static void gtk_clist_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static void gtk_clist_drag_begin (GtkWidget *widget,
- GdkDragContext *context);
-static gint gtk_clist_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
-static void gtk_clist_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time);
-static void gtk_clist_drag_end (GtkWidget *widget,
- GdkDragContext *context);
-static gboolean gtk_clist_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
-static void gtk_clist_drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
-static void gtk_clist_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
-
-/* GtkContainer Methods */
-static void gtk_clist_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data);
-
-/* Selection */
-static void toggle_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-static void real_select_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-static void real_unselect_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-static void update_extended_selection (GtkCList *clist,
- gint row);
-static GList *selection_find (GtkCList *clist,
- gint row_number,
- GList *row_list_element);
-static void real_select_all (GtkCList *clist);
-static void real_unselect_all (GtkCList *clist);
-static void move_vertical (GtkCList *clist,
- gint row,
- gfloat align);
-static void move_horizontal (GtkCList *clist,
- gint diff);
-static void real_undo_selection (GtkCList *clist);
-static void fake_unselect_all (GtkCList *clist,
- gint row);
-static void fake_toggle_row (GtkCList *clist,
- gint row);
-static void resync_selection (GtkCList *clist,
- GdkEvent *event);
-static void sync_selection (GtkCList *clist,
- gint row,
- gint mode);
-static void set_anchor (GtkCList *clist,
- gboolean add_mode,
- gint anchor,
- gint undo_anchor);
-static void start_selection (GtkCList *clist);
-static void end_selection (GtkCList *clist);
-static void toggle_add_mode (GtkCList *clist);
-static void toggle_focus_row (GtkCList *clist);
-static void extend_selection (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection);
-static gint get_selection_info (GtkCList *clist,
- gint x,
- gint y,
- gint *row,
- gint *column);
-
-/* Scrolling */
-static void move_focus_row (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position);
-static void scroll_horizontal (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position);
-static void scroll_vertical (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position);
-static void move_horizontal (GtkCList *clist,
- gint diff);
-static void move_vertical (GtkCList *clist,
- gint row,
- gfloat align);
-static gint horizontal_timeout (GtkCList *clist);
-static gint vertical_timeout (GtkCList *clist);
-static void remove_grab (GtkCList *clist);
-
-
-/* Resize Columns */
-static void draw_xor_line (GtkCList *clist);
-static gint new_column_width (GtkCList *clist,
- gint column,
- gint *x);
-static void column_auto_resize (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- gint old_width);
-static void real_resize_column (GtkCList *clist,
- gint column,
- gint width);
-static void abort_column_resize (GtkCList *clist);
-static void cell_size_request (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkRequisition *requisition);
-
-/* Buttons */
-static void column_button_create (GtkCList *clist,
- gint column);
-static void column_button_clicked (GtkWidget *widget,
- gpointer data);
-
-/* Adjustments */
-static void adjust_adjustments (GtkCList *clist,
- gboolean block_resize);
-static void vadjustment_changed (GtkAdjustment *adjustment,
- gpointer data);
-static void vadjustment_value_changed (GtkAdjustment *adjustment,
- gpointer data);
-static void hadjustment_changed (GtkAdjustment *adjustment,
- gpointer data);
-static void hadjustment_value_changed (GtkAdjustment *adjustment,
- gpointer data);
-
-/* Drawing */
-static void get_cell_style (GtkCList *clist,
- GtkCListRow *clist_row,
- gint state,
- gint column,
- GtkStyle **style,
- GdkGC **fg_gc,
- GdkGC **bg_gc);
-static gint draw_cell_pixmap (GdkWindow *window,
- GdkRectangle *clip_rectangle,
- GdkGC *fg_gc,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint x,
- gint y,
- gint width,
- gint height);
-static void draw_row (GtkCList *clist,
- GdkRectangle *area,
- gint row,
- GtkCListRow *clist_row);
-static void draw_rows (GtkCList *clist,
- GdkRectangle *area);
-static void clist_refresh (GtkCList *clist);
-static void draw_drag_highlight (GtkCList *clist,
- GtkCListRow *dest_row,
- gint dest_row_number,
- GtkCListDragPos drag_pos);
-
-/* Size Allocation / Requisition */
-static void size_allocate_title_buttons (GtkCList *clist);
-static void size_allocate_columns (GtkCList *clist,
- gboolean block_resize);
-static gint list_requisition_width (GtkCList *clist);
-
-/* Memory Allocation/Distruction Routines */
-static GtkCListColumn *columns_new (GtkCList *clist);
-static void column_title_new (GtkCList *clist,
- gint column,
- const gchar *title);
-static void columns_delete (GtkCList *clist);
-static GtkCListRow *row_new (GtkCList *clist);
-static void row_delete (GtkCList *clist,
- GtkCListRow *clist_row);
-static void set_cell_contents (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkCellType type,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-static gint real_insert_row (GtkCList *clist,
- gint row,
- gchar *text[]);
-static void real_remove_row (GtkCList *clist,
- gint row);
-static void real_clear (GtkCList *clist);
-
-/* Sorting */
-static gint default_compare (GtkCList *clist,
- gconstpointer row1,
- gconstpointer row2);
-static void real_sort_list (GtkCList *clist);
-static GList *gtk_clist_merge (GtkCList *clist,
- GList *a,
- GList *b);
-static GList *gtk_clist_mergesort (GtkCList *clist,
- GList *list,
- gint num);
-/* Misc */
-static gboolean title_focus_in (GtkCList *clist,
- gint dir);
-static gboolean title_focus_move (GtkCList *clist,
- gint dir);
-
-static void real_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row);
-static gint column_title_passive_func (GtkWidget *widget,
- GdkEvent *event,
- gpointer data);
-static void drag_dest_cell (GtkCList *clist,
- gint x,
- gint y,
- GtkCListDestInfo *dest_info);
-
-
-
-static GtkContainerClass *parent_class = NULL;
-static guint clist_signals[LAST_SIGNAL] = {0};
-
-static const GtkTargetEntry clist_target_table = { "gtk-clist-drag-reorder", 0, 0};
-
-GtkType
-gtk_clist_get_type (void)
-{
- static GtkType clist_type = 0;
-
- if (!clist_type)
- {
- static const GtkTypeInfo clist_info =
- {
- "GtkCList",
- sizeof (GtkCList),
- sizeof (GtkCListClass),
- (GtkClassInitFunc) gtk_clist_class_init,
- (GtkObjectInitFunc) gtk_clist_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkCList");
- clist_type = gtk_type_unique (GTK_TYPE_CONTAINER, &clist_info);
- }
-
- return clist_type;
-}
-
-static void
-gtk_clist_class_init (GtkCListClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
- GtkBindingSet *binding_set;
-
- gobject_class->constructor = gtk_clist_constructor;
-
- object_class = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
- container_class = (GtkContainerClass *) klass;
-
- parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
-
- gobject_class->finalize = gtk_clist_finalize;
-
- object_class->set_arg = gtk_clist_set_arg;
- object_class->get_arg = gtk_clist_get_arg;
- object_class->destroy = gtk_clist_destroy;
-
-
- widget_class->realize = gtk_clist_realize;
- widget_class->unrealize = gtk_clist_unrealize;
- widget_class->map = gtk_clist_map;
- widget_class->unmap = gtk_clist_unmap;
- widget_class->button_press_event = gtk_clist_button_press;
- widget_class->button_release_event = gtk_clist_button_release;
- widget_class->motion_notify_event = gtk_clist_motion;
- widget_class->expose_event = gtk_clist_expose;
- widget_class->size_request = gtk_clist_size_request;
- widget_class->size_allocate = gtk_clist_size_allocate;
- widget_class->focus_in_event = gtk_clist_focus_in;
- widget_class->focus_out_event = gtk_clist_focus_out;
- widget_class->style_set = gtk_clist_style_set;
- widget_class->drag_begin = gtk_clist_drag_begin;
- widget_class->drag_end = gtk_clist_drag_end;
- widget_class->drag_motion = gtk_clist_drag_motion;
- widget_class->drag_leave = gtk_clist_drag_leave;
- widget_class->drag_drop = gtk_clist_drag_drop;
- widget_class->drag_data_get = gtk_clist_drag_data_get;
- widget_class->drag_data_received = gtk_clist_drag_data_received;
- widget_class->focus = gtk_clist_focus;
-
- /* container_class->add = NULL; use the default GtkContainerClass warning */
- /* container_class->remove=NULL; use the default GtkContainerClass warning */
-
- container_class->forall = gtk_clist_forall;
- container_class->set_focus_child = gtk_clist_set_focus_child;
-
- klass->set_scroll_adjustments = gtk_clist_set_scroll_adjustments;
- klass->refresh = clist_refresh;
- klass->select_row = real_select_row;
- klass->unselect_row = real_unselect_row;
- klass->row_move = real_row_move;
- klass->undo_selection = real_undo_selection;
- klass->resync_selection = resync_selection;
- klass->selection_find = selection_find;
- klass->click_column = NULL;
- klass->resize_column = real_resize_column;
- klass->draw_row = draw_row;
- klass->draw_drag_highlight = draw_drag_highlight;
- klass->insert_row = real_insert_row;
- klass->remove_row = real_remove_row;
- klass->clear = real_clear;
- klass->sort_list = real_sort_list;
- klass->select_all = real_select_all;
- klass->unselect_all = real_unselect_all;
- klass->fake_unselect_all = fake_unselect_all;
- klass->scroll_horizontal = scroll_horizontal;
- klass->scroll_vertical = scroll_vertical;
- klass->extend_selection = extend_selection;
- klass->toggle_focus_row = toggle_focus_row;
- klass->toggle_add_mode = toggle_add_mode;
- klass->start_selection = start_selection;
- klass->end_selection = end_selection;
- klass->abort_column_resize = abort_column_resize;
- klass->set_cell_contents = set_cell_contents;
- klass->cell_size_request = cell_size_request;
-
- gtk_object_add_arg_type ("GtkCList::n-columns",
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME,
- ARG_N_COLUMNS);
- gtk_object_add_arg_type ("GtkCList::shadow-type",
- GTK_TYPE_SHADOW_TYPE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SHADOW_TYPE);
- gtk_object_add_arg_type ("GtkCList::selection-mode",
- GTK_TYPE_SELECTION_MODE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SELECTION_MODE);
- gtk_object_add_arg_type ("GtkCList::row-height",
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_ROW_HEIGHT);
- gtk_object_add_arg_type ("GtkCList::reorderable",
- GTK_TYPE_BOOL,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_REORDERABLE);
- gtk_object_add_arg_type ("GtkCList::titles-active",
- GTK_TYPE_BOOL,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_TITLES_ACTIVE);
- gtk_object_add_arg_type ("GtkCList::use-drag-icons",
- GTK_TYPE_BOOL,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_USE_DRAG_ICONS);
- gtk_object_add_arg_type ("GtkCList::sort-type",
- GTK_TYPE_SORT_TYPE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SORT_TYPE);
-
- widget_class->set_scroll_adjustments_signal =
- gtk_signal_new (I_("set-scroll-adjustments"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, set_scroll_adjustments),
- _gtk_marshal_VOID__OBJECT_OBJECT,
- GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-
- clist_signals[SELECT_ROW] =
- gtk_signal_new (I_("select-row"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, select_row),
- _gtk_marshal_VOID__INT_INT_BOXED,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
- clist_signals[UNSELECT_ROW] =
- gtk_signal_new (I_("unselect-row"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, unselect_row),
- _gtk_marshal_VOID__INT_INT_BOXED,
- GTK_TYPE_NONE, 3, GTK_TYPE_INT,
- GTK_TYPE_INT, GDK_TYPE_EVENT);
- clist_signals[ROW_MOVE] =
- gtk_signal_new (I_("row-move"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, row_move),
- _gtk_marshal_VOID__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
- clist_signals[CLICK_COLUMN] =
- gtk_signal_new (I_("click-column"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, click_column),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
- clist_signals[RESIZE_COLUMN] =
- gtk_signal_new (I_("resize-column"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, resize_column),
- _gtk_marshal_VOID__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- clist_signals[TOGGLE_FOCUS_ROW] =
- gtk_signal_new (I_("toggle-focus-row"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, toggle_focus_row),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[SELECT_ALL] =
- gtk_signal_new (I_("select-all"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, select_all),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[UNSELECT_ALL] =
- gtk_signal_new (I_("unselect-all"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, unselect_all),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[UNDO_SELECTION] =
- gtk_signal_new (I_("undo-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, undo_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[START_SELECTION] =
- gtk_signal_new (I_("start-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, start_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[END_SELECTION] =
- gtk_signal_new (I_("end-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, end_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[TOGGLE_ADD_MODE] =
- gtk_signal_new (I_("toggle-add-mode"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, toggle_add_mode),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- clist_signals[EXTEND_SELECTION] =
- gtk_signal_new (I_("extend-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, extend_selection),
- _gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT, GTK_TYPE_BOOL);
- clist_signals[SCROLL_VERTICAL] =
- gtk_signal_new (I_("scroll-vertical"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, scroll_vertical),
- _gtk_marshal_VOID__ENUM_FLOAT,
- GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT);
- clist_signals[SCROLL_HORIZONTAL] =
- gtk_signal_new (I_("scroll-horizontal"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, scroll_horizontal),
- _gtk_marshal_VOID__ENUM_FLOAT,
- GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT);
- clist_signals[ABORT_COLUMN_RESIZE] =
- gtk_signal_new (I_("abort-column-resize"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCListClass, abort_column_resize),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
-
- binding_set = gtk_binding_set_by_class (klass);
- gtk_binding_entry_add_signal (binding_set, GDK_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Home, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_End, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Home,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_End,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0, GTK_TYPE_BOOL, TRUE);
-
-
- gtk_binding_entry_add_signal (binding_set, GDK_Left, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Right, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Home, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_End, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
- "undo-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
- "abort-column-resize", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_space, 0,
- "toggle-focus-row", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Space, 0,
- "toggle-focus-row", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK,
- "toggle-add-mode", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Space, GDK_CONTROL_MASK,
- "toggle-add-mode", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_slash, GDK_CONTROL_MASK,
- "select-all", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Divide, GDK_CONTROL_MASK,
- "select-all", 0);
- gtk_binding_entry_add_signal (binding_set, '\\', GDK_CONTROL_MASK,
- "unselect-all", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_L,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK,
- "end-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK,
- "end-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_L,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK |
- GDK_CONTROL_MASK,
- "end-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK |
- GDK_CONTROL_MASK,
- "end-selection", 0);
-}
-
-static void
-gtk_clist_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkCList *clist;
-
- clist = GTK_CLIST (object);
-
- switch (arg_id)
- {
- case ARG_N_COLUMNS: /* only set at construction time */
- clist->columns = MAX (1, GTK_VALUE_UINT (*arg));
- break;
- case ARG_SHADOW_TYPE:
- gtk_clist_set_shadow_type (clist, GTK_VALUE_ENUM (*arg));
- break;
- case ARG_SELECTION_MODE:
- gtk_clist_set_selection_mode (clist, GTK_VALUE_ENUM (*arg));
- break;
- case ARG_ROW_HEIGHT:
- gtk_clist_set_row_height (clist, GTK_VALUE_UINT (*arg));
- break;
- case ARG_REORDERABLE:
- gtk_clist_set_reorderable (clist, GTK_VALUE_BOOL (*arg));
- break;
- case ARG_TITLES_ACTIVE:
- if (GTK_VALUE_BOOL (*arg))
- gtk_clist_column_titles_active (clist);
- else
- gtk_clist_column_titles_passive (clist);
- break;
- case ARG_USE_DRAG_ICONS:
- gtk_clist_set_use_drag_icons (clist, GTK_VALUE_BOOL (*arg));
- break;
- case ARG_SORT_TYPE:
- gtk_clist_set_sort_type (clist, GTK_VALUE_ENUM (*arg));
- break;
- }
-}
-
-static void
-gtk_clist_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkCList *clist;
-
- clist = GTK_CLIST (object);
-
- switch (arg_id)
- {
- guint i;
-
- case ARG_N_COLUMNS:
- GTK_VALUE_UINT (*arg) = clist->columns;
- break;
- case ARG_SHADOW_TYPE:
- GTK_VALUE_ENUM (*arg) = clist->shadow_type;
- break;
- case ARG_SELECTION_MODE:
- GTK_VALUE_ENUM (*arg) = clist->selection_mode;
- break;
- case ARG_ROW_HEIGHT:
- GTK_VALUE_UINT (*arg) = GTK_CLIST_ROW_HEIGHT_SET(clist) ? clist->row_height : 0;
- break;
- case ARG_REORDERABLE:
- GTK_VALUE_BOOL (*arg) = GTK_CLIST_REORDERABLE (clist);
- break;
- case ARG_TITLES_ACTIVE:
- GTK_VALUE_BOOL (*arg) = TRUE;
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button &&
- !gtk_widget_get_sensitive (clist->column[i].button))
- {
- GTK_VALUE_BOOL (*arg) = FALSE;
- break;
- }
- break;
- case ARG_USE_DRAG_ICONS:
- GTK_VALUE_BOOL (*arg) = GTK_CLIST_USE_DRAG_ICONS (clist);
- break;
- case ARG_SORT_TYPE:
- GTK_VALUE_ENUM (*arg) = clist->sort_type;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-gtk_clist_init (GtkCList *clist)
-{
- clist->flags = 0;
-
- gtk_widget_set_has_window (GTK_WIDGET (clist), TRUE);
- gtk_widget_set_can_focus (GTK_WIDGET (clist), TRUE);
- GTK_CLIST_SET_FLAG (clist, CLIST_DRAW_DRAG_LINE);
- GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS);
-
- clist->freeze_count = 0;
-
- clist->rows = 0;
- clist->row_height = 0;
- clist->row_list = NULL;
- clist->row_list_end = NULL;
-
- clist->columns = 0;
-
- clist->title_window = NULL;
- clist->column_title_area.x = 0;
- clist->column_title_area.y = 0;
- clist->column_title_area.width = 1;
- clist->column_title_area.height = 1;
-
- clist->clist_window = NULL;
- clist->clist_window_width = 1;
- clist->clist_window_height = 1;
-
- clist->hoffset = 0;
- clist->voffset = 0;
-
- clist->shadow_type = GTK_SHADOW_IN;
- clist->vadjustment = NULL;
- clist->hadjustment = NULL;
-
- clist->button_actions[0] = GTK_BUTTON_SELECTS | GTK_BUTTON_DRAGS;
- clist->button_actions[1] = GTK_BUTTON_IGNORED;
- clist->button_actions[2] = GTK_BUTTON_IGNORED;
- clist->button_actions[3] = GTK_BUTTON_IGNORED;
- clist->button_actions[4] = GTK_BUTTON_IGNORED;
-
- clist->cursor_drag = NULL;
- clist->xor_gc = NULL;
- clist->fg_gc = NULL;
- clist->bg_gc = NULL;
- clist->x_drag = 0;
-
- clist->selection_mode = GTK_SELECTION_SINGLE;
- clist->selection = NULL;
- clist->selection_end = NULL;
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->focus_row = -1;
- clist->focus_header_column = -1;
- clist->undo_anchor = -1;
-
- clist->anchor = -1;
- clist->anchor_state = GTK_STATE_SELECTED;
- clist->drag_pos = -1;
- clist->htimer = 0;
- clist->vtimer = 0;
-
- clist->click_cell.row = -1;
- clist->click_cell.column = -1;
-
- clist->compare = default_compare;
- clist->sort_type = GTK_SORT_ASCENDING;
- clist->sort_column = 0;
-
- clist->drag_highlight_row = -1;
-}
-
-/* Constructor */
-static GObject*
-gtk_clist_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_properties)
-{
- GObject *object = G_OBJECT_CLASS (parent_class)->constructor (type,
- n_construct_properties,
- construct_properties);
- GtkCList *clist = GTK_CLIST (object);
-
- /* allocate memory for columns */
- clist->column = columns_new (clist);
-
- /* there needs to be at least one column button
- * because there is alot of code that will break if it
- * isn't there
- */
- column_button_create (clist, 0);
-
- return object;
-}
-
-/* GTKCLIST PUBLIC INTERFACE
- * gtk_clist_new
- * gtk_clist_new_with_titles
- * gtk_clist_set_hadjustment
- * gtk_clist_set_vadjustment
- * gtk_clist_get_hadjustment
- * gtk_clist_get_vadjustment
- * gtk_clist_set_shadow_type
- * gtk_clist_set_selection_mode
- * gtk_clist_freeze
- * gtk_clist_thaw
- */
-GtkWidget*
-gtk_clist_new (gint columns)
-{
- return gtk_clist_new_with_titles (columns, NULL);
-}
-
-GtkWidget*
-gtk_clist_new_with_titles (gint columns,
- gchar *titles[])
-{
- GtkCList *clist;
-
- clist = g_object_new (GTK_TYPE_CLIST,
- "n_columns", columns,
- NULL);
- if (titles)
- {
- guint i;
-
- for (i = 0; i < clist->columns; i++)
- gtk_clist_set_column_title (clist, i, titles[i]);
- gtk_clist_column_titles_show (clist);
- }
- else
- gtk_clist_column_titles_hide (clist);
-
- return GTK_WIDGET (clist);
-}
-
-void
-gtk_clist_set_hadjustment (GtkCList *clist,
- GtkAdjustment *adjustment)
-{
- GtkAdjustment *old_adjustment;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
- if (adjustment)
- g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
-
- if (clist->hadjustment == adjustment)
- return;
-
- old_adjustment = clist->hadjustment;
-
- if (clist->hadjustment)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (clist->hadjustment), clist);
- g_object_unref (clist->hadjustment);
- }
-
- clist->hadjustment = adjustment;
-
- if (clist->hadjustment)
- {
- g_object_ref_sink (clist->hadjustment);
-
- gtk_signal_connect (GTK_OBJECT (clist->hadjustment), "changed",
- G_CALLBACK (hadjustment_changed),
- (gpointer) clist);
- gtk_signal_connect (GTK_OBJECT (clist->hadjustment), "value-changed",
- G_CALLBACK (hadjustment_value_changed),
- (gpointer) clist);
- }
-
- if (!clist->hadjustment || !old_adjustment)
- gtk_widget_queue_resize (GTK_WIDGET (clist));
-}
-
-GtkAdjustment *
-gtk_clist_get_hadjustment (GtkCList *clist)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- return clist->hadjustment;
-}
-
-void
-gtk_clist_set_vadjustment (GtkCList *clist,
- GtkAdjustment *adjustment)
-{
- GtkAdjustment *old_adjustment;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
- if (adjustment)
- g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
-
- if (clist->vadjustment == adjustment)
- return;
-
- old_adjustment = clist->vadjustment;
-
- if (clist->vadjustment)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (clist->vadjustment), clist);
- g_object_unref (clist->vadjustment);
- }
-
- clist->vadjustment = adjustment;
-
- if (clist->vadjustment)
- {
- g_object_ref_sink (clist->vadjustment);
-
- gtk_signal_connect (GTK_OBJECT (clist->vadjustment), "changed",
- G_CALLBACK (vadjustment_changed),
- (gpointer) clist);
- gtk_signal_connect (GTK_OBJECT (clist->vadjustment), "value-changed",
- G_CALLBACK (vadjustment_value_changed),
- (gpointer) clist);
- }
-
- if (!clist->vadjustment || !old_adjustment)
- gtk_widget_queue_resize (GTK_WIDGET (clist));
-}
-
-GtkAdjustment *
-gtk_clist_get_vadjustment (GtkCList *clist)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- return clist->vadjustment;
-}
-
-static void
-gtk_clist_set_scroll_adjustments (GtkCList *clist,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment)
-{
- if (clist->hadjustment != hadjustment)
- gtk_clist_set_hadjustment (clist, hadjustment);
- if (clist->vadjustment != vadjustment)
- gtk_clist_set_vadjustment (clist, vadjustment);
-}
-
-void
-gtk_clist_set_shadow_type (GtkCList *clist,
- GtkShadowType type)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- clist->shadow_type = type;
-
- if (gtk_widget_get_visible (GTK_WIDGET (clist)))
- gtk_widget_queue_resize (GTK_WIDGET (clist));
-}
-
-void
-gtk_clist_set_selection_mode (GtkCList *clist,
- GtkSelectionMode mode)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
- g_return_if_fail (mode != GTK_SELECTION_NONE);
-
- if (mode == clist->selection_mode)
- return;
-
- clist->selection_mode = mode;
- clist->anchor = -1;
- clist->anchor_state = GTK_STATE_SELECTED;
- clist->drag_pos = -1;
- clist->undo_anchor = clist->focus_row;
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- switch (mode)
- {
- case GTK_SELECTION_MULTIPLE:
- return;
- case GTK_SELECTION_BROWSE:
- case GTK_SELECTION_SINGLE:
- gtk_clist_unselect_all (clist);
- break;
- default:
- /* Someone set it by hand */
- g_assert_not_reached ();
- }
-}
-
-void
-gtk_clist_freeze (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- clist->freeze_count++;
-}
-
-void
-gtk_clist_thaw (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist->freeze_count)
- {
- clist->freeze_count--;
- CLIST_REFRESH (clist);
- }
-}
-
-/* PUBLIC COLUMN FUNCTIONS
- * gtk_clist_column_titles_show
- * gtk_clist_column_titles_hide
- * gtk_clist_column_title_active
- * gtk_clist_column_title_passive
- * gtk_clist_column_titles_active
- * gtk_clist_column_titles_passive
- * gtk_clist_set_column_title
- * gtk_clist_get_column_title
- * gtk_clist_set_column_widget
- * gtk_clist_set_column_justification
- * gtk_clist_set_column_visibility
- * gtk_clist_set_column_resizeable
- * gtk_clist_set_column_auto_resize
- * gtk_clist_optimal_column_width
- * gtk_clist_set_column_width
- * gtk_clist_set_column_min_width
- * gtk_clist_set_column_max_width
- */
-void
-gtk_clist_column_titles_show (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (!GTK_CLIST_SHOW_TITLES(clist))
- {
- GTK_CLIST_SET_FLAG (clist, CLIST_SHOW_TITLES);
- if (clist->title_window)
- gdk_window_show (clist->title_window);
- gtk_widget_queue_resize (GTK_WIDGET (clist));
- }
-}
-
-void
-gtk_clist_column_titles_hide (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (GTK_CLIST_SHOW_TITLES(clist))
- {
- GTK_CLIST_UNSET_FLAG (clist, CLIST_SHOW_TITLES);
- if (clist->title_window)
- gdk_window_hide (clist->title_window);
- gtk_widget_queue_resize (GTK_WIDGET (clist));
- }
-}
-
-void
-gtk_clist_column_title_active (GtkCList *clist,
- gint column)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (!clist->column[column].button || !clist->column[column].button_passive)
- return;
-
- clist->column[column].button_passive = FALSE;
-
- gtk_signal_disconnect_by_func (GTK_OBJECT (clist->column[column].button),
- G_CALLBACK (column_title_passive_func),
- NULL);
-
- gtk_widget_set_can_focus (clist->column[column].button, TRUE);
- if (gtk_widget_get_visible (GTK_WIDGET (clist)))
- gtk_widget_queue_draw (clist->column[column].button);
-}
-
-void
-gtk_clist_column_title_passive (GtkCList *clist,
- gint column)
-{
- GtkButton *button;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (!clist->column[column].button || clist->column[column].button_passive)
- return;
-
- button = GTK_BUTTON (clist->column[column].button);
-
- clist->column[column].button_passive = TRUE;
-
- if (button->button_down)
- g_signal_emit_by_name (button, "released");
- if (button->in_button)
- g_signal_emit_by_name (button, "leave");
-
- gtk_signal_connect (GTK_OBJECT (clist->column[column].button), "event",
- G_CALLBACK (column_title_passive_func),
- NULL);
-
- gtk_widget_set_can_focus (clist->column[column].button, FALSE);
- if (gtk_widget_get_visible (GTK_WIDGET (clist)))
- gtk_widget_queue_draw (clist->column[column].button);
-}
-
-void
-gtk_clist_column_titles_active (GtkCList *clist)
-{
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- for (i = 0; i < clist->columns; i++)
- gtk_clist_column_title_active (clist, i);
-}
-
-void
-gtk_clist_column_titles_passive (GtkCList *clist)
-{
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- for (i = 0; i < clist->columns; i++)
- gtk_clist_column_title_passive (clist, i);
-}
-
-void
-gtk_clist_set_column_title (GtkCList *clist,
- gint column,
- const gchar *title)
-{
- gint new_button = 0;
- GtkWidget *old_widget;
- GtkWidget *alignment = NULL;
- GtkWidget *label;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- /* if the column button doesn't currently exist,
- * it has to be created first */
- if (!clist->column[column].button)
- {
- column_button_create (clist, column);
- new_button = 1;
- }
-
- column_title_new (clist, column, title);
-
- /* remove and destroy the old widget */
- old_widget = GTK_BIN (clist->column[column].button)->child;
- if (old_widget)
- gtk_container_remove (GTK_CONTAINER (clist->column[column].button), old_widget);
-
- /* create new alignment based no column justification */
- switch (clist->column[column].justification)
- {
- case GTK_JUSTIFY_LEFT:
- alignment = gtk_alignment_new (0.0, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_RIGHT:
- alignment = gtk_alignment_new (1.0, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_CENTER:
- alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_FILL:
- alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
- break;
- }
-
- gtk_widget_push_composite_child ();
- label = gtk_label_new (clist->column[column].title);
- gtk_widget_pop_composite_child ();
- gtk_container_add (GTK_CONTAINER (alignment), label);
- gtk_container_add (GTK_CONTAINER (clist->column[column].button), alignment);
- gtk_widget_show (label);
- gtk_widget_show (alignment);
-
- /* if this button didn't previously exist, then the
- * column button positions have to be re-computed */
- if (gtk_widget_get_visible (GTK_WIDGET (clist)) && new_button)
- size_allocate_title_buttons (clist);
-}
-
-gchar *
-gtk_clist_get_column_title (GtkCList *clist,
- gint column)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- if (column < 0 || column >= clist->columns)
- return NULL;
-
- return clist->column[column].title;
-}
-
-void
-gtk_clist_set_column_widget (GtkCList *clist,
- gint column,
- GtkWidget *widget)
-{
- gint new_button = 0;
- GtkWidget *old_widget;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- /* if the column button doesn't currently exist,
- * it has to be created first */
- if (!clist->column[column].button)
- {
- column_button_create (clist, column);
- new_button = 1;
- }
-
- column_title_new (clist, column, NULL);
-
- /* remove and destroy the old widget */
- old_widget = GTK_BIN (clist->column[column].button)->child;
- if (old_widget)
- gtk_container_remove (GTK_CONTAINER (clist->column[column].button),
- old_widget);
-
- /* add and show the widget */
- if (widget)
- {
- gtk_container_add (GTK_CONTAINER (clist->column[column].button), widget);
- gtk_widget_show (widget);
- }
-
- /* if this button didn't previously exist, then the
- * column button positions have to be re-computed */
- if (gtk_widget_get_visible (GTK_WIDGET (clist)) && new_button)
- size_allocate_title_buttons (clist);
-}
-
-GtkWidget *
-gtk_clist_get_column_widget (GtkCList *clist,
- gint column)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- if (column < 0 || column >= clist->columns)
- return NULL;
-
- if (clist->column[column].button)
- return GTK_BIN (clist->column[column].button)->child;
-
- return NULL;
-}
-
-void
-gtk_clist_set_column_justification (GtkCList *clist,
- gint column,
- GtkJustification justification)
-{
- GtkWidget *alignment;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- clist->column[column].justification = justification;
-
- /* change the alinment of the button title if it's not a
- * custom widget */
- if (clist->column[column].title)
- {
- alignment = GTK_BIN (clist->column[column].button)->child;
-
- switch (clist->column[column].justification)
- {
- case GTK_JUSTIFY_LEFT:
- gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.0, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_RIGHT:
- gtk_alignment_set (GTK_ALIGNMENT (alignment), 1.0, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_CENTER:
- gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.5, 0.5, 0.0, 0.0);
- break;
-
- case GTK_JUSTIFY_FILL:
- gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.5, 0.5, 0.0, 0.0);
- break;
-
- default:
- break;
- }
- }
-
- if (CLIST_UNFROZEN (clist))
- draw_rows (clist, NULL);
-}
-
-void
-gtk_clist_set_column_visibility (GtkCList *clist,
- gint column,
- gboolean visible)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (clist->column[column].visible == visible)
- return;
-
- /* don't hide last visible column */
- if (!visible)
- {
- gint i;
- gint vis_columns = 0;
-
- for (i = 0, vis_columns = 0; i < clist->columns && vis_columns < 2; i++)
- if (clist->column[i].visible)
- vis_columns++;
-
- if (vis_columns < 2)
- return;
- }
-
- clist->column[column].visible = visible;
-
- if (clist->column[column].button)
- {
- if (visible)
- gtk_widget_show (clist->column[column].button);
- else
- gtk_widget_hide (clist->column[column].button);
- }
-
- gtk_widget_queue_resize (GTK_WIDGET(clist));
-}
-
-void
-gtk_clist_set_column_resizeable (GtkCList *clist,
- gint column,
- gboolean resizeable)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (clist->column[column].resizeable == resizeable)
- return;
-
- clist->column[column].resizeable = resizeable;
- if (resizeable)
- clist->column[column].auto_resize = FALSE;
-
- if (gtk_widget_get_visible (GTK_WIDGET (clist)))
- size_allocate_title_buttons (clist);
-}
-
-void
-gtk_clist_set_column_auto_resize (GtkCList *clist,
- gint column,
- gboolean auto_resize)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (clist->column[column].auto_resize == auto_resize)
- return;
-
- clist->column[column].auto_resize = auto_resize;
- if (auto_resize)
- {
- clist->column[column].resizeable = FALSE;
- if (!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- gint width;
-
- width = gtk_clist_optimal_column_width (clist, column);
- gtk_clist_set_column_width (clist, column, width);
- }
- }
-
- if (gtk_widget_get_visible (GTK_WIDGET (clist)))
- size_allocate_title_buttons (clist);
-}
-
-gint
-gtk_clist_columns_autosize (GtkCList *clist)
-{
- gint i;
- gint width;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- gtk_clist_freeze (clist);
- width = 0;
- for (i = 0; i < clist->columns; i++)
- {
- gtk_clist_set_column_width (clist, i,
- gtk_clist_optimal_column_width (clist, i));
-
- width += clist->column[i].width;
- }
-
- gtk_clist_thaw (clist);
- return width;
-}
-
-gint
-gtk_clist_optimal_column_width (GtkCList *clist,
- gint column)
-{
- GtkRequisition requisition;
- GList *list;
- gint width;
-
- g_return_val_if_fail (GTK_CLIST (clist), 0);
-
- if (column < 0 || column >= clist->columns)
- return 0;
-
- if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[column].button)
- width = (clist->column[column].button->requisition.width)
-#if 0
- (CELL_SPACING + (2 * COLUMN_INSET)))
-#endif
- ;
- else
- width = 0;
-
- for (list = clist->row_list; list; list = list->next)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, GTK_CLIST_ROW (list), column, &requisition);
- width = MAX (width, requisition.width);
- }
-
- return width;
-}
-
-void
-gtk_clist_set_column_width (GtkCList *clist,
- gint column,
- gint width)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[RESIZE_COLUMN],
- column, width);
-}
-
-void
-gtk_clist_set_column_min_width (GtkCList *clist,
- gint column,
- gint min_width)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (clist->column[column].min_width == min_width)
- return;
-
- if (clist->column[column].max_width >= 0 &&
- clist->column[column].max_width < min_width)
- clist->column[column].min_width = clist->column[column].max_width;
- else
- clist->column[column].min_width = min_width;
-
- if (clist->column[column].area.width < clist->column[column].min_width)
- gtk_clist_set_column_width (clist, column,clist->column[column].min_width);
-}
-
-void
-gtk_clist_set_column_max_width (GtkCList *clist,
- gint column,
- gint max_width)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
- if (clist->column[column].max_width == max_width)
- return;
-
- if (clist->column[column].min_width >= 0 && max_width >= 0 &&
- clist->column[column].min_width > max_width)
- clist->column[column].max_width = clist->column[column].min_width;
- else
- clist->column[column].max_width = max_width;
-
- if (clist->column[column].area.width > clist->column[column].max_width)
- gtk_clist_set_column_width (clist, column,clist->column[column].max_width);
-}
-
-/* PRIVATE COLUMN FUNCTIONS
- * column_auto_resize
- * real_resize_column
- * abort_column_resize
- * size_allocate_title_buttons
- * size_allocate_columns
- * list_requisition_width
- * new_column_width
- * column_button_create
- * column_button_clicked
- * column_title_passive_func
- */
-static void
-column_auto_resize (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- gint old_width)
-{
- /* resize column if needed for auto_resize */
- GtkRequisition requisition;
-
- if (!clist->column[column].auto_resize ||
- GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- return;
-
- if (clist_row)
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
- else
- requisition.width = 0;
-
- if (requisition.width > clist->column[column].width)
- gtk_clist_set_column_width (clist, column, requisition.width);
- else if (requisition.width < old_width &&
- old_width == clist->column[column].width)
- {
- GList *list;
- gint new_width = 0;
-
- /* run a "gtk_clist_optimal_column_width" but break, if
- * the column doesn't shrink */
- if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[column].button)
- new_width = (clist->column[column].button->requisition.width -
- (CELL_SPACING + (2 * COLUMN_INSET)));
- else
- new_width = 0;
-
- for (list = clist->row_list; list; list = list->next)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, GTK_CLIST_ROW (list), column, &requisition);
- new_width = MAX (new_width, requisition.width);
- if (new_width == clist->column[column].width)
- break;
- }
- if (new_width < clist->column[column].width)
- gtk_clist_set_column_width
- (clist, column, MAX (new_width, clist->column[column].min_width));
- }
-}
-
-static void
-real_resize_column (GtkCList *clist,
- gint column,
- gint width)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- if (width < MAX (COLUMN_MIN_WIDTH, clist->column[column].min_width))
- width = MAX (COLUMN_MIN_WIDTH, clist->column[column].min_width);
- if (clist->column[column].max_width >= 0 &&
- width > clist->column[column].max_width)
- width = clist->column[column].max_width;
-
- clist->column[column].width = width;
- clist->column[column].width_set = TRUE;
-
- /* FIXME: this is quite expensive to do if the widget hasn't
- * been size_allocated yet, and pointless. Should
- * a flag be kept
- */
- size_allocate_columns (clist, TRUE);
- size_allocate_title_buttons (clist);
-
- CLIST_REFRESH (clist);
-}
-
-static void
-abort_column_resize (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (!GTK_CLIST_IN_DRAG(clist))
- return;
-
- GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
- gtk_grab_remove (GTK_WIDGET (clist));
- gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (clist)),
- GDK_CURRENT_TIME);
- clist->drag_pos = -1;
-
- if (clist->x_drag >= 0 && clist->x_drag <= clist->clist_window_width - 1)
- draw_xor_line (clist);
-
- if (GTK_CLIST_ADD_MODE(clist))
- {
- gint8 dashes[] = { 4, 4 };
-
- gdk_gc_set_line_attributes (clist->xor_gc, 1, GDK_LINE_ON_OFF_DASH, 0,0);
- gdk_gc_set_dashes (clist->xor_gc, 0, dashes, G_N_ELEMENTS (dashes));
- }
-}
-
-static void
-size_allocate_title_buttons (GtkCList *clist)
-{
- GtkAllocation button_allocation;
- gint last_column;
- gint last_button = 0;
- gint i;
-
- if (!gtk_widget_get_realized (GTK_WIDGET (clist)))
- return;
-
- button_allocation.x = clist->hoffset;
- button_allocation.y = 0;
- button_allocation.width = 0;
- button_allocation.height = clist->column_title_area.height;
-
- /* find last visible column */
- for (last_column = clist->columns - 1; last_column >= 0; last_column--)
- if (clist->column[last_column].visible)
- break;
-
- for (i = 0; i < last_column; i++)
- {
- if (!clist->column[i].visible)
- {
- last_button = i + 1;
- gdk_window_hide (clist->column[i].window);
- continue;
- }
-
- button_allocation.width += (clist->column[i].area.width +
- CELL_SPACING + 2 * COLUMN_INSET);
-
- if (!clist->column[i + 1].button)
- {
- gdk_window_hide (clist->column[i].window);
- continue;
- }
-
- gtk_widget_size_allocate (clist->column[last_button].button,
- &button_allocation);
- button_allocation.x += button_allocation.width;
- button_allocation.width = 0;
-
- if (clist->column[last_button].resizeable)
- {
- gdk_window_show (clist->column[last_button].window);
- gdk_window_move_resize (clist->column[last_button].window,
- button_allocation.x - (DRAG_WIDTH / 2),
- 0, DRAG_WIDTH,
- clist->column_title_area.height);
- }
- else
- gdk_window_hide (clist->column[last_button].window);
-
- last_button = i + 1;
- }
-
- button_allocation.width += (clist->column[last_column].area.width +
- 2 * (CELL_SPACING + COLUMN_INSET));
- gtk_widget_size_allocate (clist->column[last_button].button,
- &button_allocation);
-
- if (clist->column[last_button].resizeable)
- {
- button_allocation.x += button_allocation.width;
-
- gdk_window_show (clist->column[last_button].window);
- gdk_window_move_resize (clist->column[last_button].window,
- button_allocation.x - (DRAG_WIDTH / 2),
- 0, DRAG_WIDTH, clist->column_title_area.height);
- }
- else
- gdk_window_hide (clist->column[last_button].window);
-}
-
-static void
-size_allocate_columns (GtkCList *clist,
- gboolean block_resize)
-{
- gint xoffset = CELL_SPACING + COLUMN_INSET;
- gint last_column;
- gint i;
-
- /* find last visible column and calculate correct column width */
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--);
-
- if (last_column < 0)
- return;
-
- for (i = 0; i <= last_column; i++)
- {
- if (!clist->column[i].visible)
- continue;
- clist->column[i].area.x = xoffset;
- if (clist->column[i].width_set)
- {
- if (!block_resize && GTK_CLIST_SHOW_TITLES(clist) &&
- clist->column[i].auto_resize && clist->column[i].button)
- {
- gint width;
-
- width = (clist->column[i].button->requisition.width -
- (CELL_SPACING + (2 * COLUMN_INSET)));
-
- if (width > clist->column[i].width)
- gtk_clist_set_column_width (clist, i, width);
- }
-
- clist->column[i].area.width = clist->column[i].width;
- xoffset += clist->column[i].width + CELL_SPACING + (2* COLUMN_INSET);
- }
- else if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[i].button)
- {
- clist->column[i].area.width =
- clist->column[i].button->requisition.width -
- (CELL_SPACING + (2 * COLUMN_INSET));
- xoffset += clist->column[i].button->requisition.width;
- }
- }
-
- clist->column[last_column].area.width = clist->column[last_column].area.width
- + MAX (0, clist->clist_window_width + COLUMN_INSET - xoffset);
-}
-
-static gint
-list_requisition_width (GtkCList *clist)
-{
- gint width = CELL_SPACING;
- gint i;
-
- for (i = clist->columns - 1; i >= 0; i--)
- {
- if (!clist->column[i].visible)
- continue;
-
- if (clist->column[i].width_set)
- width += clist->column[i].width + CELL_SPACING + (2 * COLUMN_INSET);
- else if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[i].button)
- width += clist->column[i].button->requisition.width;
- }
-
- return width;
-}
-
-/* this function returns the new width of the column being resized given
- * the column and x position of the cursor; the x cursor position is passed
- * in as a pointer and automagicly corrected if it's beyond min/max limits */
-static gint
-new_column_width (GtkCList *clist,
- gint column,
- gint *x)
-{
- gint xthickness = GTK_WIDGET (clist)->style->xthickness;
- gint width;
- gint cx;
- gint dx;
- gint last_column;
-
- /* first translate the x position from widget->window
- * to clist->clist_window */
- cx = *x - xthickness;
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--);
-
- /* calculate new column width making sure it doesn't end up
- * less than the minimum width */
- dx = (COLUMN_LEFT_XPIXEL (clist, column) + COLUMN_INSET +
- (column < last_column) * CELL_SPACING);
- width = cx - dx;
-
- if (width < MAX (COLUMN_MIN_WIDTH, clist->column[column].min_width))
- {
- width = MAX (COLUMN_MIN_WIDTH, clist->column[column].min_width);
- cx = dx + width;
- *x = cx + xthickness;
- }
- else if (clist->column[column].max_width >= COLUMN_MIN_WIDTH &&
- width > clist->column[column].max_width)
- {
- width = clist->column[column].max_width;
- cx = dx + clist->column[column].max_width;
- *x = cx + xthickness;
- }
-
- if (cx < 0 || cx > clist->clist_window_width)
- *x = -1;
-
- return width;
-}
-
-static void
-column_button_create (GtkCList *clist,
- gint column)
-{
- GtkWidget *button;
-
- gtk_widget_push_composite_child ();
- button = clist->column[column].button = gtk_button_new ();
- gtk_widget_pop_composite_child ();
-
- if (gtk_widget_get_realized (GTK_WIDGET (clist)) && clist->title_window)
- gtk_widget_set_parent_window (clist->column[column].button,
- clist->title_window);
- gtk_widget_set_parent (button, GTK_WIDGET (clist));
-
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- G_CALLBACK (column_button_clicked),
- (gpointer) clist);
- gtk_widget_show (button);
-}
-
-static void
-column_button_clicked (GtkWidget *widget,
- gpointer data)
-{
- gint i;
- GtkCList *clist;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_CLIST (data));
-
- clist = GTK_CLIST (data);
-
- /* find the column who's button was pressed */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button == widget)
- break;
-
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[CLICK_COLUMN], i);
-}
-
-static gint
-column_title_passive_func (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
-{
- g_return_val_if_fail (event != NULL, FALSE);
-
- switch (event->type)
- {
- case GDK_MOTION_NOTIFY:
- case GDK_BUTTON_PRESS:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- case GDK_ENTER_NOTIFY:
- case GDK_LEAVE_NOTIFY:
- return TRUE;
- default:
- break;
- }
- return FALSE;
-}
-
-
-/* PUBLIC CELL FUNCTIONS
- * gtk_clist_get_cell_type
- * gtk_clist_set_text
- * gtk_clist_get_text
- * gtk_clist_set_pixmap
- * gtk_clist_get_pixmap
- * gtk_clist_set_pixtext
- * gtk_clist_get_pixtext
- * gtk_clist_set_shift
- */
-GtkCellType
-gtk_clist_get_cell_type (GtkCList *clist,
- gint row,
- gint column)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
-
- if (row < 0 || row >= clist->rows)
- return -1;
- if (column < 0 || column >= clist->columns)
- return -1;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- return clist_row->cell[column].type;
-}
-
-void
-gtk_clist_set_text (GtkCList *clist,
- gint row,
- gint column,
- const gchar *text)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < 0 || column >= clist->columns)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- /* if text is null, then the cell is empty */
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, clist_row, column, GTK_CELL_TEXT, text, 0, NULL, NULL);
-
- /* redraw the list if it's not frozen */
- if (CLIST_UNFROZEN (clist))
- {
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-gint
-gtk_clist_get_text (GtkCList *clist,
- gint row,
- gint column,
- gchar **text)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- if (row < 0 || row >= clist->rows)
- return 0;
- if (column < 0 || column >= clist->columns)
- return 0;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->cell[column].type != GTK_CELL_TEXT)
- return 0;
-
- if (text)
- *text = GTK_CELL_TEXT (clist_row->cell[column])->text;
-
- return 1;
-}
-
-/**
- * gtk_clist_set_pixmap:
- * @mask: (allow-none):
- */
-void
-gtk_clist_set_pixmap (GtkCList *clist,
- gint row,
- gint column,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < 0 || column >= clist->columns)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- g_object_ref (pixmap);
-
- if (mask) g_object_ref (mask);
-
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, clist_row, column, GTK_CELL_PIXMAP, NULL, 0, pixmap, mask);
-
- /* redraw the list if it's not frozen */
- if (CLIST_UNFROZEN (clist))
- {
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-gint
-gtk_clist_get_pixmap (GtkCList *clist,
- gint row,
- gint column,
- GdkPixmap **pixmap,
- GdkBitmap **mask)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- if (row < 0 || row >= clist->rows)
- return 0;
- if (column < 0 || column >= clist->columns)
- return 0;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->cell[column].type != GTK_CELL_PIXMAP)
- return 0;
-
- if (pixmap)
- {
- *pixmap = GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap;
- /* mask can be NULL */
- *mask = GTK_CELL_PIXMAP (clist_row->cell[column])->mask;
- }
-
- return 1;
-}
-
-void
-gtk_clist_set_pixtext (GtkCList *clist,
- gint row,
- gint column,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < 0 || column >= clist->columns)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- g_object_ref (pixmap);
- if (mask) g_object_ref (mask);
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, clist_row, column, GTK_CELL_PIXTEXT, text, spacing, pixmap, mask);
-
- /* redraw the list if it's not frozen */
- if (CLIST_UNFROZEN (clist))
- {
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-gint
-gtk_clist_get_pixtext (GtkCList *clist,
- gint row,
- gint column,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap,
- GdkBitmap **mask)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- if (row < 0 || row >= clist->rows)
- return 0;
- if (column < 0 || column >= clist->columns)
- return 0;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->cell[column].type != GTK_CELL_PIXTEXT)
- return 0;
-
- if (text)
- *text = GTK_CELL_PIXTEXT (clist_row->cell[column])->text;
- if (spacing)
- *spacing = GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing;
- if (pixmap)
- *pixmap = GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap;
-
- /* mask can be NULL */
- if (mask)
- *mask = GTK_CELL_PIXTEXT (clist_row->cell[column])->mask;
-
- return 1;
-}
-
-void
-gtk_clist_set_shift (GtkCList *clist,
- gint row,
- gint column,
- gint vertical,
- gint horizontal)
-{
- GtkRequisition requisition = { 0 };
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < 0 || column >= clist->columns)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
-
- clist_row->cell[column].vertical = vertical;
- clist_row->cell[column].horizontal = horizontal;
-
- column_auto_resize (clist, clist_row, column, requisition.width);
-
- if (CLIST_UNFROZEN (clist) && gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
-}
-
-/* PRIVATE CELL FUNCTIONS
- * set_cell_contents
- * cell_size_request
- */
-static void
-set_cell_contents (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkCellType type,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- GtkRequisition requisition;
- gchar *old_text = NULL;
- GdkPixmap *old_pixmap = NULL;
- GdkBitmap *old_mask = NULL;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
- g_return_if_fail (clist_row != NULL);
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
-
- switch (clist_row->cell[column].type)
- {
- case GTK_CELL_EMPTY:
- break;
- case GTK_CELL_TEXT:
- old_text = GTK_CELL_TEXT (clist_row->cell[column])->text;
- break;
- case GTK_CELL_PIXMAP:
- old_pixmap = GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap;
- old_mask = GTK_CELL_PIXMAP (clist_row->cell[column])->mask;
- break;
- case GTK_CELL_PIXTEXT:
- old_text = GTK_CELL_PIXTEXT (clist_row->cell[column])->text;
- old_pixmap = GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap;
- old_mask = GTK_CELL_PIXTEXT (clist_row->cell[column])->mask;
- break;
- case GTK_CELL_WIDGET:
- /* unimplemented */
- break;
- default:
- break;
- }
-
- clist_row->cell[column].type = GTK_CELL_EMPTY;
-
- /* Note that pixmap and mask were already ref'ed by the caller
- */
- switch (type)
- {
- case GTK_CELL_TEXT:
- if (text)
- {
- clist_row->cell[column].type = GTK_CELL_TEXT;
- GTK_CELL_TEXT (clist_row->cell[column])->text = g_strdup (text);
- }
- break;
- case GTK_CELL_PIXMAP:
- if (pixmap)
- {
- clist_row->cell[column].type = GTK_CELL_PIXMAP;
- GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap = pixmap;
- /* We set the mask even if it is NULL */
- GTK_CELL_PIXMAP (clist_row->cell[column])->mask = mask;
- }
- break;
- case GTK_CELL_PIXTEXT:
- if (text && pixmap)
- {
- clist_row->cell[column].type = GTK_CELL_PIXTEXT;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->text = g_strdup (text);
- GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing = spacing;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap = pixmap;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = mask;
- }
- break;
- default:
- break;
- }
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- column_auto_resize (clist, clist_row, column, requisition.width);
-
- g_free (old_text);
- if (old_pixmap)
- g_object_unref (old_pixmap);
- if (old_mask)
- g_object_unref (old_mask);
-}
-
-PangoLayout *
-_gtk_clist_create_cell_layout (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column)
-{
- PangoLayout *layout;
- GtkStyle *style;
- GtkCell *cell;
- gchar *text;
-
- get_cell_style (clist, clist_row, GTK_STATE_NORMAL, column, &style,
- NULL, NULL);
-
-
- cell = &clist_row->cell[column];
- switch (cell->type)
- {
- case GTK_CELL_TEXT:
- case GTK_CELL_PIXTEXT:
- text = ((cell->type == GTK_CELL_PIXTEXT) ?
- GTK_CELL_PIXTEXT (*cell)->text :
- GTK_CELL_TEXT (*cell)->text);
-
- if (!text)
- return NULL;
-
- layout = gtk_widget_create_pango_layout (GTK_WIDGET (clist),
- ((cell->type == GTK_CELL_PIXTEXT) ?
- GTK_CELL_PIXTEXT (*cell)->text :
- GTK_CELL_TEXT (*cell)->text));
- pango_layout_set_font_description (layout, style->font_desc);
-
- return layout;
-
- default:
- return NULL;
- }
-}
-
-static void
-cell_size_request (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkRequisition *requisition)
-{
- gint width;
- gint height;
- PangoLayout *layout;
- PangoRectangle logical_rect;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
- g_return_if_fail (requisition != NULL);
-
- layout = _gtk_clist_create_cell_layout (clist, clist_row, column);
- if (layout)
- {
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
-
- requisition->width = logical_rect.width;
- requisition->height = logical_rect.height;
-
- g_object_unref (layout);
- }
- else
- {
- requisition->width = 0;
- requisition->height = 0;
- }
-
- if (layout && clist_row->cell[column].type == GTK_CELL_PIXTEXT)
- requisition->width += GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing;
-
- switch (clist_row->cell[column].type)
- {
- case GTK_CELL_PIXTEXT:
- gdk_drawable_get_size (GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap,
- &width, &height);
- requisition->width += width;
- requisition->height = MAX (requisition->height, height);
- break;
- case GTK_CELL_PIXMAP:
- gdk_drawable_get_size (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap,
- &width, &height);
- requisition->width += width;
- requisition->height = MAX (requisition->height, height);
- break;
-
- default:
- break;
- }
-
- requisition->width += clist_row->cell[column].horizontal;
- requisition->height += clist_row->cell[column].vertical;
-}
-
-/* PUBLIC INSERT/REMOVE ROW FUNCTIONS
- * gtk_clist_prepend
- * gtk_clist_append
- * gtk_clist_insert
- * gtk_clist_remove
- * gtk_clist_clear
- */
-gint
-gtk_clist_prepend (GtkCList *clist,
- gchar *text[])
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
- g_return_val_if_fail (text != NULL, -1);
-
- return GTK_CLIST_GET_CLASS (clist)->insert_row (clist, 0, text);
-}
-
-gint
-gtk_clist_append (GtkCList *clist,
- gchar *text[])
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
- g_return_val_if_fail (text != NULL, -1);
-
- return GTK_CLIST_GET_CLASS (clist)->insert_row (clist, clist->rows, text);
-}
-
-gint
-gtk_clist_insert (GtkCList *clist,
- gint row,
- gchar *text[])
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
- g_return_val_if_fail (text != NULL, -1);
-
- if (row < 0 || row > clist->rows)
- row = clist->rows;
-
- return GTK_CLIST_GET_CLASS (clist)->insert_row (clist, row, text);
-}
-
-void
-gtk_clist_remove (GtkCList *clist,
- gint row)
-{
- GTK_CLIST_GET_CLASS (clist)->remove_row (clist, row);
-}
-
-void
-gtk_clist_clear (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- GTK_CLIST_GET_CLASS (clist)->clear (clist);
-}
-
-/* PRIVATE INSERT/REMOVE ROW FUNCTIONS
- * real_insert_row
- * real_remove_row
- * real_clear
- * real_row_move
- */
-static gint
-real_insert_row (GtkCList *clist,
- gint row,
- gchar *text[])
-{
- gint i;
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
- g_return_val_if_fail (text != NULL, -1);
-
- /* return if out of bounds */
- if (row < 0 || row > clist->rows)
- return -1;
-
- /* create the row */
- clist_row = row_new (clist);
-
- /* set the text in the row's columns */
- for (i = 0; i < clist->columns; i++)
- if (text[i])
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, clist_row, i, GTK_CELL_TEXT, text[i], 0, NULL ,NULL);
-
- if (!clist->rows)
- {
- clist->row_list = g_list_append (clist->row_list, clist_row);
- clist->row_list_end = clist->row_list;
- }
- else
- {
- if (GTK_CLIST_AUTO_SORT(clist)) /* override insertion pos */
- {
- GList *work;
-
- row = 0;
- work = clist->row_list;
-
- if (clist->sort_type == GTK_SORT_ASCENDING)
- {
- while (row < clist->rows &&
- clist->compare (clist, clist_row,
- GTK_CLIST_ROW (work)) > 0)
- {
- row++;
- work = work->next;
- }
- }
- else
- {
- while (row < clist->rows &&
- clist->compare (clist, clist_row,
- GTK_CLIST_ROW (work)) < 0)
- {
- row++;
- work = work->next;
- }
- }
- }
-
- /* reset the row end pointer if we're inserting at the end of the list */
- if (row == clist->rows)
- clist->row_list_end = (g_list_append (clist->row_list_end,
- clist_row))->next;
- else
- clist->row_list = g_list_insert (clist->row_list, clist_row, row);
-
- }
- clist->rows++;
-
- if (row < ROW_FROM_YPIXEL (clist, 0))
- clist->voffset -= (clist->row_height + CELL_SPACING);
-
- /* syncronize the selection list */
- sync_selection (clist, row, SYNC_INSERT);
-
- if (clist->rows == 1)
- {
- clist->focus_row = 0;
- if (clist->selection_mode == GTK_SELECTION_BROWSE)
- gtk_clist_select_row (clist, 0, -1);
- }
-
- /* redraw the list if it isn't frozen */
- if (CLIST_UNFROZEN (clist))
- {
- adjust_adjustments (clist, FALSE);
-
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- draw_rows (clist, NULL);
- }
-
- return row;
-}
-
-static void
-real_remove_row (GtkCList *clist,
- gint row)
-{
- gint was_visible;
- GList *list;
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- /* return if out of bounds */
- if (row < 0 || row > (clist->rows - 1))
- return;
-
- was_visible = (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE);
-
- /* get the row we're going to delete */
- list = ROW_ELEMENT (clist, row);
- g_assert (list != NULL);
- clist_row = list->data;
-
- /* if we're removing a selected row, we have to make sure
- * it's properly unselected, and then sync up the clist->selected
- * list to reflect the deincrimented indexies of rows after the
- * removal */
- if (clist_row->state == GTK_STATE_SELECTED)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- row, -1, NULL);
-
- sync_selection (clist, row, SYNC_REMOVE);
-
- /* reset the row end pointer if we're removing at the end of the list */
- clist->rows--;
- if (clist->row_list == list)
- clist->row_list = g_list_next (list);
- if (clist->row_list_end == list)
- clist->row_list_end = g_list_previous (list);
- list = g_list_remove (list, clist_row);
-
- if (row < ROW_FROM_YPIXEL (clist, 0))
- clist->voffset += clist->row_height + CELL_SPACING;
-
- if (clist->selection_mode == GTK_SELECTION_BROWSE && !clist->selection &&
- clist->focus_row >= 0)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- clist->focus_row, -1, NULL);
-
- /* toast the row */
- row_delete (clist, clist_row);
-
- /* redraw the row if it isn't frozen */
- if (CLIST_UNFROZEN (clist))
- {
- adjust_adjustments (clist, FALSE);
-
- if (was_visible)
- draw_rows (clist, NULL);
- }
-}
-
-static void
-real_clear (GtkCList *clist)
-{
- GList *list;
- GList *free_list;
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- /* free up the selection list */
- g_list_free (clist->selection);
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
-
- clist->selection = NULL;
- clist->selection_end = NULL;
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- clist->voffset = 0;
- clist->focus_row = -1;
- clist->anchor = -1;
- clist->undo_anchor = -1;
- clist->anchor_state = GTK_STATE_SELECTED;
- clist->drag_pos = -1;
-
- /* remove all the rows */
- GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- free_list = clist->row_list;
- clist->row_list = NULL;
- clist->row_list_end = NULL;
- clist->rows = 0;
- for (list = free_list; list; list = list->next)
- row_delete (clist, GTK_CLIST_ROW (list));
- g_list_free (free_list);
- GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- {
- if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[i].button)
- gtk_clist_set_column_width
- (clist, i, (clist->column[i].button->requisition.width -
- (CELL_SPACING + (2 * COLUMN_INSET))));
- else
- gtk_clist_set_column_width (clist, i, 0);
- }
- /* zero-out the scrollbars */
- if (clist->vadjustment)
- {
- gtk_adjustment_set_value (clist->vadjustment, 0.0);
- CLIST_REFRESH (clist);
- }
- else
- gtk_widget_queue_resize (GTK_WIDGET (clist));
-}
-
-static void
-real_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row)
-{
- GtkCListRow *clist_row;
- GList *list;
- gint first, last;
- gint d;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (GTK_CLIST_AUTO_SORT(clist))
- return;
-
- if (source_row < 0 || source_row >= clist->rows ||
- dest_row < 0 || dest_row >= clist->rows ||
- source_row == dest_row)
- return;
-
- gtk_clist_freeze (clist);
-
- /* unlink source row */
- clist_row = ROW_ELEMENT (clist, source_row)->data;
- if (source_row == clist->rows - 1)
- clist->row_list_end = clist->row_list_end->prev;
- clist->row_list = g_list_remove (clist->row_list, clist_row);
- clist->rows--;
-
- /* relink source row */
- clist->row_list = g_list_insert (clist->row_list, clist_row, dest_row);
- if (dest_row == clist->rows)
- clist->row_list_end = clist->row_list_end->next;
- clist->rows++;
-
- /* sync selection */
- if (source_row > dest_row)
- {
- first = dest_row;
- last = source_row;
- d = 1;
- }
- else
- {
- first = source_row;
- last = dest_row;
- d = -1;
- }
-
- for (list = clist->selection; list; list = list->next)
- {
- if (list->data == GINT_TO_POINTER (source_row))
- list->data = GINT_TO_POINTER (dest_row);
- else if (first <= GPOINTER_TO_INT (list->data) &&
- last >= GPOINTER_TO_INT (list->data))
- list->data = GINT_TO_POINTER (GPOINTER_TO_INT (list->data) + d);
- }
-
- if (clist->focus_row == source_row)
- clist->focus_row = dest_row;
- else if (clist->focus_row > first)
- clist->focus_row += d;
-
- gtk_clist_thaw (clist);
-}
-
-/* PUBLIC ROW FUNCTIONS
- * gtk_clist_moveto
- * gtk_clist_set_row_height
- * gtk_clist_set_row_data
- * gtk_clist_set_row_data_full
- * gtk_clist_get_row_data
- * gtk_clist_find_row_from_data
- * gtk_clist_swap_rows
- * gtk_clist_row_move
- * gtk_clist_row_is_visible
- * gtk_clist_set_foreground
- * gtk_clist_set_background
- */
-void
-gtk_clist_moveto (GtkCList *clist,
- gint row,
- gint column,
- gfloat row_align,
- gfloat col_align)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < -1 || row >= clist->rows)
- return;
- if (column < -1 || column >= clist->columns)
- return;
-
- row_align = CLAMP (row_align, 0, 1);
- col_align = CLAMP (col_align, 0, 1);
-
- /* adjust horizontal scrollbar */
- if (clist->hadjustment && column >= 0)
- {
- gint x;
-
- x = (COLUMN_LEFT (clist, column) - CELL_SPACING - COLUMN_INSET -
- (col_align * (clist->clist_window_width - 2 * COLUMN_INSET -
- CELL_SPACING - clist->column[column].area.width)));
- if (x < 0)
- gtk_adjustment_set_value (clist->hadjustment, 0.0);
- else if (x > LIST_WIDTH (clist) - clist->clist_window_width)
- gtk_adjustment_set_value
- (clist->hadjustment, LIST_WIDTH (clist) - clist->clist_window_width);
- else
- gtk_adjustment_set_value (clist->hadjustment, x);
- }
-
- /* adjust vertical scrollbar */
- if (clist->vadjustment && row >= 0)
- move_vertical (clist, row, row_align);
-}
-
-void
-gtk_clist_set_row_height (GtkCList *clist,
- guint height)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- widget = GTK_WIDGET (clist);
-
- if (height > 0)
- {
- clist->row_height = height;
- GTK_CLIST_SET_FLAG (clist, CLIST_ROW_HEIGHT_SET);
- }
- else
- {
- GTK_CLIST_UNSET_FLAG (clist, CLIST_ROW_HEIGHT_SET);
- clist->row_height = 0;
- }
-
- if (widget->style->font_desc)
- {
- PangoContext *context = gtk_widget_get_pango_context (widget);
- PangoFontMetrics *metrics;
-
- metrics = pango_context_get_metrics (context,
- widget->style->font_desc,
- pango_context_get_language (context));
-
- if (!GTK_CLIST_ROW_HEIGHT_SET(clist))
- {
- clist->row_height = (pango_font_metrics_get_ascent (metrics) +
- pango_font_metrics_get_descent (metrics));
- clist->row_height = PANGO_PIXELS (clist->row_height);
- }
-
- pango_font_metrics_unref (metrics);
- }
-
- CLIST_REFRESH (clist);
-}
-
-void
-gtk_clist_set_row_data (GtkCList *clist,
- gint row,
- gpointer data)
-{
- gtk_clist_set_row_data_full (clist, row, data, NULL);
-}
-
-void
-gtk_clist_set_row_data_full (GtkCList *clist,
- gint row,
- gpointer data,
- GDestroyNotify destroy)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row > (clist->rows - 1))
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->destroy)
- clist_row->destroy (clist_row->data);
-
- clist_row->data = data;
- clist_row->destroy = destroy;
-}
-
-gpointer
-gtk_clist_get_row_data (GtkCList *clist,
- gint row)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- if (row < 0 || row > (clist->rows - 1))
- return NULL;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
- return clist_row->data;
-}
-
-gint
-gtk_clist_find_row_from_data (GtkCList *clist,
- gpointer data)
-{
- GList *list;
- gint n;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
-
- for (n = 0, list = clist->row_list; list; n++, list = list->next)
- if (GTK_CLIST_ROW (list)->data == data)
- return n;
-
- return -1;
-}
-
-void
-gtk_clist_swap_rows (GtkCList *clist,
- gint row1,
- gint row2)
-{
- gint first, last;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
- g_return_if_fail (row1 != row2);
-
- if (GTK_CLIST_AUTO_SORT(clist))
- return;
-
- gtk_clist_freeze (clist);
-
- first = MIN (row1, row2);
- last = MAX (row1, row2);
-
- gtk_clist_row_move (clist, last, first);
- gtk_clist_row_move (clist, first + 1, last);
-
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_clist_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (GTK_CLIST_AUTO_SORT(clist))
- return;
-
- if (source_row < 0 || source_row >= clist->rows ||
- dest_row < 0 || dest_row >= clist->rows ||
- source_row == dest_row)
- return;
-
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[ROW_MOVE],
- source_row, dest_row);
-}
-
-GtkVisibility
-gtk_clist_row_is_visible (GtkCList *clist,
- gint row)
-{
- gint top;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- if (row < 0 || row >= clist->rows)
- return GTK_VISIBILITY_NONE;
-
- if (clist->row_height == 0)
- return GTK_VISIBILITY_NONE;
-
- if (row < ROW_FROM_YPIXEL (clist, 0))
- return GTK_VISIBILITY_NONE;
-
- if (row > ROW_FROM_YPIXEL (clist, clist->clist_window_height))
- return GTK_VISIBILITY_NONE;
-
- top = ROW_TOP_YPIXEL (clist, row);
-
- if ((top < 0)
- || ((top + clist->row_height) >= clist->clist_window_height))
- return GTK_VISIBILITY_PARTIAL;
-
- return GTK_VISIBILITY_FULL;
-}
-
-void
-gtk_clist_set_foreground (GtkCList *clist,
- gint row,
- const GdkColor *color)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (color)
- {
- clist_row->foreground = *color;
- clist_row->fg_set = TRUE;
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (clist)),
- &clist_row->foreground, FALSE, TRUE);
- }
- else
- clist_row->fg_set = FALSE;
-
- if (CLIST_UNFROZEN (clist) && gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
-}
-
-void
-gtk_clist_set_background (GtkCList *clist,
- gint row,
- const GdkColor *color)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (color)
- {
- clist_row->background = *color;
- clist_row->bg_set = TRUE;
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (clist)),
- &clist_row->background, FALSE, TRUE);
- }
- else
- clist_row->bg_set = FALSE;
-
- if (CLIST_UNFROZEN (clist)
- && (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE))
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
-}
-
-/* PUBLIC ROW/CELL STYLE FUNCTIONS
- * gtk_clist_set_cell_style
- * gtk_clist_get_cell_style
- * gtk_clist_set_row_style
- * gtk_clist_get_row_style
- */
-void
-gtk_clist_set_cell_style (GtkCList *clist,
- gint row,
- gint column,
- GtkStyle *style)
-{
- GtkRequisition requisition = { 0 };
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < 0 || column >= clist->columns)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->cell[column].style == style)
- return;
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
-
- if (clist_row->cell[column].style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gtk_style_detach (clist_row->cell[column].style);
- g_object_unref (clist_row->cell[column].style);
- }
-
- clist_row->cell[column].style = style;
-
- if (clist_row->cell[column].style)
- {
- g_object_ref (clist_row->cell[column].style);
-
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- clist_row->cell[column].style =
- gtk_style_attach (clist_row->cell[column].style,
- clist->clist_window);
- }
-
- column_auto_resize (clist, clist_row, column, requisition.width);
-
- /* redraw the list if it's not frozen */
- if (CLIST_UNFROZEN (clist))
- {
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-GtkStyle *
-gtk_clist_get_cell_style (GtkCList *clist,
- gint row,
- gint column)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- if (row < 0 || row >= clist->rows || column < 0 || column >= clist->columns)
- return NULL;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- return clist_row->cell[column].style;
-}
-
-void
-gtk_clist_set_row_style (GtkCList *clist,
- gint row,
- GtkStyle *style)
-{
- GtkRequisition requisition;
- GtkCListRow *clist_row;
- gint *old_width;
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->style == style)
- return;
-
- old_width = g_new (gint, clist->columns);
-
- if (!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- i, &requisition);
- old_width[i] = requisition.width;
- }
- }
-
- if (clist_row->style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gtk_style_detach (clist_row->style);
- g_object_unref (clist_row->style);
- }
-
- clist_row->style = style;
-
- if (clist_row->style)
- {
- g_object_ref (clist_row->style);
-
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- clist_row->style = gtk_style_attach (clist_row->style,
- clist->clist_window);
- }
-
- if (GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- for (i = 0; i < clist->columns; i++)
- column_auto_resize (clist, clist_row, i, old_width[i]);
-
- g_free (old_width);
-
- /* redraw the list if it's not frozen */
- if (CLIST_UNFROZEN (clist))
- {
- if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-GtkStyle *
-gtk_clist_get_row_style (GtkCList *clist,
- gint row)
-{
- GtkCListRow *clist_row;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);
-
- if (row < 0 || row >= clist->rows)
- return NULL;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- return clist_row->style;
-}
-
-/* PUBLIC SELECTION FUNCTIONS
- * gtk_clist_set_selectable
- * gtk_clist_get_selectable
- * gtk_clist_select_row
- * gtk_clist_unselect_row
- * gtk_clist_select_all
- * gtk_clist_unselect_all
- * gtk_clist_undo_selection
- */
-void
-gtk_clist_set_selectable (GtkCList *clist,
- gint row,
- gboolean selectable)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (selectable == clist_row->selectable)
- return;
-
- clist_row->selectable = selectable;
-
- if (!selectable && clist_row->state == GTK_STATE_SELECTED)
- {
- if (clist->anchor >= 0 &&
- clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- clist->drag_button = 0;
- remove_grab (clist);
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- }
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- row, -1, NULL);
- }
-}
-
-gboolean
-gtk_clist_get_selectable (GtkCList *clist,
- gint row)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), FALSE);
-
- if (row < 0 || row >= clist->rows)
- return FALSE;
-
- return GTK_CLIST_ROW (ROW_ELEMENT (clist, row))->selectable;
-}
-
-void
-gtk_clist_select_row (GtkCList *clist,
- gint row,
- gint column)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < -1 || column >= clist->columns)
- return;
-
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- row, column, NULL);
-}
-
-void
-gtk_clist_unselect_row (GtkCList *clist,
- gint row,
- gint column)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row >= clist->rows)
- return;
- if (column < -1 || column >= clist->columns)
- return;
-
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- row, column, NULL);
-}
-
-void
-gtk_clist_select_all (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- GTK_CLIST_GET_CLASS (clist)->select_all (clist);
-}
-
-void
-gtk_clist_unselect_all (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- GTK_CLIST_GET_CLASS (clist)->unselect_all (clist);
-}
-
-void
-gtk_clist_undo_selection (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist->selection_mode == GTK_SELECTION_MULTIPLE &&
- (clist->undo_selection || clist->undo_unselection))
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNDO_SELECTION]);
-}
-
-/* PRIVATE SELECTION FUNCTIONS
- * selection_find
- * toggle_row
- * fake_toggle_row
- * toggle_focus_row
- * toggle_add_mode
- * real_select_row
- * real_unselect_row
- * real_select_all
- * real_unselect_all
- * fake_unselect_all
- * real_undo_selection
- * set_anchor
- * resync_selection
- * update_extended_selection
- * start_selection
- * end_selection
- * extend_selection
- * sync_selection
- */
-static GList *
-selection_find (GtkCList *clist,
- gint row_number,
- GList *row_list_element)
-{
- return g_list_find (clist->selection, GINT_TO_POINTER (row_number));
-}
-
-static void
-toggle_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event)
-{
- GtkCListRow *clist_row;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- case GTK_SELECTION_SINGLE:
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (!clist_row)
- return;
-
- if (clist_row->state == GTK_STATE_SELECTED)
- {
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- row, column, event);
- return;
- }
- case GTK_SELECTION_BROWSE:
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- row, column, event);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
-fake_toggle_row (GtkCList *clist,
- gint row)
-{
- GList *work;
-
- work = ROW_ELEMENT (clist, row);
-
- if (!work || !GTK_CLIST_ROW (work)->selectable)
- return;
-
- if (GTK_CLIST_ROW (work)->state == GTK_STATE_NORMAL)
- clist->anchor_state = GTK_CLIST_ROW (work)->state = GTK_STATE_SELECTED;
- else
- clist->anchor_state = GTK_CLIST_ROW (work)->state = GTK_STATE_NORMAL;
-
- if (CLIST_UNFROZEN (clist) &&
- gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row,
- GTK_CLIST_ROW (work));
-}
-
-static gboolean
-clist_has_grab (GtkCList *clist)
-{
- return (GTK_WIDGET_HAS_GRAB (clist) &&
- gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (clist))));
-}
-
-static void
-toggle_focus_row (GtkCList *clist)
-{
- g_return_if_fail (clist != 0);
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist) ||
- clist->focus_row < 0 || clist->focus_row >= clist->rows)
- return;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- toggle_row (clist, clist->focus_row, 0, NULL);
- break;
- case GTK_SELECTION_MULTIPLE:
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->anchor = clist->focus_row;
- clist->drag_pos = clist->focus_row;
- clist->undo_anchor = clist->focus_row;
-
- if (GTK_CLIST_ADD_MODE(clist))
- fake_toggle_row (clist, clist->focus_row);
- else
- GTK_CLIST_GET_CLASS (clist)->fake_unselect_all (clist,clist->focus_row);
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- break;
- default:
- break;
- }
-}
-
-static void
-toggle_add_mode (GtkCList *clist)
-{
- g_return_if_fail (clist != 0);
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist) ||
- clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- gtk_clist_draw_focus (GTK_WIDGET (clist));
- if (!GTK_CLIST_ADD_MODE(clist))
- {
- gint8 dashes[] = { 4, 4 };
-
- GTK_CLIST_SET_FLAG (clist, CLIST_ADD_MODE);
- gdk_gc_set_line_attributes (clist->xor_gc, 1,
- GDK_LINE_ON_OFF_DASH, 0, 0);
- gdk_gc_set_dashes (clist->xor_gc, 0, dashes, G_N_ELEMENTS (dashes));
- }
- else
- {
- GTK_CLIST_UNSET_FLAG (clist, CLIST_ADD_MODE);
- gdk_gc_set_line_attributes (clist->xor_gc, 1, GDK_LINE_SOLID, 0, 0);
- clist->anchor_state = GTK_STATE_SELECTED;
- }
- gtk_clist_draw_focus (GTK_WIDGET (clist));
-}
-
-static void
-real_select_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event)
-{
- GtkCListRow *clist_row;
- GList *list;
- gint sel_row;
- gboolean row_selected;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row > (clist->rows - 1))
- return;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
-
- row_selected = FALSE;
- list = clist->selection;
-
- while (list)
- {
- sel_row = GPOINTER_TO_INT (list->data);
- list = list->next;
-
- if (row == sel_row)
- row_selected = TRUE;
- else
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- sel_row, column, event);
- }
-
- if (row_selected)
- return;
-
- default:
- break;
- }
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->state != GTK_STATE_NORMAL || !clist_row->selectable)
- return;
-
- clist_row->state = GTK_STATE_SELECTED;
- if (!clist->selection)
- {
- clist->selection = g_list_append (clist->selection,
- GINT_TO_POINTER (row));
- clist->selection_end = clist->selection;
- }
- else
- clist->selection_end =
- g_list_append (clist->selection_end, GINT_TO_POINTER (row))->next;
-
- if (CLIST_UNFROZEN (clist)
- && (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE))
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
-}
-
-static void
-real_unselect_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event)
-{
- GtkCListRow *clist_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (row < 0 || row > (clist->rows - 1))
- return;
-
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- if (clist_row->state == GTK_STATE_SELECTED)
- {
- clist_row->state = GTK_STATE_NORMAL;
-
- if (clist->selection_end &&
- clist->selection_end->data == GINT_TO_POINTER (row))
- clist->selection_end = clist->selection_end->prev;
-
- clist->selection = g_list_remove (clist->selection,
- GINT_TO_POINTER (row));
-
- if (CLIST_UNFROZEN (clist)
- && (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE))
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, clist_row);
- }
-}
-
-static void
-real_select_all (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist))
- return;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
- return;
-
- case GTK_SELECTION_MULTIPLE:
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- if (clist->rows &&
- ((GtkCListRow *) (clist->row_list->data))->state !=
- GTK_STATE_SELECTED)
- fake_toggle_row (clist, 0);
-
- clist->anchor_state = GTK_STATE_SELECTED;
- clist->anchor = 0;
- clist->drag_pos = 0;
- clist->undo_anchor = clist->focus_row;
- update_extended_selection (clist, clist->rows);
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- return;
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
-real_unselect_all (GtkCList *clist)
-{
- GList *list;
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist))
- return;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- if (clist->focus_row >= 0)
- {
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[SELECT_ROW],
- clist->focus_row, -1, NULL);
- return;
- }
- break;
- case GTK_SELECTION_MULTIPLE:
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->anchor = -1;
- clist->drag_pos = -1;
- clist->undo_anchor = clist->focus_row;
- break;
- default:
- break;
- }
-
- list = clist->selection;
- while (list)
- {
- i = GPOINTER_TO_INT (list->data);
- list = list->next;
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[UNSELECT_ROW], i, -1, NULL);
- }
-}
-
-static void
-fake_unselect_all (GtkCList *clist,
- gint row)
-{
- GList *list;
- GList *work;
- gint i;
-
- if (row >= 0 && (work = ROW_ELEMENT (clist, row)))
- {
- if (GTK_CLIST_ROW (work)->state == GTK_STATE_NORMAL &&
- GTK_CLIST_ROW (work)->selectable)
- {
- GTK_CLIST_ROW (work)->state = GTK_STATE_SELECTED;
-
- if (CLIST_UNFROZEN (clist) &&
- gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row,
- GTK_CLIST_ROW (work));
- }
- }
-
- clist->undo_selection = clist->selection;
- clist->selection = NULL;
- clist->selection_end = NULL;
-
- for (list = clist->undo_selection; list; list = list->next)
- {
- if ((i = GPOINTER_TO_INT (list->data)) == row ||
- !(work = g_list_nth (clist->row_list, i)))
- continue;
-
- GTK_CLIST_ROW (work)->state = GTK_STATE_NORMAL;
- if (CLIST_UNFROZEN (clist) &&
- gtk_clist_row_is_visible (clist, i) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, i,
- GTK_CLIST_ROW (work));
- }
-}
-
-static void
-real_undo_selection (GtkCList *clist)
-{
- GList *work;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist) ||
- clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- if (!(clist->undo_selection || clist->undo_unselection))
- {
- gtk_clist_unselect_all (clist);
- return;
- }
-
- for (work = clist->undo_selection; work; work = work->next)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- GPOINTER_TO_INT (work->data), -1, NULL);
-
- for (work = clist->undo_unselection; work; work = work->next)
- {
- /* g_print ("unselect %d\n",GPOINTER_TO_INT (work->data)); */
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- GPOINTER_TO_INT (work->data), -1, NULL);
- }
-
- if (gtk_widget_has_focus (GTK_WIDGET (clist)) && clist->focus_row != clist->undo_anchor)
- {
- gtk_clist_draw_focus (GTK_WIDGET (clist));
- clist->focus_row = clist->undo_anchor;
- gtk_clist_draw_focus (GTK_WIDGET (clist));
- }
- else
- clist->focus_row = clist->undo_anchor;
-
- clist->undo_anchor = -1;
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- if (ROW_TOP_YPIXEL (clist, clist->focus_row) + clist->row_height >
- clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- else if (ROW_TOP_YPIXEL (clist, clist->focus_row) < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
-}
-
-static void
-set_anchor (GtkCList *clist,
- gboolean add_mode,
- gint anchor,
- gint undo_anchor)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist->selection_mode != GTK_SELECTION_MULTIPLE || clist->anchor >= 0)
- return;
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- if (add_mode)
- fake_toggle_row (clist, anchor);
- else
- {
- GTK_CLIST_GET_CLASS (clist)->fake_unselect_all (clist, anchor);
- clist->anchor_state = GTK_STATE_SELECTED;
- }
-
- clist->anchor = anchor;
- clist->drag_pos = anchor;
- clist->undo_anchor = undo_anchor;
-}
-
-static void
-resync_selection (GtkCList *clist,
- GdkEvent *event)
-{
- gint i;
- gint e;
- gint row;
- GList *list;
- GtkCListRow *clist_row;
-
- if (clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- if (clist->anchor < 0 || clist->drag_pos < 0)
- return;
-
- gtk_clist_freeze (clist);
-
- i = MIN (clist->anchor, clist->drag_pos);
- e = MAX (clist->anchor, clist->drag_pos);
-
- if (clist->undo_selection)
- {
- list = clist->selection;
- clist->selection = clist->undo_selection;
- clist->selection_end = g_list_last (clist->selection);
- clist->undo_selection = list;
- list = clist->selection;
- while (list)
- {
- row = GPOINTER_TO_INT (list->data);
- list = list->next;
- if (row < i || row > e)
- {
- clist_row = g_list_nth (clist->row_list, row)->data;
- if (clist_row->selectable)
- {
- clist_row->state = GTK_STATE_SELECTED;
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[UNSELECT_ROW],
- row, -1, event);
- clist->undo_selection = g_list_prepend
- (clist->undo_selection, GINT_TO_POINTER (row));
- }
- }
- }
- }
-
- if (clist->anchor < clist->drag_pos)
- {
- for (list = g_list_nth (clist->row_list, i); i <= e;
- i++, list = list->next)
- if (GTK_CLIST_ROW (list)->selectable)
- {
- if (g_list_find (clist->selection, GINT_TO_POINTER(i)))
- {
- if (GTK_CLIST_ROW (list)->state == GTK_STATE_NORMAL)
- {
- GTK_CLIST_ROW (list)->state = GTK_STATE_SELECTED;
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[UNSELECT_ROW],
- i, -1, event);
- clist->undo_selection =
- g_list_prepend (clist->undo_selection,
- GINT_TO_POINTER (i));
- }
- }
- else if (GTK_CLIST_ROW (list)->state == GTK_STATE_SELECTED)
- {
- GTK_CLIST_ROW (list)->state = GTK_STATE_NORMAL;
- clist->undo_unselection =
- g_list_prepend (clist->undo_unselection,
- GINT_TO_POINTER (i));
- }
- }
- }
- else
- {
- for (list = g_list_nth (clist->row_list, e); i <= e;
- e--, list = list->prev)
- if (GTK_CLIST_ROW (list)->selectable)
- {
- if (g_list_find (clist->selection, GINT_TO_POINTER(e)))
- {
- if (GTK_CLIST_ROW (list)->state == GTK_STATE_NORMAL)
- {
- GTK_CLIST_ROW (list)->state = GTK_STATE_SELECTED;
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[UNSELECT_ROW],
- e, -1, event);
- clist->undo_selection =
- g_list_prepend (clist->undo_selection,
- GINT_TO_POINTER (e));
- }
- }
- else if (GTK_CLIST_ROW (list)->state == GTK_STATE_SELECTED)
- {
- GTK_CLIST_ROW (list)->state = GTK_STATE_NORMAL;
- clist->undo_unselection =
- g_list_prepend (clist->undo_unselection,
- GINT_TO_POINTER (e));
- }
- }
- }
-
- clist->undo_unselection = g_list_reverse (clist->undo_unselection);
- for (list = clist->undo_unselection; list; list = list->next)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- GPOINTER_TO_INT (list->data), -1, event);
-
- clist->anchor = -1;
- clist->drag_pos = -1;
-
- gtk_clist_thaw (clist);
-}
-
-static void
-update_extended_selection (GtkCList *clist,
- gint row)
-{
- gint i;
- GList *list;
- GdkRectangle area;
- gint s1 = -1;
- gint s2 = -1;
- gint e1 = -1;
- gint e2 = -1;
- gint y1 = clist->clist_window_height;
- gint y2 = clist->clist_window_height;
- gint h1 = 0;
- gint h2 = 0;
- gint top;
-
- if (clist->selection_mode != GTK_SELECTION_MULTIPLE || clist->anchor == -1)
- return;
-
- if (row < 0)
- row = 0;
- if (row >= clist->rows)
- row = clist->rows - 1;
-
- /* extending downwards */
- if (row > clist->drag_pos && clist->anchor <= clist->drag_pos)
- {
- s2 = clist->drag_pos + 1;
- e2 = row;
- }
- /* extending upwards */
- else if (row < clist->drag_pos && clist->anchor >= clist->drag_pos)
- {
- s2 = row;
- e2 = clist->drag_pos - 1;
- }
- else if (row < clist->drag_pos && clist->anchor < clist->drag_pos)
- {
- e1 = clist->drag_pos;
- /* row and drag_pos on different sides of anchor :
- take back the selection between anchor and drag_pos,
- select between anchor and row */
- if (row < clist->anchor)
- {
- s1 = clist->anchor + 1;
- s2 = row;
- e2 = clist->anchor - 1;
- }
- /* take back the selection between anchor and drag_pos */
- else
- s1 = row + 1;
- }
- else if (row > clist->drag_pos && clist->anchor > clist->drag_pos)
- {
- s1 = clist->drag_pos;
- /* row and drag_pos on different sides of anchor :
- take back the selection between anchor and drag_pos,
- select between anchor and row */
- if (row > clist->anchor)
- {
- e1 = clist->anchor - 1;
- s2 = clist->anchor + 1;
- e2 = row;
- }
- /* take back the selection between anchor and drag_pos */
- else
- e1 = row - 1;
- }
-
- clist->drag_pos = row;
-
- area.x = 0;
- area.width = clist->clist_window_width;
-
- /* restore the elements between s1 and e1 */
- if (s1 >= 0)
- {
- for (i = s1, list = g_list_nth (clist->row_list, i); i <= e1;
- i++, list = list->next)
- if (GTK_CLIST_ROW (list)->selectable)
- {
- if (GTK_CLIST_GET_CLASS (clist)->selection_find (clist, i, list))
- GTK_CLIST_ROW (list)->state = GTK_STATE_SELECTED;
- else
- GTK_CLIST_ROW (list)->state = GTK_STATE_NORMAL;
- }
-
- top = ROW_TOP_YPIXEL (clist, clist->focus_row);
-
- if (top + clist->row_height <= 0)
- {
- area.y = 0;
- area.height = ROW_TOP_YPIXEL (clist, e1) + clist->row_height;
- draw_rows (clist, &area);
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- }
- else if (top >= clist->clist_window_height)
- {
- area.y = ROW_TOP_YPIXEL (clist, s1) - 1;
- area.height = clist->clist_window_height - area.y;
- draw_rows (clist, &area);
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- }
- else if (top < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- else if (top + clist->row_height > clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
-
- y1 = ROW_TOP_YPIXEL (clist, s1) - 1;
- h1 = (e1 - s1 + 1) * (clist->row_height + CELL_SPACING);
- }
-
- /* extend the selection between s2 and e2 */
- if (s2 >= 0)
- {
- for (i = s2, list = g_list_nth (clist->row_list, i); i <= e2;
- i++, list = list->next)
- if (GTK_CLIST_ROW (list)->selectable &&
- GTK_CLIST_ROW (list)->state != clist->anchor_state)
- GTK_CLIST_ROW (list)->state = clist->anchor_state;
-
- top = ROW_TOP_YPIXEL (clist, clist->focus_row);
-
- if (top + clist->row_height <= 0)
- {
- area.y = 0;
- area.height = ROW_TOP_YPIXEL (clist, e2) + clist->row_height;
- draw_rows (clist, &area);
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- }
- else if (top >= clist->clist_window_height)
- {
- area.y = ROW_TOP_YPIXEL (clist, s2) - 1;
- area.height = clist->clist_window_height - area.y;
- draw_rows (clist, &area);
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- }
- else if (top < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- else if (top + clist->row_height > clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
-
- y2 = ROW_TOP_YPIXEL (clist, s2) - 1;
- h2 = (e2 - s2 + 1) * (clist->row_height + CELL_SPACING);
- }
-
- area.y = MAX (0, MIN (y1, y2));
- if (area.y > clist->clist_window_height)
- area.y = 0;
- area.height = MIN (clist->clist_window_height, h1 + h2);
- if (s1 >= 0 && s2 >= 0)
- area.height += (clist->row_height + CELL_SPACING);
- draw_rows (clist, &area);
-}
-
-static void
-start_selection (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist))
- return;
-
- set_anchor (clist, GTK_CLIST_ADD_MODE(clist), clist->focus_row,
- clist->focus_row);
-}
-
-static void
-end_selection (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (clist))) &&
- gtk_widget_has_focus (GTK_WIDGET (clist)))
- return;
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-}
-
-static void
-extend_selection (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist) ||
- clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- if (auto_start_selection)
- set_anchor (clist, GTK_CLIST_ADD_MODE(clist), clist->focus_row,
- clist->focus_row);
- else if (clist->anchor == -1)
- return;
-
- move_focus_row (clist, scroll_type, position);
-
- if (ROW_TOP_YPIXEL (clist, clist->focus_row) + clist->row_height >
- clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- else if (ROW_TOP_YPIXEL (clist, clist->focus_row) < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
-
- update_extended_selection (clist, clist->focus_row);
-}
-
-static void
-sync_selection (GtkCList *clist,
- gint row,
- gint mode)
-{
- GList *list;
- gint d;
-
- if (mode == SYNC_INSERT)
- d = 1;
- else
- d = -1;
-
- if (clist->focus_row >= row)
- {
- if (d > 0 || clist->focus_row > row)
- clist->focus_row += d;
- if (clist->focus_row == -1 && clist->rows >= 1)
- clist->focus_row = 0;
- else if (d < 0 && clist->focus_row >= clist->rows - 1)
- clist->focus_row = clist->rows - 2;
- else if (clist->focus_row >= clist->rows) /* Paranoia */
- clist->focus_row = clist->rows - 1;
- }
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->anchor = -1;
- clist->drag_pos = -1;
- clist->undo_anchor = clist->focus_row;
-
- list = clist->selection;
-
- while (list)
- {
- if (GPOINTER_TO_INT (list->data) >= row)
- list->data = ((gchar*) list->data) + d;
- list = list->next;
- }
-}
-
-/* GTKOBJECT
- * gtk_clist_destroy
- * gtk_clist_finalize
- */
-static void
-gtk_clist_destroy (GtkObject *object)
-{
- gint i;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (object));
-
- clist = GTK_CLIST (object);
-
- /* freeze the list */
- clist->freeze_count++;
-
- /* get rid of all the rows */
- gtk_clist_clear (clist);
-
- /* Since we don't have a _remove method, unparent the children
- * instead of destroying them so the focus will be unset properly.
- * (For other containers, the _remove method takes care of the
- * unparent) The destroy will happen when the refcount drops
- * to zero.
- */
-
- /* unref adjustments */
- if (clist->hadjustment)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (clist->hadjustment), clist);
- g_object_unref (clist->hadjustment);
- clist->hadjustment = NULL;
- }
- if (clist->vadjustment)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (clist->vadjustment), clist);
- g_object_unref (clist->vadjustment);
- clist->vadjustment = NULL;
- }
-
- remove_grab (clist);
-
- /* destroy the column buttons */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button)
- {
- gtk_widget_unparent (clist->column[i].button);
- clist->column[i].button = NULL;
- }
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static void
-gtk_clist_finalize (GObject *object)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (object));
-
- clist = GTK_CLIST (object);
-
- columns_delete (clist);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-/* GTKWIDGET
- * gtk_clist_realize
- * gtk_clist_unrealize
- * gtk_clist_map
- * gtk_clist_unmap
- * gtk_clist_expose
- * gtk_clist_style_set
- * gtk_clist_button_press
- * gtk_clist_button_release
- * gtk_clist_motion
- * gtk_clist_size_request
- * gtk_clist_size_allocate
- */
-static void
-gtk_clist_realize (GtkWidget *widget)
-{
- GtkCList *clist;
- GdkWindowAttr attributes;
- GdkGCValues values;
- GtkCListRow *clist_row;
- GList *list;
- gint attributes_mask;
- gint border_width;
- gint i;
- gint j;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
- clist = GTK_CLIST (widget);
-
- gtk_widget_set_realized (widget, TRUE);
-
- border_width = GTK_CONTAINER (widget)->border_width;
-
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.x = widget->allocation.x + border_width;
- attributes.y = widget->allocation.y + border_width;
- attributes.width = widget->allocation.width - border_width * 2;
- attributes.height = widget->allocation.height - border_width * 2;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget);
- attributes.event_mask |= (GDK_EXPOSURE_MASK |
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_KEY_RELEASE_MASK);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- /* main window */
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
- &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, clist);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
-
- gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
-
- /* column-title window */
-
- attributes.x = clist->column_title_area.x;
- attributes.y = clist->column_title_area.y;
- attributes.width = clist->column_title_area.width;
- attributes.height = clist->column_title_area.height;
-
- clist->title_window = gdk_window_new (widget->window, &attributes,
- attributes_mask);
- gdk_window_set_user_data (clist->title_window, clist);
-
- gtk_style_set_background (widget->style, clist->title_window,
- GTK_STATE_NORMAL);
- gdk_window_show (clist->title_window);
-
- /* set things up so column buttons are drawn in title window */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button)
- gtk_widget_set_parent_window (clist->column[i].button,
- clist->title_window);
-
- /* clist-window */
- attributes.x = (clist->internal_allocation.x +
- widget->style->xthickness);
- attributes.y = (clist->internal_allocation.y +
- widget->style->ythickness +
- clist->column_title_area.height);
- attributes.width = clist->clist_window_width;
- attributes.height = clist->clist_window_height;
-
- clist->clist_window = gdk_window_new (widget->window, &attributes,
- attributes_mask);
- gdk_window_set_user_data (clist->clist_window, clist);
-
- gdk_window_set_background (clist->clist_window,
- &widget->style->base[GTK_STATE_NORMAL]);
- gdk_window_show (clist->clist_window);
- gdk_drawable_get_size (clist->clist_window, &clist->clist_window_width,
- &clist->clist_window_height);
-
- /* create resize windows */
- attributes.wclass = GDK_INPUT_ONLY;
- attributes.event_mask = (GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_MASK |
- GDK_POINTER_MOTION_HINT_MASK);
- attributes_mask = GDK_WA_CURSOR;
- attributes.cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget),
- GDK_SB_H_DOUBLE_ARROW);
- clist->cursor_drag = attributes.cursor;
-
- attributes.x = LIST_WIDTH (clist) + 1;
- attributes.y = 0;
- attributes.width = 0;
- attributes.height = 0;
-
- for (i = 0; i < clist->columns; i++)
- {
- clist->column[i].window = gdk_window_new (clist->title_window,
- &attributes, attributes_mask);
- gdk_window_set_user_data (clist->column[i].window, clist);
- }
-
- /* This is slightly less efficient than creating them with the
- * right size to begin with, but easier
- */
- size_allocate_title_buttons (clist);
-
- /* GCs */
- clist->fg_gc = gdk_gc_new (widget->window);
- clist->bg_gc = gdk_gc_new (widget->window);
-
- /* We'll use this gc to do scrolling as well */
- gdk_gc_set_exposures (clist->fg_gc, TRUE);
-
- values.foreground = (widget->style->white.pixel==0 ?
- widget->style->black:widget->style->white);
- values.function = GDK_XOR;
- values.subwindow_mode = GDK_INCLUDE_INFERIORS;
- clist->xor_gc = gdk_gc_new_with_values (widget->window,
- &values,
- GDK_GC_FOREGROUND |
- GDK_GC_FUNCTION |
- GDK_GC_SUBWINDOW);
-
- /* attach optional row/cell styles, allocate foreground/background colors */
- list = clist->row_list;
- for (i = 0; i < clist->rows; i++)
- {
- clist_row = list->data;
- list = list->next;
-
- if (clist_row->style)
- clist_row->style = gtk_style_attach (clist_row->style,
- clist->clist_window);
-
- if (clist_row->fg_set || clist_row->bg_set)
- {
- GdkColormap *colormap;
-
- colormap = gtk_widget_get_colormap (widget);
- if (clist_row->fg_set)
- gdk_colormap_alloc_color (colormap, &clist_row->foreground,
- FALSE, TRUE);
- if (clist_row->bg_set)
- gdk_colormap_alloc_color (colormap, &clist_row->background,
- FALSE, TRUE);
- }
-
- for (j = 0; j < clist->columns; j++)
- if (clist_row->cell[j].style)
- clist_row->cell[j].style =
- gtk_style_attach (clist_row->cell[j].style, clist->clist_window);
- }
-}
-
-static void
-gtk_clist_unrealize (GtkWidget *widget)
-{
- gint i;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
- clist = GTK_CLIST (widget);
-
- /* freeze the list */
- clist->freeze_count++;
-
- if (gtk_widget_get_mapped (widget))
- gtk_clist_unmap (widget);
-
- gtk_widget_set_mapped (widget, FALSE);
-
- /* detach optional row/cell styles */
- if (gtk_widget_get_realized (widget))
- {
- GtkCListRow *clist_row;
- GList *list;
- gint j;
-
- list = clist->row_list;
- for (i = 0; i < clist->rows; i++)
- {
- clist_row = list->data;
- list = list->next;
-
- if (clist_row->style)
- gtk_style_detach (clist_row->style);
- for (j = 0; j < clist->columns; j++)
- if (clist_row->cell[j].style)
- gtk_style_detach (clist_row->cell[j].style);
- }
- }
-
- gdk_cursor_unref (clist->cursor_drag);
- g_object_unref (clist->xor_gc);
- g_object_unref (clist->fg_gc);
- g_object_unref (clist->bg_gc);
-
- for (i = 0; i < clist->columns; i++)
- {
- if (clist->column[i].button)
- gtk_widget_unrealize (clist->column[i].button);
- if (clist->column[i].window)
- {
- gdk_window_set_user_data (clist->column[i].window, NULL);
- gdk_window_destroy (clist->column[i].window);
- clist->column[i].window = NULL;
- }
- }
-
- gdk_window_set_user_data (clist->clist_window, NULL);
- gdk_window_destroy (clist->clist_window);
- clist->clist_window = NULL;
-
- gdk_window_set_user_data (clist->title_window, NULL);
- gdk_window_destroy (clist->title_window);
- clist->title_window = NULL;
-
- clist->cursor_drag = NULL;
- clist->xor_gc = NULL;
- clist->fg_gc = NULL;
- clist->bg_gc = NULL;
-
- GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
-}
-
-static void
-gtk_clist_map (GtkWidget *widget)
-{
- gint i;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
- clist = GTK_CLIST (widget);
-
- if (!gtk_widget_get_mapped (widget))
- {
- gtk_widget_set_mapped (widget, TRUE);
-
- /* map column buttons */
- for (i = 0; i < clist->columns; i++)
- {
- if (clist->column[i].button &&
- gtk_widget_get_visible (clist->column[i].button) &&
- !gtk_widget_get_mapped (clist->column[i].button))
- gtk_widget_map (clist->column[i].button);
- }
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].window && clist->column[i].button)
- {
- gdk_window_raise (clist->column[i].window);
- gdk_window_show (clist->column[i].window);
- }
-
- gdk_window_show (clist->title_window);
- gdk_window_show (clist->clist_window);
- gdk_window_show (widget->window);
-
- /* unfreeze the list */
- clist->freeze_count = 0;
- }
-}
-
-static void
-gtk_clist_unmap (GtkWidget *widget)
-{
- gint i;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
- clist = GTK_CLIST (widget);
-
- if (gtk_widget_get_mapped (widget))
- {
- gtk_widget_set_mapped (widget, FALSE);
-
- if (clist_has_grab (clist))
- {
- remove_grab (clist);
-
- GTK_CLIST_GET_CLASS (widget)->resync_selection (clist, NULL);
-
- clist->click_cell.row = -1;
- clist->click_cell.column = -1;
- clist->drag_button = 0;
-
- if (GTK_CLIST_IN_DRAG(clist))
- {
- gpointer drag_data;
-
- GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
- drag_data = gtk_object_get_data (GTK_OBJECT (clist),
- "gtk-site-data");
- if (drag_data)
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (clist),
- drag_data);
- }
- }
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].window)
- gdk_window_hide (clist->column[i].window);
-
- gdk_window_hide (clist->clist_window);
- gdk_window_hide (clist->title_window);
- gdk_window_hide (widget->window);
-
- /* unmap column buttons */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button &&
- gtk_widget_get_mapped (clist->column[i].button))
- gtk_widget_unmap (clist->column[i].button);
-
- /* freeze the list */
- clist->freeze_count++;
- }
-}
-
-static gint
-gtk_clist_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- GtkCList *clist;
-
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- clist = GTK_CLIST (widget);
-
- /* draw border */
- if (event->window == widget->window)
- gtk_draw_shadow (widget->style, widget->window,
- GTK_STATE_NORMAL, clist->shadow_type,
- 0, 0,
- clist->clist_window_width +
- (2 * widget->style->xthickness),
- clist->clist_window_height +
- (2 * widget->style->ythickness) +
- clist->column_title_area.height);
-
- /* exposure events on the list */
- if (event->window == clist->clist_window)
- draw_rows (clist, &event->area);
-
- if (event->window == clist->clist_window &&
- clist->drag_highlight_row >= 0)
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist, g_list_nth (clist->row_list,
- clist->drag_highlight_row)->data,
- clist->drag_highlight_row, clist->drag_highlight_pos);
-
- if (event->window == clist->title_window)
- {
- gint i;
-
- for (i = 0; i < clist->columns; i++)
- {
- if (clist->column[i].button)
- gtk_container_propagate_expose (GTK_CONTAINER (clist),
- clist->column[i].button,
- event);
- }
- }
- }
-
- return FALSE;
-}
-
-static void
-gtk_clist_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- GtkCList *clist = GTK_CLIST (widget);
-
- GTK_WIDGET_CLASS (parent_class)->style_set (widget, previous_style);
-
- if (gtk_widget_get_realized (widget))
- {
- gtk_style_set_background (widget->style, widget->window, widget->state);
- gtk_style_set_background (widget->style, clist->title_window, GTK_STATE_SELECTED);
- gdk_window_set_background (clist->clist_window, &widget->style->base[GTK_STATE_NORMAL]);
- }
-
- /* Fill in data after widget has correct style */
-
- /* text properties */
- if (!GTK_CLIST_ROW_HEIGHT_SET(clist))
- /* Reset clist->row_height */
- gtk_clist_set_row_height (clist, 0);
-
- /* Column widths */
- if (!GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- gint width;
- gint i;
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- {
- width = gtk_clist_optimal_column_width (clist, i);
- if (width != clist->column[i].width)
- gtk_clist_set_column_width (clist, i, width);
- }
- }
-}
-
-static gint
-gtk_clist_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- gint i;
- GtkCList *clist;
- gint x;
- gint y;
- gint row;
- gint column;
- gint button_actions;
-
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- clist = GTK_CLIST (widget);
-
- button_actions = clist->button_actions[event->button - 1];
-
- if (button_actions == GTK_BUTTON_IGNORED)
- return FALSE;
-
- /* selections on the list */
- if (event->window == clist->clist_window)
- {
- x = event->x;
- y = event->y;
-
- if (get_selection_info (clist, x, y, &row, &column))
- {
- gint old_row = clist->focus_row;
-
- if (clist->focus_row == -1)
- old_row = row;
-
- if (event->type == GDK_BUTTON_PRESS)
- {
- GdkEventMask mask = ((1 << (4 + event->button)) |
- GDK_POINTER_MOTION_HINT_MASK |
- GDK_BUTTON_RELEASE_MASK);
-
- if (gdk_pointer_grab (clist->clist_window, FALSE, mask,
- NULL, NULL, event->time))
- return FALSE;
- gtk_grab_add (widget);
-
- clist->click_cell.row = row;
- clist->click_cell.column = column;
- clist->drag_button = event->button;
- }
- else
- {
- clist->click_cell.row = -1;
- clist->click_cell.column = -1;
-
- clist->drag_button = 0;
- remove_grab (clist);
- }
-
- if (button_actions & GTK_BUTTON_SELECTS)
- {
- if (GTK_CLIST_ADD_MODE(clist))
- {
- GTK_CLIST_UNSET_FLAG (clist, CLIST_ADD_MODE);
- if (gtk_widget_has_focus (widget))
- {
- gtk_clist_draw_focus (widget);
- gdk_gc_set_line_attributes (clist->xor_gc, 1,
- GDK_LINE_SOLID, 0, 0);
- clist->focus_row = row;
- gtk_clist_draw_focus (widget);
- }
- else
- {
- gdk_gc_set_line_attributes (clist->xor_gc, 1,
- GDK_LINE_SOLID, 0, 0);
- clist->focus_row = row;
- }
- }
- else if (row != clist->focus_row)
- {
- if (gtk_widget_has_focus (widget))
- {
- gtk_clist_draw_focus (widget);
- clist->focus_row = row;
- gtk_clist_draw_focus (widget);
- }
- else
- clist->focus_row = row;
- }
- }
-
- if (!gtk_widget_has_focus (widget))
- gtk_widget_grab_focus (widget);
-
- if (button_actions & GTK_BUTTON_SELECTS)
- {
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- if (event->type != GDK_BUTTON_PRESS)
- {
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[SELECT_ROW],
- row, column, event);
- clist->anchor = -1;
- }
- else
- clist->anchor = row;
- break;
- case GTK_SELECTION_BROWSE:
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[SELECT_ROW],
- row, column, event);
- break;
- case GTK_SELECTION_MULTIPLE:
- if (event->type != GDK_BUTTON_PRESS)
- {
- if (clist->anchor != -1)
- {
- update_extended_selection (clist, clist->focus_row);
- GTK_CLIST_GET_CLASS (clist)->resync_selection
- (clist, (GdkEvent *) event);
- }
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[SELECT_ROW],
- row, column, event);
- break;
- }
-
- if (event->state & GDK_CONTROL_MASK)
- {
- if (event->state & GDK_SHIFT_MASK)
- {
- if (clist->anchor < 0)
- {
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- clist->anchor = old_row;
- clist->drag_pos = old_row;
- clist->undo_anchor = old_row;
- }
- update_extended_selection (clist, clist->focus_row);
- }
- else
- {
- if (clist->anchor == -1)
- set_anchor (clist, TRUE, row, old_row);
- else
- update_extended_selection (clist,
- clist->focus_row);
- }
- break;
- }
-
- if (event->state & GDK_SHIFT_MASK)
- {
- set_anchor (clist, FALSE, old_row, old_row);
- update_extended_selection (clist, clist->focus_row);
- break;
- }
-
- if (clist->anchor == -1)
- set_anchor (clist, FALSE, row, old_row);
- else
- update_extended_selection (clist, clist->focus_row);
- break;
- default:
- break;
- }
- }
- }
- return TRUE;
- }
-
- /* press on resize windows */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].resizeable && clist->column[i].window &&
- event->window == clist->column[i].window)
- {
- gpointer drag_data;
-
- if (gdk_pointer_grab (clist->column[i].window, FALSE,
- GDK_POINTER_MOTION_HINT_MASK |
- GDK_BUTTON1_MOTION_MASK |
- GDK_BUTTON_RELEASE_MASK,
- NULL, NULL, event->time))
- return FALSE;
-
- gtk_grab_add (widget);
- GTK_CLIST_SET_FLAG (clist, CLIST_IN_DRAG);
-
- /* block attached dnd signal handler */
- drag_data = gtk_object_get_data (GTK_OBJECT (clist), "gtk-site-data");
- if (drag_data)
- gtk_signal_handler_block_by_data (GTK_OBJECT (clist), drag_data);
-
- if (!gtk_widget_has_focus (widget))
- gtk_widget_grab_focus (widget);
-
- clist->drag_pos = i;
- clist->x_drag = (COLUMN_LEFT_XPIXEL(clist, i) + COLUMN_INSET +
- clist->column[i].area.width + CELL_SPACING);
-
- if (GTK_CLIST_ADD_MODE(clist))
- gdk_gc_set_line_attributes (clist->xor_gc, 1, GDK_LINE_SOLID, 0, 0);
- draw_xor_line (clist);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-gtk_clist_button_release (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkCList *clist;
- gint button_actions;
-
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- clist = GTK_CLIST (widget);
-
- button_actions = clist->button_actions[event->button - 1];
- if (button_actions == GTK_BUTTON_IGNORED)
- return FALSE;
-
- /* release on resize windows */
- if (GTK_CLIST_IN_DRAG(clist))
- {
- gpointer drag_data;
- gint width;
- gint x;
- gint i;
-
- i = clist->drag_pos;
- clist->drag_pos = -1;
-
- /* unblock attached dnd signal handler */
- drag_data = gtk_object_get_data (GTK_OBJECT (clist), "gtk-site-data");
- if (drag_data)
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (clist), drag_data);
-
- GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
- gtk_widget_get_pointer (widget, &x, NULL);
- gtk_grab_remove (widget);
- gdk_display_pointer_ungrab (gtk_widget_get_display (widget), event->time);
-
- if (clist->x_drag >= 0)
- draw_xor_line (clist);
-
- if (GTK_CLIST_ADD_MODE(clist))
- {
- gint8 dashes[] = { 4, 4 };
-
- gdk_gc_set_line_attributes (clist->xor_gc, 1,
- GDK_LINE_ON_OFF_DASH, 0, 0);
- gdk_gc_set_dashes (clist->xor_gc, 0, dashes, G_N_ELEMENTS (dashes));
- }
-
- width = new_column_width (clist, i, &x);
- gtk_clist_set_column_width (clist, i, width);
-
- return TRUE;
- }
-
- if (clist->drag_button == event->button)
- {
- gint row;
- gint column;
-
- clist->drag_button = 0;
- clist->click_cell.row = -1;
- clist->click_cell.column = -1;
-
- remove_grab (clist);
-
- if (button_actions & GTK_BUTTON_SELECTS)
- {
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- if (!(event->state & GDK_SHIFT_MASK) ||
- !GTK_WIDGET_CAN_FOCUS (widget) ||
- event->x < 0 || event->x >= clist->clist_window_width ||
- event->y < 0 || event->y >= clist->clist_window_height)
- GTK_CLIST_GET_CLASS (clist)->resync_selection
- (clist, (GdkEvent *) event);
- break;
- case GTK_SELECTION_SINGLE:
- if (get_selection_info (clist, event->x, event->y,
- &row, &column))
- {
- if (row >= 0 && row < clist->rows && clist->anchor == row)
- toggle_row (clist, row, column, (GdkEvent *) event);
- }
- clist->anchor = -1;
- break;
- default:
- break;
- }
- }
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-gtk_clist_motion (GtkWidget *widget,
- GdkEventMotion *event)
-{
- GtkCList *clist;
- gint x;
- gint y;
- gint row;
- gint new_width;
- gint button_actions = 0;
-
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
-
- clist = GTK_CLIST (widget);
- if (!clist_has_grab (clist))
- return FALSE;
-
- if (clist->drag_button > 0)
- button_actions = clist->button_actions[clist->drag_button - 1];
-
- if (GTK_CLIST_IN_DRAG(clist))
- {
- if (event->is_hint || event->window != widget->window)
- gtk_widget_get_pointer (widget, &x, NULL);
- else
- x = event->x;
-
- new_width = new_column_width (clist, clist->drag_pos, &x);
- if (x != clist->x_drag)
- {
- /* x_drag < 0 indicates that the xor line is already invisible */
- if (clist->x_drag >= 0)
- draw_xor_line (clist);
-
- clist->x_drag = x;
-
- if (clist->x_drag >= 0)
- draw_xor_line (clist);
- }
-
- if (new_width <= MAX (COLUMN_MIN_WIDTH + 1,
- clist->column[clist->drag_pos].min_width + 1))
- {
- if (COLUMN_LEFT_XPIXEL (clist, clist->drag_pos) < 0 && x < 0)
- gtk_clist_moveto (clist, -1, clist->drag_pos, 0, 0);
- return FALSE;
- }
- if (clist->column[clist->drag_pos].max_width >= COLUMN_MIN_WIDTH &&
- new_width >= clist->column[clist->drag_pos].max_width)
- {
- if (COLUMN_LEFT_XPIXEL (clist, clist->drag_pos) + new_width >
- clist->clist_window_width && x < 0)
- move_horizontal (clist,
- COLUMN_LEFT_XPIXEL (clist, clist->drag_pos) +
- new_width - clist->clist_window_width +
- COLUMN_INSET + CELL_SPACING);
- return FALSE;
- }
- }
-
- if (event->is_hint || event->window != clist->clist_window)
- gdk_window_get_pointer (clist->clist_window, &x, &y, NULL);
- else
- {
- x = event->x;
- y = event->y;
- }
-
- if (GTK_CLIST_REORDERABLE(clist) && button_actions & GTK_BUTTON_DRAGS)
- {
- /* delayed drag start */
- if (event->window == clist->clist_window &&
- clist->click_cell.row >= 0 && clist->click_cell.column >= 0 &&
- (y < 0 || y >= clist->clist_window_height ||
- x < 0 || x >= clist->clist_window_width ||
- y < ROW_TOP_YPIXEL (clist, clist->click_cell.row) ||
- y >= (ROW_TOP_YPIXEL (clist, clist->click_cell.row) +
- clist->row_height) ||
- x < COLUMN_LEFT_XPIXEL (clist, clist->click_cell.column) ||
- x >= (COLUMN_LEFT_XPIXEL(clist, clist->click_cell.column) +
- clist->column[clist->click_cell.column].area.width)))
- {
- GtkTargetList *target_list;
-
- target_list = gtk_target_list_new (&clist_target_table, 1);
- gtk_drag_begin (widget, target_list, GDK_ACTION_MOVE,
- clist->drag_button, (GdkEvent *)event);
-
- }
- return TRUE;
- }
-
- /* horizontal autoscrolling */
- if (clist->hadjustment && LIST_WIDTH (clist) > clist->clist_window_width &&
- (x < 0 || x >= clist->clist_window_width))
- {
- if (clist->htimer)
- return FALSE;
-
- clist->htimer = gdk_threads_add_timeout
- (SCROLL_TIME, (GSourceFunc) horizontal_timeout, clist);
-
- if (!((x < 0 && clist->hadjustment->value == 0) ||
- (x >= clist->clist_window_width &&
- clist->hadjustment->value ==
- LIST_WIDTH (clist) - clist->clist_window_width)))
- {
- if (x < 0)
- move_horizontal (clist, -1 + (x/2));
- else
- move_horizontal (clist, 1 + (x - clist->clist_window_width) / 2);
- }
- }
-
- if (GTK_CLIST_IN_DRAG(clist))
- return FALSE;
-
- /* vertical autoscrolling */
- row = ROW_FROM_YPIXEL (clist, y);
-
- /* don't scroll on last pixel row if it's a cell spacing */
- if (y == clist->clist_window_height - 1 &&
- y == ROW_TOP_YPIXEL (clist, row-1) + clist->row_height)
- return FALSE;
-
- if (LIST_HEIGHT (clist) > clist->clist_window_height &&
- (y < 0 || y >= clist->clist_window_height))
- {
- if (clist->vtimer)
- return FALSE;
-
- clist->vtimer = gdk_threads_add_timeout (SCROLL_TIME,
- (GSourceFunc) vertical_timeout, clist);
-
- if (clist->drag_button &&
- ((y < 0 && clist->focus_row == 0) ||
- (y >= clist->clist_window_height &&
- clist->focus_row == clist->rows - 1)))
- return FALSE;
- }
-
- row = CLAMP (row, 0, clist->rows - 1);
-
- if (button_actions & GTK_BUTTON_SELECTS &
- !gtk_object_get_data (GTK_OBJECT (widget), "gtk-site-data"))
- {
- if (row == clist->focus_row)
- return FALSE;
-
- gtk_clist_draw_focus (widget);
- clist->focus_row = row;
- gtk_clist_draw_focus (widget);
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- clist->focus_row, -1, event);
- break;
- case GTK_SELECTION_MULTIPLE:
- update_extended_selection (clist, clist->focus_row);
- break;
- default:
- break;
- }
- }
-
- if (ROW_TOP_YPIXEL(clist, row) < 0)
- move_vertical (clist, row, 0);
- else if (ROW_TOP_YPIXEL(clist, row) + clist->row_height >
- clist->clist_window_height)
- move_vertical (clist, row, 1);
-
- return FALSE;
-}
-
-static void
-gtk_clist_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkCList *clist;
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (requisition != NULL);
-
- clist = GTK_CLIST (widget);
-
- requisition->width = 0;
- requisition->height = 0;
-
- /* compute the size of the column title (title) area */
- clist->column_title_area.height = 0;
- if (GTK_CLIST_SHOW_TITLES(clist))
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button)
- {
- GtkRequisition child_requisition;
-
- gtk_widget_size_request (clist->column[i].button,
- &child_requisition);
- clist->column_title_area.height =
- MAX (clist->column_title_area.height,
- child_requisition.height);
- }
-
- requisition->width += (widget->style->xthickness +
- GTK_CONTAINER (widget)->border_width) * 2;
- requisition->height += (clist->column_title_area.height +
- (widget->style->ythickness +
- GTK_CONTAINER (widget)->border_width) * 2);
-
- /* if (!clist->hadjustment) */
- requisition->width += list_requisition_width (clist);
- /* if (!clist->vadjustment) */
- requisition->height += LIST_HEIGHT (clist);
-}
-
-static void
-gtk_clist_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkCList *clist;
- GtkAllocation clist_allocation;
- gint border_width;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (allocation != NULL);
-
- clist = GTK_CLIST (widget);
- widget->allocation = *allocation;
- border_width = GTK_CONTAINER (widget)->border_width;
-
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_move_resize (widget->window,
- allocation->x + border_width,
- allocation->y + border_width,
- allocation->width - border_width * 2,
- allocation->height - border_width * 2);
- }
-
- /* use internal allocation structure for all the math
- * because it's easier than always subtracting the container
- * border width */
- clist->internal_allocation.x = 0;
- clist->internal_allocation.y = 0;
- clist->internal_allocation.width = MAX (1, (gint)allocation->width -
- border_width * 2);
- clist->internal_allocation.height = MAX (1, (gint)allocation->height -
- border_width * 2);
-
- /* allocate clist window assuming no scrollbars */
- clist_allocation.x = (clist->internal_allocation.x +
- widget->style->xthickness);
- clist_allocation.y = (clist->internal_allocation.y +
- widget->style->ythickness +
- clist->column_title_area.height);
- clist_allocation.width = MAX (1, (gint)clist->internal_allocation.width -
- (2 * (gint)widget->style->xthickness));
- clist_allocation.height = MAX (1, (gint)clist->internal_allocation.height -
- (2 * (gint)widget->style->ythickness) -
- (gint)clist->column_title_area.height);
-
- clist->clist_window_width = clist_allocation.width;
- clist->clist_window_height = clist_allocation.height;
-
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_move_resize (clist->clist_window,
- clist_allocation.x,
- clist_allocation.y,
- clist_allocation.width,
- clist_allocation.height);
- }
-
- /* position the window which holds the column title buttons */
- clist->column_title_area.x = widget->style->xthickness;
- clist->column_title_area.y = widget->style->ythickness;
- clist->column_title_area.width = clist_allocation.width;
-
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_move_resize (clist->title_window,
- clist->column_title_area.x,
- clist->column_title_area.y,
- clist->column_title_area.width,
- clist->column_title_area.height);
- }
-
- /* column button allocation */
- size_allocate_columns (clist, FALSE);
- size_allocate_title_buttons (clist);
-
- adjust_adjustments (clist, TRUE);
-}
-
-/* GTKCONTAINER
- * gtk_clist_forall
- */
-static void
-gtk_clist_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- GtkCList *clist;
- guint i;
-
- g_return_if_fail (GTK_IS_CLIST (container));
- g_return_if_fail (callback != NULL);
-
- if (!include_internals)
- return;
-
- clist = GTK_CLIST (container);
-
- /* callback for the column buttons */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button)
- (*callback) (clist->column[i].button, callback_data);
-}
-
-/* PRIVATE DRAWING FUNCTIONS
- * get_cell_style
- * draw_cell_pixmap
- * draw_row
- * draw_rows
- * draw_xor_line
- * clist_refresh
- */
-static void
-get_cell_style (GtkCList *clist,
- GtkCListRow *clist_row,
- gint state,
- gint column,
- GtkStyle **style,
- GdkGC **fg_gc,
- GdkGC **bg_gc)
-{
- gint fg_state;
-
- if ((state == GTK_STATE_NORMAL) &&
- (GTK_WIDGET (clist)->state == GTK_STATE_INSENSITIVE))
- fg_state = GTK_STATE_INSENSITIVE;
- else
- fg_state = state;
-
- if (clist_row->cell[column].style)
- {
- if (style)
- *style = clist_row->cell[column].style;
- if (fg_gc)
- *fg_gc = clist_row->cell[column].style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = clist_row->cell[column].style->bg_gc[state];
- else
- *bg_gc = clist_row->cell[column].style->base_gc[state];
- }
- }
- else if (clist_row->style)
- {
- if (style)
- *style = clist_row->style;
- if (fg_gc)
- *fg_gc = clist_row->style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = clist_row->style->bg_gc[state];
- else
- *bg_gc = clist_row->style->base_gc[state];
- }
- }
- else
- {
- if (style)
- *style = GTK_WIDGET (clist)->style;
- if (fg_gc)
- *fg_gc = GTK_WIDGET (clist)->style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = GTK_WIDGET (clist)->style->bg_gc[state];
- else
- *bg_gc = GTK_WIDGET (clist)->style->base_gc[state];
- }
-
- if (state != GTK_STATE_SELECTED)
- {
- if (fg_gc && clist_row->fg_set)
- *fg_gc = clist->fg_gc;
- if (bg_gc && clist_row->bg_set)
- *bg_gc = clist->bg_gc;
- }
- }
-}
-
-static gint
-draw_cell_pixmap (GdkWindow *window,
- GdkRectangle *clip_rectangle,
- GdkGC *fg_gc,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- gint xsrc = 0;
- gint ysrc = 0;
-
- if (mask)
- {
- gdk_gc_set_clip_mask (fg_gc, mask);
- gdk_gc_set_clip_origin (fg_gc, x, y);
- }
-
- if (x < clip_rectangle->x)
- {
- xsrc = clip_rectangle->x - x;
- width -= xsrc;
- x = clip_rectangle->x;
- }
- if (x + width > clip_rectangle->x + clip_rectangle->width)
- width = clip_rectangle->x + clip_rectangle->width - x;
-
- if (y < clip_rectangle->y)
- {
- ysrc = clip_rectangle->y - y;
- height -= ysrc;
- y = clip_rectangle->y;
- }
- if (y + height > clip_rectangle->y + clip_rectangle->height)
- height = clip_rectangle->y + clip_rectangle->height - y;
-
- gdk_draw_drawable (window, fg_gc, pixmap, xsrc, ysrc, x, y, width, height);
- gdk_gc_set_clip_origin (fg_gc, 0, 0);
- if (mask)
- gdk_gc_set_clip_mask (fg_gc, NULL);
-
- return x + MAX (width, 0);
-}
-
-static void
-draw_row (GtkCList *clist,
- GdkRectangle *area,
- gint row,
- GtkCListRow *clist_row)
-{
- GtkWidget *widget;
- GdkRectangle *rect;
- GdkRectangle row_rectangle;
- GdkRectangle cell_rectangle;
- GdkRectangle clip_rectangle;
- GdkRectangle intersect_rectangle;
- gint last_column;
- gint state;
- gint i;
-
- g_return_if_fail (clist != NULL);
-
- /* bail now if we arn't drawable yet */
- if (!GTK_WIDGET_DRAWABLE (clist) || row < 0 || row >= clist->rows)
- return;
-
- widget = GTK_WIDGET (clist);
-
- /* if the function is passed the pointer to the row instead of null,
- * it avoids this expensive lookup */
- if (!clist_row)
- clist_row = ROW_ELEMENT (clist, row)->data;
-
- /* rectangle of the entire row */
- row_rectangle.x = 0;
- row_rectangle.y = ROW_TOP_YPIXEL (clist, row);
- row_rectangle.width = clist->clist_window_width;
- row_rectangle.height = clist->row_height;
-
- /* rectangle of the cell spacing above the row */
- cell_rectangle.x = 0;
- cell_rectangle.y = row_rectangle.y - CELL_SPACING;
- cell_rectangle.width = row_rectangle.width;
- cell_rectangle.height = CELL_SPACING;
-
- /* rectangle used to clip drawing operations, its y and height
- * positions only need to be set once, so we set them once here.
- * the x and width are set withing the drawing loop below once per
- * column */
- clip_rectangle.y = row_rectangle.y;
- clip_rectangle.height = row_rectangle.height;
-
- if (clist_row->state == GTK_STATE_NORMAL)
- {
- if (clist_row->fg_set)
- gdk_gc_set_foreground (clist->fg_gc, &clist_row->foreground);
- if (clist_row->bg_set)
- gdk_gc_set_foreground (clist->bg_gc, &clist_row->background);
- }
-
- state = clist_row->state;
-
- /* draw the cell borders and background */
- if (area)
- {
- rect = &intersect_rectangle;
- if (gdk_rectangle_intersect (area, &cell_rectangle,
- &intersect_rectangle))
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- intersect_rectangle.x,
- intersect_rectangle.y,
- intersect_rectangle.width,
- intersect_rectangle.height);
-
- /* the last row has to clear its bottom cell spacing too */
- if (clist_row == clist->row_list_end->data)
- {
- cell_rectangle.y += clist->row_height + CELL_SPACING;
-
- if (gdk_rectangle_intersect (area, &cell_rectangle,
- &intersect_rectangle))
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- intersect_rectangle.x,
- intersect_rectangle.y,
- intersect_rectangle.width,
- intersect_rectangle.height);
- }
-
- if (!gdk_rectangle_intersect (area, &row_rectangle,&intersect_rectangle))
- return;
-
- }
- else
- {
- rect = &clip_rectangle;
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- cell_rectangle.x,
- cell_rectangle.y,
- cell_rectangle.width,
- cell_rectangle.height);
-
- /* the last row has to clear its bottom cell spacing too */
- if (clist_row == clist->row_list_end->data)
- {
- cell_rectangle.y += clist->row_height + CELL_SPACING;
-
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- cell_rectangle.x,
- cell_rectangle.y,
- cell_rectangle.width,
- cell_rectangle.height);
- }
- }
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--)
- ;
-
- /* iterate and draw all the columns (row cells) and draw their contents */
- for (i = 0; i < clist->columns; i++)
- {
- GtkStyle *style;
- GdkGC *fg_gc;
- GdkGC *bg_gc;
- PangoLayout *layout;
- PangoRectangle logical_rect;
-
- gint width;
- gint height;
- gint pixmap_width;
- gint offset = 0;
-
- if (!clist->column[i].visible)
- continue;
-
- get_cell_style (clist, clist_row, state, i, &style, &fg_gc, &bg_gc);
-
- clip_rectangle.x = clist->column[i].area.x + clist->hoffset;
- clip_rectangle.width = clist->column[i].area.width;
-
- /* calculate clipping region clipping region */
- clip_rectangle.x -= COLUMN_INSET + CELL_SPACING;
- clip_rectangle.width += (2 * COLUMN_INSET + CELL_SPACING +
- (i == last_column) * CELL_SPACING);
-
- if (area && !gdk_rectangle_intersect (area, &clip_rectangle,
- &intersect_rectangle))
- continue;
-
- gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE,
- rect->x, rect->y, rect->width, rect->height);
-
- clip_rectangle.x += COLUMN_INSET + CELL_SPACING;
- clip_rectangle.width -= (2 * COLUMN_INSET + CELL_SPACING +
- (i == last_column) * CELL_SPACING);
-
-
- /* calculate real width for column justification */
-
- layout = _gtk_clist_create_cell_layout (clist, clist_row, i);
- if (layout)
- {
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
- width = logical_rect.width;
- }
- else
- width = 0;
-
- pixmap_width = 0;
- offset = 0;
- switch (clist_row->cell[i].type)
- {
- case GTK_CELL_PIXMAP:
- gdk_drawable_get_size (GTK_CELL_PIXMAP (clist_row->cell[i])->pixmap,
- &pixmap_width, &height);
- width += pixmap_width;
- break;
- case GTK_CELL_PIXTEXT:
- gdk_drawable_get_size (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
- &pixmap_width, &height);
- width += pixmap_width + GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
- break;
- default:
- break;
- }
-
- switch (clist->column[i].justification)
- {
- case GTK_JUSTIFY_LEFT:
- offset = clip_rectangle.x + clist_row->cell[i].horizontal;
- break;
- case GTK_JUSTIFY_RIGHT:
- offset = (clip_rectangle.x + clist_row->cell[i].horizontal +
- clip_rectangle.width - width);
- break;
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- offset = (clip_rectangle.x + clist_row->cell[i].horizontal +
- (clip_rectangle.width / 2) - (width / 2));
- break;
- };
-
- /* Draw Text and/or Pixmap */
- switch (clist_row->cell[i].type)
- {
- case GTK_CELL_PIXMAP:
- draw_cell_pixmap (clist->clist_window, &clip_rectangle, fg_gc,
- GTK_CELL_PIXMAP (clist_row->cell[i])->pixmap,
- GTK_CELL_PIXMAP (clist_row->cell[i])->mask,
- offset,
- clip_rectangle.y + clist_row->cell[i].vertical +
- (clip_rectangle.height - height) / 2,
- pixmap_width, height);
- break;
- case GTK_CELL_PIXTEXT:
- offset =
- draw_cell_pixmap (clist->clist_window, &clip_rectangle, fg_gc,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->mask,
- offset,
- clip_rectangle.y + clist_row->cell[i].vertical+
- (clip_rectangle.height - height) / 2,
- pixmap_width, height);
- offset += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
-
- /* Fall through */
- case GTK_CELL_TEXT:
- if (layout)
- {
- gint row_center_offset = (clist->row_height - logical_rect.height - 1) / 2;
-
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rectangle);
- gdk_draw_layout (clist->clist_window, fg_gc,
- offset,
- row_rectangle.y + row_center_offset + clist_row->cell[i].vertical,
- layout);
- g_object_unref (layout);
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
- }
- break;
- default:
- break;
- }
- }
-
- /* draw focus rectangle */
- if (clist->focus_row == row &&
- GTK_WIDGET_CAN_FOCUS (widget) && gtk_widget_has_focus (widget))
- {
- if (!area)
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- row_rectangle.x, row_rectangle.y,
- row_rectangle.width - 1, row_rectangle.height - 1);
- else if (gdk_rectangle_intersect (area, &row_rectangle,
- &intersect_rectangle))
- {
- gdk_gc_set_clip_rectangle (clist->xor_gc, &intersect_rectangle);
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- row_rectangle.x, row_rectangle.y,
- row_rectangle.width - 1,
- row_rectangle.height - 1);
- gdk_gc_set_clip_rectangle (clist->xor_gc, NULL);
- }
- }
-}
-
-static void
-draw_rows (GtkCList *clist,
- GdkRectangle *area)
-{
- GList *list;
- GtkCListRow *clist_row;
- gint i;
- gint first_row;
- gint last_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist->row_height == 0 ||
- !GTK_WIDGET_DRAWABLE (clist))
- return;
-
- if (area)
- {
- first_row = ROW_FROM_YPIXEL (clist, area->y);
- last_row = ROW_FROM_YPIXEL (clist, area->y + area->height);
- }
- else
- {
- first_row = ROW_FROM_YPIXEL (clist, 0);
- last_row = ROW_FROM_YPIXEL (clist, clist->clist_window_height);
- }
-
- /* this is a small special case which exposes the bottom cell line
- * on the last row -- it might go away if I change the wall the cell
- * spacings are drawn
- */
- if (clist->rows == first_row)
- first_row--;
-
- list = ROW_ELEMENT (clist, first_row);
- i = first_row;
- while (list)
- {
- clist_row = list->data;
- list = list->next;
-
- if (i > last_row)
- return;
-
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, area, i, clist_row);
- i++;
- }
-
- if (!area)
- {
- int w, h, y;
- gdk_drawable_get_size (GDK_DRAWABLE (clist->clist_window), &w, &h);
- y = ROW_TOP_YPIXEL (clist, i);
- gdk_window_clear_area (clist->clist_window,
- 0, y,
- w, h - y);
- }
-}
-
-static void
-draw_xor_line (GtkCList *clist)
-{
- GtkWidget *widget;
-
- g_return_if_fail (clist != NULL);
-
- widget = GTK_WIDGET (clist);
-
- gdk_draw_line (widget->window, clist->xor_gc,
- clist->x_drag,
- widget->style->ythickness,
- clist->x_drag,
- clist->column_title_area.height +
- clist->clist_window_height + 1);
-}
-
-static void
-clist_refresh (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (CLIST_UNFROZEN (clist))
- {
- adjust_adjustments (clist, FALSE);
- draw_rows (clist, NULL);
- }
-}
-
-/* get cell from coordinates
- * get_selection_info
- * gtk_clist_get_selection_info
- */
-static gint
-get_selection_info (GtkCList *clist,
- gint x,
- gint y,
- gint *row,
- gint *column)
-{
- gint trow, tcol;
-
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
-
- /* bounds checking, return false if the user clicked
- * on a blank area */
- trow = ROW_FROM_YPIXEL (clist, y);
- if (trow >= clist->rows)
- return 0;
-
- if (row)
- *row = trow;
-
- tcol = COLUMN_FROM_XPIXEL (clist, x);
- if (tcol >= clist->columns)
- return 0;
-
- if (column)
- *column = tcol;
-
- return 1;
-}
-
-gint
-gtk_clist_get_selection_info (GtkCList *clist,
- gint x,
- gint y,
- gint *row,
- gint *column)
-{
- g_return_val_if_fail (GTK_IS_CLIST (clist), 0);
- return get_selection_info (clist, x, y, row, column);
-}
-
-/* PRIVATE ADJUSTMENT FUNCTIONS
- * adjust_adjustments
- * vadjustment_changed
- * hadjustment_changed
- * vadjustment_value_changed
- * hadjustment_value_changed
- * check_exposures
- */
-static void
-adjust_adjustments (GtkCList *clist,
- gboolean block_resize)
-{
- if (clist->vadjustment)
- {
- clist->vadjustment->page_size = clist->clist_window_height;
- clist->vadjustment->step_increment = clist->row_height;
- clist->vadjustment->page_increment =
- MAX (clist->vadjustment->page_size - clist->vadjustment->step_increment,
- clist->vadjustment->page_size / 2);
- clist->vadjustment->lower = 0;
- clist->vadjustment->upper = LIST_HEIGHT (clist);
-
- if (clist->clist_window_height - clist->voffset > LIST_HEIGHT (clist) ||
- (clist->voffset + (gint)clist->vadjustment->value) != 0)
- {
- clist->vadjustment->value = MAX (0, (LIST_HEIGHT (clist) -
- clist->clist_window_height));
- gtk_signal_emit_by_name (GTK_OBJECT (clist->vadjustment),
- "value-changed");
- }
- gtk_signal_emit_by_name (GTK_OBJECT (clist->vadjustment), "changed");
- }
-
- if (clist->hadjustment)
- {
- clist->hadjustment->page_size = clist->clist_window_width;
- clist->hadjustment->step_increment = 10;
- clist->hadjustment->page_increment =
- MAX (clist->hadjustment->page_size - clist->hadjustment->step_increment,
- clist->hadjustment->page_size / 2);
- clist->hadjustment->lower = 0;
- clist->hadjustment->upper = LIST_WIDTH (clist);
-
- if (clist->clist_window_width - clist->hoffset > LIST_WIDTH (clist) ||
- (clist->hoffset + (gint)clist->hadjustment->value) != 0)
- {
- clist->hadjustment->value = MAX (0, (LIST_WIDTH (clist) -
- clist->clist_window_width));
- gtk_signal_emit_by_name (GTK_OBJECT (clist->hadjustment),
- "value-changed");
- }
- gtk_signal_emit_by_name (GTK_OBJECT (clist->hadjustment), "changed");
- }
-
- if (!block_resize && (!clist->vadjustment || !clist->hadjustment))
- {
- GtkWidget *widget;
- GtkRequisition requisition;
-
- widget = GTK_WIDGET (clist);
- gtk_widget_size_request (widget, &requisition);
-
- if ((!clist->hadjustment &&
- requisition.width != widget->allocation.width) ||
- (!clist->vadjustment &&
- requisition.height != widget->allocation.height))
- gtk_widget_queue_resize (widget);
- }
-}
-
-static void
-vadjustment_changed (GtkAdjustment *adjustment,
- gpointer data)
-{
- GtkCList *clist;
-
- g_return_if_fail (adjustment != NULL);
- g_return_if_fail (data != NULL);
-
- clist = GTK_CLIST (data);
-}
-
-static void
-hadjustment_changed (GtkAdjustment *adjustment,
- gpointer data)
-{
- GtkCList *clist;
-
- g_return_if_fail (adjustment != NULL);
- g_return_if_fail (data != NULL);
-
- clist = GTK_CLIST (data);
-}
-
-static void
-vadjustment_value_changed (GtkAdjustment *adjustment,
- gpointer data)
-{
- GtkCList *clist;
- gint dy, value;
-
- g_return_if_fail (adjustment != NULL);
- g_return_if_fail (GTK_IS_CLIST (data));
-
- clist = GTK_CLIST (data);
-
- if (adjustment != clist->vadjustment)
- return;
-
- value = -adjustment->value;
- dy = value - clist->voffset;
- clist->voffset = value;
-
- if (GTK_WIDGET_DRAWABLE (clist))
- {
- gdk_window_scroll (clist->clist_window, 0, dy);
- gdk_window_process_updates (clist->clist_window, FALSE);
- }
-
- return;
-}
-
-typedef struct
-{
- GdkWindow *window;
- gint dx;
-} ScrollData;
-
-/* The window to which widget->window is relative */
-#define ALLOCATION_WINDOW(widget) \
- (!gtk_widget_get_has_window (widget) ? \
- (widget)->window : \
- gdk_window_get_parent ((widget)->window))
-
-static void
-adjust_allocation_recurse (GtkWidget *widget,
- gpointer data)
-{
- ScrollData *scroll_data = data;
-
- if (!gtk_widget_get_realized (widget))
- {
- if (gtk_widget_get_visible (widget))
- {
- GdkRectangle tmp_rectangle = widget->allocation;
- tmp_rectangle.x += scroll_data->dx;
-
- gtk_widget_size_allocate (widget, &tmp_rectangle);
- }
- }
- else
- {
- if (ALLOCATION_WINDOW (widget) == scroll_data->window)
- {
- widget->allocation.x += scroll_data->dx;
-
- if (GTK_IS_CONTAINER (widget))
- gtk_container_forall (GTK_CONTAINER (widget),
- adjust_allocation_recurse,
- data);
- }
- }
-}
-
-static void
-adjust_allocation (GtkWidget *widget,
- gint dx)
-{
- ScrollData scroll_data;
-
- if (gtk_widget_get_realized (widget))
- scroll_data.window = ALLOCATION_WINDOW (widget);
- else
- scroll_data.window = NULL;
-
- scroll_data.dx = dx;
-
- adjust_allocation_recurse (widget, &scroll_data);
-}
-
-static void
-hadjustment_value_changed (GtkAdjustment *adjustment,
- gpointer data)
-{
- GtkCList *clist;
- GtkContainer *container;
- GdkRectangle area;
- gint i;
- gint y = 0;
- gint value;
- gint dx;
-
- g_return_if_fail (adjustment != NULL);
- g_return_if_fail (GTK_IS_CLIST (data));
-
- clist = GTK_CLIST (data);
- container = GTK_CONTAINER (data);
-
- if (adjustment != clist->hadjustment)
- return;
-
- value = adjustment->value;
-
- dx = -value - clist->hoffset;
-
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gdk_window_scroll (clist->title_window, dx, 0);
-
- /* adjust the column button's allocations */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button)
- adjust_allocation (clist->column[i].button, dx);
-
- clist->hoffset = -value;
-
- if (GTK_WIDGET_DRAWABLE (clist))
- {
- if (GTK_WIDGET_CAN_FOCUS(clist) && gtk_widget_has_focus (GTK_WIDGET (clist)) &&
- !container->focus_child && GTK_CLIST_ADD_MODE(clist))
- {
- y = ROW_TOP_YPIXEL (clist, clist->focus_row);
-
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE, 0, y,
- clist->clist_window_width - 1,
- clist->row_height - 1);
- }
-
- gdk_window_scroll (clist->clist_window, dx, 0);
- gdk_window_process_updates (clist->clist_window, FALSE);
-
- if (GTK_WIDGET_CAN_FOCUS(clist) && gtk_widget_has_focus (GTK_WIDGET (clist)) &&
- !container->focus_child)
- {
- if (GTK_CLIST_ADD_MODE(clist))
- {
- gint focus_row;
-
- focus_row = clist->focus_row;
- clist->focus_row = -1;
- draw_rows (clist, &area);
- clist->focus_row = focus_row;
-
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc,
- FALSE, 0, y, clist->clist_window_width - 1,
- clist->row_height - 1);
- return;
- }
- else if (ABS(dx) < clist->clist_window_width - 1)
- {
- gint x0;
- gint x1;
-
- if (dx > 0)
- {
- x0 = clist->clist_window_width - 1;
- x1 = dx;
- }
- else
- {
- x0 = 0;
- x1 = clist->clist_window_width - 1 + dx;
- }
-
- y = ROW_TOP_YPIXEL (clist, clist->focus_row);
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- x0, y + 1, x0, y + clist->row_height - 2);
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- x1, y + 1, x1, y + clist->row_height - 2);
- }
- }
- }
-}
-
-/* PRIVATE
- * Memory Allocation/Distruction Routines for GtkCList stuctures
- *
- * functions:
- * columns_new
- * column_title_new
- * columns_delete
- * row_new
- * row_delete
- */
-static GtkCListColumn *
-columns_new (GtkCList *clist)
-{
- GtkCListColumn *column;
- gint i;
-
- column = g_new (GtkCListColumn, clist->columns);
-
- for (i = 0; i < clist->columns; i++)
- {
- column[i].area.x = 0;
- column[i].area.y = 0;
- column[i].area.width = 0;
- column[i].area.height = 0;
- column[i].title = NULL;
- column[i].button = NULL;
- column[i].window = NULL;
- column[i].width = 0;
- column[i].min_width = -1;
- column[i].max_width = -1;
- column[i].visible = TRUE;
- column[i].width_set = FALSE;
- column[i].resizeable = TRUE;
- column[i].auto_resize = FALSE;
- column[i].button_passive = FALSE;
- column[i].justification = GTK_JUSTIFY_LEFT;
- }
-
- return column;
-}
-
-static void
-column_title_new (GtkCList *clist,
- gint column,
- const gchar *title)
-{
- g_free (clist->column[column].title);
-
- clist->column[column].title = g_strdup (title);
-}
-
-static void
-columns_delete (GtkCList *clist)
-{
- gint i;
-
- for (i = 0; i < clist->columns; i++)
- g_free (clist->column[i].title);
-
- g_free (clist->column);
-}
-
-static GtkCListRow *
-row_new (GtkCList *clist)
-{
- int i;
- GtkCListRow *clist_row;
-
- clist_row = g_slice_new (GtkCListRow);
- clist_row->cell = g_slice_alloc (sizeof (GtkCell) * clist->columns);
-
- for (i = 0; i < clist->columns; i++)
- {
- clist_row->cell[i].type = GTK_CELL_EMPTY;
- clist_row->cell[i].vertical = 0;
- clist_row->cell[i].horizontal = 0;
- clist_row->cell[i].style = NULL;
- }
-
- clist_row->fg_set = FALSE;
- clist_row->bg_set = FALSE;
- clist_row->style = NULL;
- clist_row->selectable = TRUE;
- clist_row->state = GTK_STATE_NORMAL;
- clist_row->data = NULL;
- clist_row->destroy = NULL;
-
- return clist_row;
-}
-
-static void
-row_delete (GtkCList *clist,
- GtkCListRow *clist_row)
-{
- gint i;
-
- for (i = 0; i < clist->columns; i++)
- {
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, clist_row, i, GTK_CELL_EMPTY, NULL, 0, NULL, NULL);
- if (clist_row->cell[i].style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gtk_style_detach (clist_row->cell[i].style);
- g_object_unref (clist_row->cell[i].style);
- }
- }
-
- if (clist_row->style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (clist)))
- gtk_style_detach (clist_row->style);
- g_object_unref (clist_row->style);
- }
-
- if (clist_row->destroy)
- clist_row->destroy (clist_row->data);
-
- g_slice_free1 (sizeof (GtkCell) * clist->columns, clist_row->cell);
- g_slice_free (GtkCListRow, clist_row);
-}
-
-/* FOCUS FUNCTIONS
- * gtk_clist_focus_content_area
- * gtk_clist_focus
- * gtk_clist_draw_focus
- * gtk_clist_focus_in
- * gtk_clist_focus_out
- * title_focus
- */
-static void
-gtk_clist_focus_content_area (GtkCList *clist)
-{
- if (clist->focus_row < 0)
- {
- clist->focus_row = 0;
-
- if ((clist->selection_mode == GTK_SELECTION_BROWSE ||
- clist->selection_mode == GTK_SELECTION_MULTIPLE) &&
- !clist->selection)
- gtk_signal_emit (GTK_OBJECT (clist),
- clist_signals[SELECT_ROW],
- clist->focus_row, -1, NULL);
- }
- gtk_widget_grab_focus (GTK_WIDGET (clist));
-}
-
-static gboolean
-gtk_clist_focus (GtkWidget *widget,
- GtkDirectionType direction)
-{
- GtkCList *clist = GTK_CLIST (widget);
- GtkWidget *focus_child;
- gboolean is_current_focus;
-
- if (!gtk_widget_is_sensitive (widget))
- return FALSE;
-
- focus_child = GTK_CONTAINER (widget)->focus_child;
-
- is_current_focus = gtk_widget_is_focus (GTK_WIDGET (clist));
-
- if (focus_child &&
- gtk_widget_child_focus (focus_child, direction))
- return TRUE;
-
- switch (direction)
- {
- case GTK_DIR_LEFT:
- case GTK_DIR_RIGHT:
- if (focus_child)
- {
- if (title_focus_move (clist, direction))
- return TRUE;
- }
- else if (!is_current_focus)
- {
- gtk_clist_focus_content_area (clist);
- return TRUE;
- }
- break;
- case GTK_DIR_DOWN:
- case GTK_DIR_TAB_FORWARD:
- if (!focus_child && !is_current_focus)
- {
- if (title_focus_in (clist, direction))
- return TRUE;
- }
-
- if (!is_current_focus && clist->rows)
- {
- gtk_clist_focus_content_area (clist);
- return TRUE;
- }
- break;
- case GTK_DIR_UP:
- case GTK_DIR_TAB_BACKWARD:
- if (!focus_child && is_current_focus)
- {
- if (title_focus_in (clist, direction))
- return TRUE;
- }
-
- if (!is_current_focus && !focus_child && clist->rows)
- {
- gtk_clist_focus_content_area (clist);
- return TRUE;
- }
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-static void
-gtk_clist_set_focus_child (GtkContainer *container,
- GtkWidget *child)
-{
- GtkCList *clist = GTK_CLIST (container);
- gint i;
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button == child)
- clist->focus_header_column = i;
-
- parent_class->set_focus_child (container, child);
-}
-
-static void
-gtk_clist_draw_focus (GtkWidget *widget)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
- if (!GTK_WIDGET_DRAWABLE (widget) || !GTK_WIDGET_CAN_FOCUS (widget))
- return;
-
- clist = GTK_CLIST (widget);
- if (clist->focus_row >= 0)
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- 0, ROW_TOP_YPIXEL(clist, clist->focus_row),
- clist->clist_window_width - 1,
- clist->row_height - 1);
-}
-
-static gint
-gtk_clist_focus_in (GtkWidget *widget,
- GdkEventFocus *event)
-{
- GtkCList *clist = GTK_CLIST (widget);
-
- if (clist->selection_mode == GTK_SELECTION_BROWSE &&
- clist->selection == NULL && clist->focus_row > -1)
- {
- GList *list;
-
- list = g_list_nth (clist->row_list, clist->focus_row);
- if (list && GTK_CLIST_ROW (list)->selectable)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- clist->focus_row, -1, event);
- else
- gtk_clist_draw_focus (widget);
- }
- else
- gtk_clist_draw_focus (widget);
-
- return FALSE;
-}
-
-static gint
-gtk_clist_focus_out (GtkWidget *widget,
- GdkEventFocus *event)
-{
- GtkCList *clist = GTK_CLIST (widget);
-
- gtk_clist_draw_focus (widget);
-
- GTK_CLIST_GET_CLASS (widget)->resync_selection (clist, (GdkEvent *) event);
-
- return FALSE;
-}
-
-static gboolean
-focus_column (GtkCList *clist, gint column, gint dir)
-{
- GtkWidget *child = clist->column[column].button;
-
- if (gtk_widget_child_focus (child, dir))
- {
- return TRUE;
- }
- else if (GTK_WIDGET_CAN_FOCUS (child))
- {
- gtk_widget_grab_focus (child);
- return TRUE;
- }
-
- return FALSE;
-}
-
-/* Focus moved onto the headers. Focus first focusable and visible child.
- * (FIXME: focus the last focused child if visible)
- */
-static gboolean
-title_focus_in (GtkCList *clist, gint dir)
-{
- gint i;
- gint left, right;
-
- if (!GTK_CLIST_SHOW_TITLES (clist))
- return FALSE;
-
- /* Check last focused column */
- if (clist->focus_header_column != -1)
- {
- i = clist->focus_header_column;
-
- left = COLUMN_LEFT_XPIXEL (clist, i);
- right = left + clist->column[i].area.width;
-
- if (left >= 0 && right <= clist->clist_window_width)
- {
- if (focus_column (clist, i, dir))
- return TRUE;
- }
- }
-
- /* Check fully visible columns */
- for (i = 0 ; i < clist->columns ; i++)
- {
- left = COLUMN_LEFT_XPIXEL (clist, i);
- right = left + clist->column[i].area.width;
-
- if (left >= 0 && right <= clist->clist_window_width)
- {
- if (focus_column (clist, i, dir))
- return TRUE;
- }
- }
-
- /* Check partially visible columns */
- for (i = 0 ; i < clist->columns ; i++)
- {
- left = COLUMN_LEFT_XPIXEL (clist, i);
- right = left + clist->column[i].area.width;
-
- if ((left < 0 && right > 0) ||
- (left < clist->clist_window_width && right > clist->clist_window_width))
- {
- if (focus_column (clist, i, dir))
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-/* Move the focus right or left within the title buttons, scrolling
- * as necessary to keep the focused child visible.
- */
-static gboolean
-title_focus_move (GtkCList *clist,
- gint dir)
-{
- GtkWidget *focus_child;
- gboolean return_val = FALSE;
- gint d = 0;
- gint i = -1;
- gint j;
-
- if (!GTK_CLIST_SHOW_TITLES(clist))
- return FALSE;
-
- focus_child = GTK_CONTAINER (clist)->focus_child;
- g_assert (focus_child);
-
- /* Movement direction within headers
- */
- switch (dir)
- {
- case GTK_DIR_RIGHT:
- d = 1;
- break;
- case GTK_DIR_LEFT:
- d = -1;
- break;
- }
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].button == focus_child)
- break;
-
- g_assert (i != -1); /* Have a starting column */
-
- j = i + d;
- while (!return_val && j >= 0 && j < clist->columns)
- {
- if (clist->column[j].button &&
- gtk_widget_get_visible (clist->column[j].button))
- {
- if (focus_column (clist, j, dir))
- {
- return_val = TRUE;
- break;
- }
- }
- j += d;
- }
-
- /* If we didn't find it, wrap around and keep looking
- */
- if (!return_val)
- {
- j = d > 0 ? 0 : clist->columns - 1;
-
- while (!return_val && j != i)
- {
- if (clist->column[j].button &&
- gtk_widget_get_visible (clist->column[j].button))
- {
- if (focus_column (clist, j, dir))
- {
- return_val = TRUE;
- break;
- }
- }
- j += d;
- }
- }
-
- /* Scroll horizontally so focused column is visible
- */
- if (return_val)
- {
- if (COLUMN_LEFT_XPIXEL (clist, j) < CELL_SPACING + COLUMN_INSET)
- gtk_clist_moveto (clist, -1, j, 0, 0);
- else if (COLUMN_LEFT_XPIXEL(clist, j) + clist->column[j].area.width >
- clist->clist_window_width)
- {
- gint last_column;
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--);
-
- if (j == last_column)
- gtk_clist_moveto (clist, -1, j, 0, 0);
- else
- gtk_clist_moveto (clist, -1, j, 0, 1);
- }
- }
- return TRUE; /* Even if we didn't find a new one, we can keep the
- * focus in the same place.
- */
-}
-
-/* PRIVATE SCROLLING FUNCTIONS
- * move_focus_row
- * scroll_horizontal
- * scroll_vertical
- * move_horizontal
- * move_vertical
- * horizontal_timeout
- * vertical_timeout
- * remove_grab
- */
-static void
-move_focus_row (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position)
-{
- GtkWidget *widget;
-
- g_return_if_fail (clist != 0);
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- widget = GTK_WIDGET (clist);
-
- switch (scroll_type)
- {
- case GTK_SCROLL_STEP_UP:
- case GTK_SCROLL_STEP_BACKWARD:
- if (clist->focus_row <= 0)
- return;
- gtk_clist_draw_focus (widget);
- clist->focus_row--;
- gtk_clist_draw_focus (widget);
- break;
-
- case GTK_SCROLL_STEP_DOWN:
- case GTK_SCROLL_STEP_FORWARD:
- if (clist->focus_row >= clist->rows - 1)
- return;
- gtk_clist_draw_focus (widget);
- clist->focus_row++;
- gtk_clist_draw_focus (widget);
- break;
- case GTK_SCROLL_PAGE_UP:
- case GTK_SCROLL_PAGE_BACKWARD:
- if (clist->focus_row <= 0)
- return;
- gtk_clist_draw_focus (widget);
- clist->focus_row = MAX (0, clist->focus_row -
- (2 * clist->clist_window_height -
- clist->row_height - CELL_SPACING) /
- (2 * (clist->row_height + CELL_SPACING)));
- gtk_clist_draw_focus (widget);
- break;
- case GTK_SCROLL_PAGE_DOWN:
- case GTK_SCROLL_PAGE_FORWARD:
- if (clist->focus_row >= clist->rows - 1)
- return;
- gtk_clist_draw_focus (widget);
- clist->focus_row = MIN (clist->rows - 1, clist->focus_row +
- (2 * clist->clist_window_height -
- clist->row_height - CELL_SPACING) /
- (2 * (clist->row_height + CELL_SPACING)));
- gtk_clist_draw_focus (widget);
- break;
- case GTK_SCROLL_JUMP:
- if (position >= 0 && position <= 1)
- {
- gtk_clist_draw_focus (widget);
- clist->focus_row = position * (clist->rows - 1);
- gtk_clist_draw_focus (widget);
- }
- break;
- default:
- break;
- }
-}
-
-static void
-scroll_horizontal (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position)
-{
- gint column = 0;
- gint last_column;
-
- g_return_if_fail (clist != 0);
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist))
- return;
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--)
- ;
-
- switch (scroll_type)
- {
- case GTK_SCROLL_STEP_BACKWARD:
- column = COLUMN_FROM_XPIXEL (clist, 0);
- if (COLUMN_LEFT_XPIXEL (clist, column) - CELL_SPACING - COLUMN_INSET >= 0
- && column > 0)
- column--;
- break;
- case GTK_SCROLL_STEP_FORWARD:
- column = COLUMN_FROM_XPIXEL (clist, clist->clist_window_width);
- if (column < 0)
- return;
- if (COLUMN_LEFT_XPIXEL (clist, column) +
- clist->column[column].area.width +
- CELL_SPACING + COLUMN_INSET - 1 <= clist->clist_window_width &&
- column < last_column)
- column++;
- break;
- case GTK_SCROLL_PAGE_BACKWARD:
- case GTK_SCROLL_PAGE_FORWARD:
- return;
- case GTK_SCROLL_JUMP:
- if (position >= 0 && position <= 1)
- {
- gint vis_columns = 0;
- gint i;
-
- for (i = 0; i <= last_column; i++)
- if (clist->column[i].visible)
- vis_columns++;
-
- column = position * vis_columns;
-
- for (i = 0; i <= last_column && column > 0; i++)
- if (clist->column[i].visible)
- column--;
-
- column = i;
- }
- else
- return;
- break;
- default:
- break;
- }
-
- if (COLUMN_LEFT_XPIXEL (clist, column) < CELL_SPACING + COLUMN_INSET)
- gtk_clist_moveto (clist, -1, column, 0, 0);
- else if (COLUMN_LEFT_XPIXEL (clist, column) + CELL_SPACING + COLUMN_INSET - 1
- + clist->column[column].area.width > clist->clist_window_width)
- {
- if (column == last_column)
- gtk_clist_moveto (clist, -1, column, 0, 0);
- else
- gtk_clist_moveto (clist, -1, column, 0, 1);
- }
-}
-
-static void
-scroll_vertical (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position)
-{
- gint old_focus_row;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist_has_grab (clist))
- return;
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- if (clist->anchor >= 0)
- return;
- case GTK_SELECTION_BROWSE:
-
- old_focus_row = clist->focus_row;
- move_focus_row (clist, scroll_type, position);
-
- if (old_focus_row != clist->focus_row)
- {
- if (clist->selection_mode == GTK_SELECTION_BROWSE)
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[UNSELECT_ROW],
- old_focus_row, -1, NULL);
- else if (!GTK_CLIST_ADD_MODE(clist))
- {
- gtk_clist_unselect_all (clist);
- clist->undo_anchor = old_focus_row;
- }
- }
-
- switch (gtk_clist_row_is_visible (clist, clist->focus_row))
- {
- case GTK_VISIBILITY_NONE:
- if (old_focus_row != clist->focus_row &&
- !(clist->selection_mode == GTK_SELECTION_MULTIPLE &&
- GTK_CLIST_ADD_MODE(clist)))
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- clist->focus_row, -1, NULL);
- switch (scroll_type)
- {
- case GTK_SCROLL_PAGE_UP:
- case GTK_SCROLL_STEP_UP:
- case GTK_SCROLL_STEP_BACKWARD:
- case GTK_SCROLL_PAGE_BACKWARD:
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- break;
- case GTK_SCROLL_PAGE_DOWN:
- case GTK_SCROLL_STEP_DOWN:
- case GTK_SCROLL_STEP_FORWARD:
- case GTK_SCROLL_PAGE_FORWARD:
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- break;
- case GTK_SCROLL_JUMP:
- gtk_clist_moveto (clist, clist->focus_row, -1, 0.5, 0);
- break;
- default:
- break;
- }
- break;
- case GTK_VISIBILITY_PARTIAL:
- switch (scroll_type)
- {
- case GTK_SCROLL_STEP_BACKWARD:
- case GTK_SCROLL_PAGE_BACKWARD:
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- break;
- case GTK_SCROLL_STEP_FORWARD:
- case GTK_SCROLL_PAGE_FORWARD:
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- break;
- case GTK_SCROLL_JUMP:
- gtk_clist_moveto (clist, clist->focus_row, -1, 0.5, 0);
- break;
- default:
- break;
- }
- default:
- if (old_focus_row != clist->focus_row &&
- !(clist->selection_mode == GTK_SELECTION_MULTIPLE &&
- GTK_CLIST_ADD_MODE(clist)))
- gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
- clist->focus_row, -1, NULL);
- break;
- }
- break;
- default:
- move_focus_row (clist, scroll_type, position);
-
- if (ROW_TOP_YPIXEL (clist, clist->focus_row) + clist->row_height >
- clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- else if (ROW_TOP_YPIXEL (clist, clist->focus_row) < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
- break;
- }
-}
-
-static void
-move_horizontal (GtkCList *clist,
- gint diff)
-{
- gdouble value;
-
- if (!clist->hadjustment)
- return;
-
- value = CLAMP (clist->hadjustment->value + diff, 0.0,
- clist->hadjustment->upper - clist->hadjustment->page_size);
- gtk_adjustment_set_value (clist->hadjustment, value);
-}
-
-static void
-move_vertical (GtkCList *clist,
- gint row,
- gfloat align)
-{
- gdouble value;
-
- if (!clist->vadjustment)
- return;
-
- value = (ROW_TOP_YPIXEL (clist, row) - clist->voffset -
- align * (clist->clist_window_height - clist->row_height) +
- (2 * align - 1) * CELL_SPACING);
-
- if (value + clist->vadjustment->page_size > clist->vadjustment->upper)
- value = clist->vadjustment->upper - clist->vadjustment->page_size;
-
- gtk_adjustment_set_value (clist->vadjustment, value);
-}
-
-static void
-do_fake_motion (GtkWidget *widget)
-{
- GdkEvent *event = gdk_event_new (GDK_MOTION_NOTIFY);
-
- event->motion.send_event = TRUE;
-
- gtk_clist_motion (widget, (GdkEventMotion *)event);
- gdk_event_free (event);
-}
-
-static gint
-horizontal_timeout (GtkCList *clist)
-{
- clist->htimer = 0;
- do_fake_motion (GTK_WIDGET (clist));
-
- return FALSE;
-}
-
-static gint
-vertical_timeout (GtkCList *clist)
-{
- clist->vtimer = 0;
- do_fake_motion (GTK_WIDGET (clist));
-
- return FALSE;
-}
-
-static void
-remove_grab (GtkCList *clist)
-{
- GtkWidget *widget = GTK_WIDGET (clist);
-
- if (GTK_WIDGET_HAS_GRAB (clist))
- {
- GdkDisplay *display = gtk_widget_get_display (widget);
-
- gtk_grab_remove (widget);
- if (gdk_display_pointer_is_grabbed (display))
- gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
- }
-
- if (clist->htimer)
- {
- g_source_remove (clist->htimer);
- clist->htimer = 0;
- }
-
- if (clist->vtimer)
- {
- g_source_remove (clist->vtimer);
- clist->vtimer = 0;
- }
-}
-
-/* PUBLIC SORTING FUNCTIONS
- * gtk_clist_sort
- * gtk_clist_set_compare_func
- * gtk_clist_set_auto_sort
- * gtk_clist_set_sort_type
- * gtk_clist_set_sort_column
- */
-void
-gtk_clist_sort (GtkCList *clist)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- GTK_CLIST_GET_CLASS (clist)->sort_list (clist);
-}
-
-void
-gtk_clist_set_compare_func (GtkCList *clist,
- GtkCListCompareFunc cmp_func)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- clist->compare = (cmp_func) ? cmp_func : default_compare;
-}
-
-void
-gtk_clist_set_auto_sort (GtkCList *clist,
- gboolean auto_sort)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (GTK_CLIST_AUTO_SORT(clist) && !auto_sort)
- GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_SORT);
- else if (!GTK_CLIST_AUTO_SORT(clist) && auto_sort)
- {
- GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_SORT);
- gtk_clist_sort (clist);
- }
-}
-
-void
-gtk_clist_set_sort_type (GtkCList *clist,
- GtkSortType sort_type)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- clist->sort_type = sort_type;
-}
-
-void
-gtk_clist_set_sort_column (GtkCList *clist,
- gint column)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (column < 0 || column >= clist->columns)
- return;
-
- clist->sort_column = column;
-}
-
-/* PRIVATE SORTING FUNCTIONS
- * default_compare
- * real_sort_list
- * gtk_clist_merge
- * gtk_clist_mergesort
- */
-static gint
-default_compare (GtkCList *clist,
- gconstpointer ptr1,
- gconstpointer ptr2)
-{
- char *text1 = NULL;
- char *text2 = NULL;
-
- GtkCListRow *row1 = (GtkCListRow *) ptr1;
- GtkCListRow *row2 = (GtkCListRow *) ptr2;
-
- switch (row1->cell[clist->sort_column].type)
- {
- case GTK_CELL_TEXT:
- text1 = GTK_CELL_TEXT (row1->cell[clist->sort_column])->text;
- break;
- case GTK_CELL_PIXTEXT:
- text1 = GTK_CELL_PIXTEXT (row1->cell[clist->sort_column])->text;
- break;
- default:
- break;
- }
-
- switch (row2->cell[clist->sort_column].type)
- {
- case GTK_CELL_TEXT:
- text2 = GTK_CELL_TEXT (row2->cell[clist->sort_column])->text;
- break;
- case GTK_CELL_PIXTEXT:
- text2 = GTK_CELL_PIXTEXT (row2->cell[clist->sort_column])->text;
- break;
- default:
- break;
- }
-
- if (!text2)
- return (text1 != NULL);
-
- if (!text1)
- return -1;
-
- return strcmp (text1, text2);
-}
-
-static void
-real_sort_list (GtkCList *clist)
-{
- GList *list;
- GList *work;
- gint i;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (clist->rows <= 1)
- return;
-
- if (clist_has_grab (clist))
- return;
-
- gtk_clist_freeze (clist);
-
- if (clist->anchor != -1 && clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- clist->row_list = gtk_clist_mergesort (clist, clist->row_list, clist->rows);
-
- work = clist->selection;
-
- for (i = 0, list = clist->row_list; i < clist->rows; i++, list = list->next)
- {
- if (GTK_CLIST_ROW (list)->state == GTK_STATE_SELECTED)
- {
- work->data = GINT_TO_POINTER (i);
- work = work->next;
- }
-
- if (i == clist->rows - 1)
- clist->row_list_end = list;
- }
-
- gtk_clist_thaw (clist);
-}
-
-static GList *
-gtk_clist_merge (GtkCList *clist,
- GList *a, /* first list to merge */
- GList *b) /* second list to merge */
-{
- GList z = { 0 }; /* auxiliary node */
- GList *c;
- gint cmp;
-
- c = &z;
-
- while (a || b)
- {
- if (a && !b)
- {
- c->next = a;
- a->prev = c;
- c = a;
- a = a->next;
- break;
- }
- else if (!a && b)
- {
- c->next = b;
- b->prev = c;
- c = b;
- b = b->next;
- break;
- }
- else /* a && b */
- {
- cmp = clist->compare (clist, GTK_CLIST_ROW (a), GTK_CLIST_ROW (b));
- if ((cmp >= 0 && clist->sort_type == GTK_SORT_DESCENDING) ||
- (cmp <= 0 && clist->sort_type == GTK_SORT_ASCENDING) ||
- (a && !b))
- {
- c->next = a;
- a->prev = c;
- c = a;
- a = a->next;
- }
- else
- {
- c->next = b;
- b->prev = c;
- c = b;
- b = b->next;
- }
- }
- }
-
- z.next->prev = NULL;
- return z.next;
-}
-
-static GList *
-gtk_clist_mergesort (GtkCList *clist,
- GList *list, /* the list to sort */
- gint num) /* the list's length */
-{
- GList *half;
- gint i;
-
- if (num <= 1)
- {
- return list;
- }
- else
- {
- /* move "half" to the middle */
- half = list;
- for (i = 0; i < num / 2; i++)
- half = half->next;
-
- /* cut the list in two */
- half->prev->next = NULL;
- half->prev = NULL;
-
- /* recursively sort both lists */
- return gtk_clist_merge (clist,
- gtk_clist_mergesort (clist, list, num / 2),
- gtk_clist_mergesort (clist, half, num - num / 2));
- }
-}
-
-/************************/
-
-static void
-drag_source_info_destroy (gpointer data)
-{
- GtkCListCellInfo *info = data;
-
- g_free (info);
-}
-
-static void
-drag_dest_info_destroy (gpointer data)
-{
- GtkCListDestInfo *info = data;
-
- g_free (info);
-}
-
-static void
-drag_dest_cell (GtkCList *clist,
- gint x,
- gint y,
- GtkCListDestInfo *dest_info)
-{
- GtkWidget *widget;
-
- widget = GTK_WIDGET (clist);
-
- dest_info->insert_pos = GTK_CLIST_DRAG_NONE;
-
- y -= (GTK_CONTAINER (clist)->border_width +
- widget->style->ythickness +
- clist->column_title_area.height);
-
- dest_info->cell.row = ROW_FROM_YPIXEL (clist, y);
- if (dest_info->cell.row >= clist->rows)
- {
- dest_info->cell.row = clist->rows - 1;
- y = ROW_TOP_YPIXEL (clist, dest_info->cell.row) + clist->row_height;
- }
- if (dest_info->cell.row < -1)
- dest_info->cell.row = -1;
-
- x -= GTK_CONTAINER (widget)->border_width + widget->style->xthickness;
-
- dest_info->cell.column = COLUMN_FROM_XPIXEL (clist, x);
-
- if (dest_info->cell.row >= 0)
- {
- gint y_delta;
- gint h = 0;
-
- y_delta = y - ROW_TOP_YPIXEL (clist, dest_info->cell.row);
-
- if (GTK_CLIST_DRAW_DRAG_RECT(clist))
- {
- dest_info->insert_pos = GTK_CLIST_DRAG_INTO;
- h = clist->row_height / 4;
- }
- else if (GTK_CLIST_DRAW_DRAG_LINE(clist))
- {
- dest_info->insert_pos = GTK_CLIST_DRAG_BEFORE;
- h = clist->row_height / 2;
- }
-
- if (GTK_CLIST_DRAW_DRAG_LINE(clist))
- {
- if (y_delta < h)
- dest_info->insert_pos = GTK_CLIST_DRAG_BEFORE;
- else if (clist->row_height - y_delta < h)
- dest_info->insert_pos = GTK_CLIST_DRAG_AFTER;
- }
- }
-}
-
-static void
-gtk_clist_drag_begin (GtkWidget *widget,
- GdkDragContext *context)
-{
- GtkCList *clist;
- GtkCListCellInfo *info;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (context != NULL);
-
- clist = GTK_CLIST (widget);
-
- clist->drag_button = 0;
- remove_grab (clist);
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- update_extended_selection (clist, clist->focus_row);
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- break;
- case GTK_SELECTION_SINGLE:
- clist->anchor = -1;
- case GTK_SELECTION_BROWSE:
- break;
- default:
- g_assert_not_reached ();
- }
-
- info = g_dataset_get_data (context, "gtk-clist-drag-source");
-
- if (!info)
- {
- info = g_new (GtkCListCellInfo, 1);
-
- if (clist->click_cell.row < 0)
- clist->click_cell.row = 0;
- else if (clist->click_cell.row >= clist->rows)
- clist->click_cell.row = clist->rows - 1;
- info->row = clist->click_cell.row;
- info->column = clist->click_cell.column;
-
- g_dataset_set_data_full (context, "gtk-clist-drag-source", info,
- drag_source_info_destroy);
- }
-
- if (GTK_CLIST_USE_DRAG_ICONS (clist))
- gtk_drag_set_icon_default (context);
-}
-
-static void
-gtk_clist_drag_end (GtkWidget *widget,
- GdkDragContext *context)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (context != NULL);
-
- clist = GTK_CLIST (widget);
-
- clist->click_cell.row = -1;
- clist->click_cell.column = -1;
-}
-
-static void
-gtk_clist_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time)
-{
- GtkCList *clist;
- GtkCListDestInfo *dest_info;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (context != NULL);
-
- clist = GTK_CLIST (widget);
-
- dest_info = g_dataset_get_data (context, "gtk-clist-drag-dest");
-
- if (dest_info)
- {
- if (dest_info->cell.row >= 0 &&
- GTK_CLIST_REORDERABLE(clist) &&
- gtk_drag_get_source_widget (context) == widget)
- {
- GList *list;
- GdkAtom atom = gdk_atom_intern_static_string ("gtk-clist-drag-reorder");
-
- list = context->targets;
- while (list)
- {
- if (atom == GDK_POINTER_TO_ATOM (list->data))
- {
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist,
- g_list_nth (clist->row_list, dest_info->cell.row)->data,
- dest_info->cell.row, dest_info->insert_pos);
- clist->drag_highlight_row = -1;
- break;
- }
- list = list->next;
- }
- }
- g_dataset_remove_data (context, "gtk-clist-drag-dest");
- }
-}
-
-static gint
-gtk_clist_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time)
-{
- GtkCList *clist;
- GtkCListDestInfo new_info;
- GtkCListDestInfo *dest_info;
-
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
-
- clist = GTK_CLIST (widget);
-
- dest_info = g_dataset_get_data (context, "gtk-clist-drag-dest");
-
- if (!dest_info)
- {
- dest_info = g_new (GtkCListDestInfo, 1);
-
- dest_info->insert_pos = GTK_CLIST_DRAG_NONE;
- dest_info->cell.row = -1;
- dest_info->cell.column = -1;
-
- g_dataset_set_data_full (context, "gtk-clist-drag-dest", dest_info,
- drag_dest_info_destroy);
- }
-
- drag_dest_cell (clist, x, y, &new_info);
-
- if (GTK_CLIST_REORDERABLE (clist))
- {
- GList *list;
- GdkAtom atom = gdk_atom_intern_static_string ("gtk-clist-drag-reorder");
-
- list = context->targets;
- while (list)
- {
- if (atom == GDK_POINTER_TO_ATOM (list->data))
- break;
- list = list->next;
- }
-
- if (list)
- {
- if (gtk_drag_get_source_widget (context) != widget ||
- new_info.insert_pos == GTK_CLIST_DRAG_NONE ||
- new_info.cell.row == clist->click_cell.row ||
- (new_info.cell.row == clist->click_cell.row - 1 &&
- new_info.insert_pos == GTK_CLIST_DRAG_AFTER) ||
- (new_info.cell.row == clist->click_cell.row + 1 &&
- new_info.insert_pos == GTK_CLIST_DRAG_BEFORE))
- {
- if (dest_info->cell.row < 0)
- {
- gdk_drag_status (context, GDK_ACTION_DEFAULT, time);
- return FALSE;
- }
- return TRUE;
- }
-
- if (new_info.cell.row != dest_info->cell.row ||
- (new_info.cell.row == dest_info->cell.row &&
- dest_info->insert_pos != new_info.insert_pos))
- {
- if (dest_info->cell.row >= 0)
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist, g_list_nth (clist->row_list,
- dest_info->cell.row)->data,
- dest_info->cell.row, dest_info->insert_pos);
-
- dest_info->insert_pos = new_info.insert_pos;
- dest_info->cell.row = new_info.cell.row;
- dest_info->cell.column = new_info.cell.column;
-
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist, g_list_nth (clist->row_list,
- dest_info->cell.row)->data,
- dest_info->cell.row, dest_info->insert_pos);
-
- clist->drag_highlight_row = dest_info->cell.row;
- clist->drag_highlight_pos = dest_info->insert_pos;
-
- gdk_drag_status (context, context->suggested_action, time);
- }
- return TRUE;
- }
- }
-
- dest_info->insert_pos = new_info.insert_pos;
- dest_info->cell.row = new_info.cell.row;
- dest_info->cell.column = new_info.cell.column;
- return TRUE;
-}
-
-static gboolean
-gtk_clist_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time)
-{
- g_return_val_if_fail (GTK_IS_CLIST (widget), FALSE);
- g_return_val_if_fail (context != NULL, FALSE);
-
- if (GTK_CLIST_REORDERABLE (widget) &&
- gtk_drag_get_source_widget (context) == widget)
- {
- GList *list;
- GdkAtom atom = gdk_atom_intern_static_string ("gtk-clist-drag-reorder");
-
- list = context->targets;
- while (list)
- {
- if (atom == GDK_POINTER_TO_ATOM (list->data))
- return TRUE;
- list = list->next;
- }
- }
- return FALSE;
-}
-
-static void
-gtk_clist_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (context != NULL);
- g_return_if_fail (selection_data != NULL);
-
- clist = GTK_CLIST (widget);
-
- if (GTK_CLIST_REORDERABLE (clist) &&
- gtk_drag_get_source_widget (context) == widget &&
- selection_data->target ==
- gdk_atom_intern_static_string ("gtk-clist-drag-reorder") &&
- selection_data->format == 8 &&
- selection_data->length == sizeof (GtkCListCellInfo))
- {
- GtkCListCellInfo *source_info;
-
- source_info = (GtkCListCellInfo *)(selection_data->data);
- if (source_info)
- {
- GtkCListDestInfo dest_info;
-
- drag_dest_cell (clist, x, y, &dest_info);
-
- if (dest_info.insert_pos == GTK_CLIST_DRAG_AFTER)
- dest_info.cell.row++;
- if (source_info->row < dest_info.cell.row)
- dest_info.cell.row--;
- if (dest_info.cell.row != source_info->row)
- gtk_clist_row_move (clist, source_info->row, dest_info.cell.row);
-
- g_dataset_remove_data (context, "gtk-clist-drag-dest");
- }
- }
-}
-
-static void
-gtk_clist_drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time)
-{
- g_return_if_fail (GTK_IS_CLIST (widget));
- g_return_if_fail (context != NULL);
- g_return_if_fail (selection_data != NULL);
-
- if (selection_data->target == gdk_atom_intern_static_string ("gtk-clist-drag-reorder"))
- {
- GtkCListCellInfo *info;
-
- info = g_dataset_get_data (context, "gtk-clist-drag-source");
-
- if (info)
- {
- GtkCListCellInfo ret_info;
-
- ret_info.row = info->row;
- ret_info.column = info->column;
-
- gtk_selection_data_set (selection_data, selection_data->target,
- 8, (guchar *) &ret_info,
- sizeof (GtkCListCellInfo));
- }
- }
-}
-
-static void
-draw_drag_highlight (GtkCList *clist,
- GtkCListRow *dest_row,
- gint dest_row_number,
- GtkCListDragPos drag_pos)
-{
- gint y;
-
- y = ROW_TOP_YPIXEL (clist, dest_row_number) - 1;
-
- switch (drag_pos)
- {
- case GTK_CLIST_DRAG_NONE:
- break;
- case GTK_CLIST_DRAG_AFTER:
- y += clist->row_height + 1;
- case GTK_CLIST_DRAG_BEFORE:
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- 0, y, clist->clist_window_width, y);
- break;
- case GTK_CLIST_DRAG_INTO:
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE, 0, y,
- clist->clist_window_width - 1, clist->row_height);
- break;
- }
-}
-
-void
-gtk_clist_set_reorderable (GtkCList *clist,
- gboolean reorderable)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if ((GTK_CLIST_REORDERABLE(clist) != 0) == reorderable)
- return;
-
- widget = GTK_WIDGET (clist);
-
- if (reorderable)
- {
- GTK_CLIST_SET_FLAG (clist, CLIST_REORDERABLE);
- gtk_drag_dest_set (widget,
- GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
- &clist_target_table, 1, GDK_ACTION_MOVE);
- }
- else
- {
- GTK_CLIST_UNSET_FLAG (clist, CLIST_REORDERABLE);
- gtk_drag_dest_unset (GTK_WIDGET (clist));
- }
-}
-
-void
-gtk_clist_set_use_drag_icons (GtkCList *clist,
- gboolean use_icons)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (use_icons != 0)
- GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS);
- else
- GTK_CLIST_UNSET_FLAG (clist, CLIST_USE_DRAG_ICONS);
-}
-
-void
-gtk_clist_set_button_actions (GtkCList *clist,
- guint button,
- guint8 button_actions)
-{
- g_return_if_fail (GTK_IS_CLIST (clist));
-
- if (button < MAX_BUTTON)
- {
- if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (clist))) ||
- GTK_WIDGET_HAS_GRAB (clist))
- {
- remove_grab (clist);
- clist->drag_button = 0;
- }
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- clist->button_actions[button] = button_actions;
- }
-}
-
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkclist.h b/gtk/gtkclist.h
deleted file mode 100644
index d97b5473ee..0000000000
--- a/gtk/gtkclist.h
+++ /dev/null
@@ -1,792 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald
- * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_CLIST_C__) || defined (__GTK_CTREE_C__)
-
-#ifndef __GTK_CLIST_H__
-#define __GTK_CLIST_H__
-
-
-#include <gtk/gtksignal.h>
-#include <gtk/gtkalignment.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhscrollbar.h>
-#include <gtk/gtkvscrollbar.h>
-
-
-G_BEGIN_DECLS
-
-
-/* clist flags */
-enum {
- GTK_CLIST_IN_DRAG = 1 << 0,
- GTK_CLIST_ROW_HEIGHT_SET = 1 << 1,
- GTK_CLIST_SHOW_TITLES = 1 << 2,
- /* Unused */
- GTK_CLIST_ADD_MODE = 1 << 4,
- GTK_CLIST_AUTO_SORT = 1 << 5,
- GTK_CLIST_AUTO_RESIZE_BLOCKED = 1 << 6,
- GTK_CLIST_REORDERABLE = 1 << 7,
- GTK_CLIST_USE_DRAG_ICONS = 1 << 8,
- GTK_CLIST_DRAW_DRAG_LINE = 1 << 9,
- GTK_CLIST_DRAW_DRAG_RECT = 1 << 10
-};
-
-/* cell types */
-typedef enum
-{
- GTK_CELL_EMPTY,
- GTK_CELL_TEXT,
- GTK_CELL_PIXMAP,
- GTK_CELL_PIXTEXT,
- GTK_CELL_WIDGET
-} GtkCellType;
-
-typedef enum
-{
- GTK_CLIST_DRAG_NONE,
- GTK_CLIST_DRAG_BEFORE,
- GTK_CLIST_DRAG_INTO,
- GTK_CLIST_DRAG_AFTER
-} GtkCListDragPos;
-
-typedef enum
-{
- GTK_BUTTON_IGNORED = 0,
- GTK_BUTTON_SELECTS = 1 << 0,
- GTK_BUTTON_DRAGS = 1 << 1,
- GTK_BUTTON_EXPANDS = 1 << 2
-} GtkButtonAction;
-
-#define GTK_TYPE_CLIST (gtk_clist_get_type ())
-#define GTK_CLIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CLIST, GtkCList))
-#define GTK_CLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CLIST, GtkCListClass))
-#define GTK_IS_CLIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CLIST))
-#define GTK_IS_CLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CLIST))
-#define GTK_CLIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CLIST, GtkCListClass))
-
-
-#define GTK_CLIST_FLAGS(clist) (GTK_CLIST (clist)->flags)
-#define GTK_CLIST_SET_FLAG(clist,flag) (GTK_CLIST_FLAGS (clist) |= (GTK_ ## flag))
-#define GTK_CLIST_UNSET_FLAG(clist,flag) (GTK_CLIST_FLAGS (clist) &= ~(GTK_ ## flag))
-
-#define GTK_CLIST_IN_DRAG(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_IN_DRAG)
-#define GTK_CLIST_ROW_HEIGHT_SET(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_ROW_HEIGHT_SET)
-#define GTK_CLIST_SHOW_TITLES(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_SHOW_TITLES)
-#define GTK_CLIST_ADD_MODE(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_ADD_MODE)
-#define GTK_CLIST_AUTO_SORT(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_AUTO_SORT)
-#define GTK_CLIST_AUTO_RESIZE_BLOCKED(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_AUTO_RESIZE_BLOCKED)
-#define GTK_CLIST_REORDERABLE(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_REORDERABLE)
-#define GTK_CLIST_USE_DRAG_ICONS(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_USE_DRAG_ICONS)
-#define GTK_CLIST_DRAW_DRAG_LINE(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAW_DRAG_LINE)
-#define GTK_CLIST_DRAW_DRAG_RECT(clist) (GTK_CLIST_FLAGS (clist) & GTK_CLIST_DRAW_DRAG_RECT)
-
-#define GTK_CLIST_ROW(_glist_) ((GtkCListRow *)((_glist_)->data))
-
-/* pointer casting for cells */
-#define GTK_CELL_TEXT(cell) (((GtkCellText *) &(cell)))
-#define GTK_CELL_PIXMAP(cell) (((GtkCellPixmap *) &(cell)))
-#define GTK_CELL_PIXTEXT(cell) (((GtkCellPixText *) &(cell)))
-#define GTK_CELL_WIDGET(cell) (((GtkCellWidget *) &(cell)))
-
-typedef struct _GtkCList GtkCList;
-typedef struct _GtkCListClass GtkCListClass;
-typedef struct _GtkCListColumn GtkCListColumn;
-typedef struct _GtkCListRow GtkCListRow;
-
-typedef struct _GtkCell GtkCell;
-typedef struct _GtkCellText GtkCellText;
-typedef struct _GtkCellPixmap GtkCellPixmap;
-typedef struct _GtkCellPixText GtkCellPixText;
-typedef struct _GtkCellWidget GtkCellWidget;
-
-typedef gint (*GtkCListCompareFunc) (GtkCList *clist,
- gconstpointer ptr1,
- gconstpointer ptr2);
-
-typedef struct _GtkCListCellInfo GtkCListCellInfo;
-typedef struct _GtkCListDestInfo GtkCListDestInfo;
-
-struct _GtkCListCellInfo
-{
- gint row;
- gint column;
-};
-
-struct _GtkCListDestInfo
-{
- GtkCListCellInfo cell;
- GtkCListDragPos insert_pos;
-};
-
-struct _GtkCList
-{
- GtkContainer container;
-
- guint16 flags;
-
- gpointer reserved1;
- gpointer reserved2;
-
- guint freeze_count;
-
- /* allocation rectangle after the container_border_width
- * and the width of the shadow border */
- GdkRectangle internal_allocation;
-
- /* rows */
- gint rows;
- gint row_height;
- GList *row_list;
- GList *row_list_end;
-
- /* columns */
- gint columns;
- GdkRectangle column_title_area;
- GdkWindow *title_window;
-
- /* dynamicly allocated array of column structures */
- GtkCListColumn *column;
-
- /* the scrolling window and its height and width to
- * make things a little speedier */
- GdkWindow *clist_window;
- gint clist_window_width;
- gint clist_window_height;
-
- /* offsets for scrolling */
- gint hoffset;
- gint voffset;
-
- /* border shadow style */
- GtkShadowType shadow_type;
-
- /* the list's selection mode (gtkenums.h) */
- GtkSelectionMode selection_mode;
-
- /* list of selected rows */
- GList *selection;
- GList *selection_end;
-
- GList *undo_selection;
- GList *undo_unselection;
- gint undo_anchor;
-
- /* mouse buttons */
- guint8 button_actions[5];
-
- guint8 drag_button;
-
- /* dnd */
- GtkCListCellInfo click_cell;
-
- /* scroll adjustments */
- GtkAdjustment *hadjustment;
- GtkAdjustment *vadjustment;
-
- /* xor GC for the vertical drag line */
- GdkGC *xor_gc;
-
- /* gc for drawing unselected cells */
- GdkGC *fg_gc;
- GdkGC *bg_gc;
-
- /* cursor used to indicate dragging */
- GdkCursor *cursor_drag;
-
- /* the current x-pixel location of the xor-drag line */
- gint x_drag;
-
- /* focus handling */
- gint focus_row;
-
- gint focus_header_column;
-
- /* dragging the selection */
- gint anchor;
- GtkStateType anchor_state;
- gint drag_pos;
- gint htimer;
- gint vtimer;
-
- GtkSortType sort_type;
- GtkCListCompareFunc compare;
- gint sort_column;
-
- gint drag_highlight_row;
- GtkCListDragPos drag_highlight_pos;
-};
-
-struct _GtkCListClass
-{
- GtkContainerClass parent_class;
-
- void (*set_scroll_adjustments) (GtkCList *clist,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
- void (*refresh) (GtkCList *clist);
- void (*select_row) (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
- void (*unselect_row) (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
- void (*row_move) (GtkCList *clist,
- gint source_row,
- gint dest_row);
- void (*click_column) (GtkCList *clist,
- gint column);
- void (*resize_column) (GtkCList *clist,
- gint column,
- gint width);
- void (*toggle_focus_row) (GtkCList *clist);
- void (*select_all) (GtkCList *clist);
- void (*unselect_all) (GtkCList *clist);
- void (*undo_selection) (GtkCList *clist);
- void (*start_selection) (GtkCList *clist);
- void (*end_selection) (GtkCList *clist);
- void (*extend_selection) (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection);
- void (*scroll_horizontal) (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position);
- void (*scroll_vertical) (GtkCList *clist,
- GtkScrollType scroll_type,
- gfloat position);
- void (*toggle_add_mode) (GtkCList *clist);
- void (*abort_column_resize) (GtkCList *clist);
- void (*resync_selection) (GtkCList *clist,
- GdkEvent *event);
- GList* (*selection_find) (GtkCList *clist,
- gint row_number,
- GList *row_list_element);
- void (*draw_row) (GtkCList *clist,
- GdkRectangle *area,
- gint row,
- GtkCListRow *clist_row);
- void (*draw_drag_highlight) (GtkCList *clist,
- GtkCListRow *target_row,
- gint target_row_number,
- GtkCListDragPos drag_pos);
- void (*clear) (GtkCList *clist);
- void (*fake_unselect_all) (GtkCList *clist,
- gint row);
- void (*sort_list) (GtkCList *clist);
- gint (*insert_row) (GtkCList *clist,
- gint row,
- gchar *text[]);
- void (*remove_row) (GtkCList *clist,
- gint row);
- void (*set_cell_contents) (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkCellType type,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
- void (*cell_size_request) (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkRequisition *requisition);
-
-};
-
-struct _GtkCListColumn
-{
- gchar *title;
- GdkRectangle area;
-
- GtkWidget *button;
- GdkWindow *window;
-
- gint width;
- gint min_width;
- gint max_width;
- GtkJustification justification;
-
- guint visible : 1;
- guint width_set : 1;
- guint resizeable : 1;
- guint auto_resize : 1;
- guint button_passive : 1;
-};
-
-struct _GtkCListRow
-{
- GtkCell *cell;
- GtkStateType state;
-
- GdkColor foreground;
- GdkColor background;
-
- GtkStyle *style;
-
- gpointer data;
- GDestroyNotify destroy;
-
- guint fg_set : 1;
- guint bg_set : 1;
- guint selectable : 1;
-};
-
-/* Cell Structures */
-struct _GtkCellText
-{
- GtkCellType type;
-
- gint16 vertical;
- gint16 horizontal;
-
- GtkStyle *style;
-
- gchar *text;
-};
-
-struct _GtkCellPixmap
-{
- GtkCellType type;
-
- gint16 vertical;
- gint16 horizontal;
-
- GtkStyle *style;
-
- GdkPixmap *pixmap;
- GdkBitmap *mask;
-};
-
-struct _GtkCellPixText
-{
- GtkCellType type;
-
- gint16 vertical;
- gint16 horizontal;
-
- GtkStyle *style;
-
- gchar *text;
- guint8 spacing;
- GdkPixmap *pixmap;
- GdkBitmap *mask;
-};
-
-struct _GtkCellWidget
-{
- GtkCellType type;
-
- gint16 vertical;
- gint16 horizontal;
-
- GtkStyle *style;
-
- GtkWidget *widget;
-};
-
-struct _GtkCell
-{
- GtkCellType type;
-
- gint16 vertical;
- gint16 horizontal;
-
- GtkStyle *style;
-
- union {
- gchar *text;
-
- struct {
- GdkPixmap *pixmap;
- GdkBitmap *mask;
- } pm;
-
- struct {
- gchar *text;
- guint8 spacing;
- GdkPixmap *pixmap;
- GdkBitmap *mask;
- } pt;
-
- GtkWidget *widget;
- } u;
-};
-
-GType gtk_clist_get_type (void) G_GNUC_CONST;
-
-/* create a new GtkCList */
-GtkWidget* gtk_clist_new (gint columns);
-GtkWidget* gtk_clist_new_with_titles (gint columns,
- gchar *titles[]);
-
-/* set adjustments of clist */
-void gtk_clist_set_hadjustment (GtkCList *clist,
- GtkAdjustment *adjustment);
-void gtk_clist_set_vadjustment (GtkCList *clist,
- GtkAdjustment *adjustment);
-
-/* get adjustments of clist */
-GtkAdjustment* gtk_clist_get_hadjustment (GtkCList *clist);
-GtkAdjustment* gtk_clist_get_vadjustment (GtkCList *clist);
-
-/* set the border style of the clist */
-void gtk_clist_set_shadow_type (GtkCList *clist,
- GtkShadowType type);
-
-/* set the clist's selection mode */
-void gtk_clist_set_selection_mode (GtkCList *clist,
- GtkSelectionMode mode);
-
-/* enable clists reorder ability */
-void gtk_clist_set_reorderable (GtkCList *clist,
- gboolean reorderable);
-void gtk_clist_set_use_drag_icons (GtkCList *clist,
- gboolean use_icons);
-void gtk_clist_set_button_actions (GtkCList *clist,
- guint button,
- guint8 button_actions);
-
-/* freeze all visual updates of the list, and then thaw the list after
- * you have made a number of changes and the updates wil occure in a
- * more efficent mannor than if you made them on a unfrozen list
- */
-void gtk_clist_freeze (GtkCList *clist);
-void gtk_clist_thaw (GtkCList *clist);
-
-/* show and hide the column title buttons */
-void gtk_clist_column_titles_show (GtkCList *clist);
-void gtk_clist_column_titles_hide (GtkCList *clist);
-
-/* set the column title to be a active title (responds to button presses,
- * prelights, and grabs keyboard focus), or passive where it acts as just
- * a title
- */
-void gtk_clist_column_title_active (GtkCList *clist,
- gint column);
-void gtk_clist_column_title_passive (GtkCList *clist,
- gint column);
-void gtk_clist_column_titles_active (GtkCList *clist);
-void gtk_clist_column_titles_passive (GtkCList *clist);
-
-/* set the title in the column title button */
-void gtk_clist_set_column_title (GtkCList *clist,
- gint column,
- const gchar *title);
-
-/* returns the title of column. Returns NULL if title is not set */
-gchar * gtk_clist_get_column_title (GtkCList *clist,
- gint column);
-
-/* set a widget instead of a title for the column title button */
-void gtk_clist_set_column_widget (GtkCList *clist,
- gint column,
- GtkWidget *widget);
-
-/* returns the column widget */
-GtkWidget * gtk_clist_get_column_widget (GtkCList *clist,
- gint column);
-
-/* set the justification on a column */
-void gtk_clist_set_column_justification (GtkCList *clist,
- gint column,
- GtkJustification justification);
-
-/* set visibility of a column */
-void gtk_clist_set_column_visibility (GtkCList *clist,
- gint column,
- gboolean visible);
-
-/* enable/disable column resize operations by mouse */
-void gtk_clist_set_column_resizeable (GtkCList *clist,
- gint column,
- gboolean resizeable);
-
-/* resize column automatically to its optimal width */
-void gtk_clist_set_column_auto_resize (GtkCList *clist,
- gint column,
- gboolean auto_resize);
-
-gint gtk_clist_columns_autosize (GtkCList *clist);
-
-/* return the optimal column width, i.e. maximum of all cell widths */
-gint gtk_clist_optimal_column_width (GtkCList *clist,
- gint column);
-
-/* set the pixel width of a column; this is a necessary step in
- * creating a CList because otherwise the column width is chozen from
- * the width of the column title, which will never be right
- */
-void gtk_clist_set_column_width (GtkCList *clist,
- gint column,
- gint width);
-
-/* set column minimum/maximum width. min/max_width < 0 => no restriction */
-void gtk_clist_set_column_min_width (GtkCList *clist,
- gint column,
- gint min_width);
-void gtk_clist_set_column_max_width (GtkCList *clist,
- gint column,
- gint max_width);
-
-/* change the height of the rows, the default (height=0) is
- * the hight of the current font.
- */
-void gtk_clist_set_row_height (GtkCList *clist,
- guint height);
-
-/* scroll the viewing area of the list to the given column and row;
- * row_align and col_align are between 0-1 representing the location the
- * row should appear on the screnn, 0.0 being top or left, 1.0 being
- * bottom or right; if row or column is -1 then then there is no change
- */
-void gtk_clist_moveto (GtkCList *clist,
- gint row,
- gint column,
- gfloat row_align,
- gfloat col_align);
-
-/* returns whether the row is visible */
-GtkVisibility gtk_clist_row_is_visible (GtkCList *clist,
- gint row);
-
-/* returns the cell type */
-GtkCellType gtk_clist_get_cell_type (GtkCList *clist,
- gint row,
- gint column);
-
-/* sets a given cell's text, replacing its current contents */
-void gtk_clist_set_text (GtkCList *clist,
- gint row,
- gint column,
- const gchar *text);
-
-/* for the "get" functions, any of the return pointer can be
- * NULL if you are not interested
- */
-gint gtk_clist_get_text (GtkCList *clist,
- gint row,
- gint column,
- gchar **text);
-
-/* sets a given cell's pixmap, replacing its current contents */
-void gtk_clist_set_pixmap (GtkCList *clist,
- gint row,
- gint column,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-
-gint gtk_clist_get_pixmap (GtkCList *clist,
- gint row,
- gint column,
- GdkPixmap **pixmap,
- GdkBitmap **mask);
-
-/* sets a given cell's pixmap and text, replacing its current contents */
-void gtk_clist_set_pixtext (GtkCList *clist,
- gint row,
- gint column,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-
-gint gtk_clist_get_pixtext (GtkCList *clist,
- gint row,
- gint column,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap,
- GdkBitmap **mask);
-
-/* sets the foreground color of a row, the color must already
- * be allocated
- */
-void gtk_clist_set_foreground (GtkCList *clist,
- gint row,
- const GdkColor *color);
-
-/* sets the background color of a row, the color must already
- * be allocated
- */
-void gtk_clist_set_background (GtkCList *clist,
- gint row,
- const GdkColor *color);
-
-/* set / get cell styles */
-void gtk_clist_set_cell_style (GtkCList *clist,
- gint row,
- gint column,
- GtkStyle *style);
-
-GtkStyle *gtk_clist_get_cell_style (GtkCList *clist,
- gint row,
- gint column);
-
-void gtk_clist_set_row_style (GtkCList *clist,
- gint row,
- GtkStyle *style);
-
-GtkStyle *gtk_clist_get_row_style (GtkCList *clist,
- gint row);
-
-/* this sets a horizontal and vertical shift for drawing
- * the contents of a cell; it can be positive or negitive;
- * this is particulary useful for indenting items in a column
- */
-void gtk_clist_set_shift (GtkCList *clist,
- gint row,
- gint column,
- gint vertical,
- gint horizontal);
-
-/* set/get selectable flag of a single row */
-void gtk_clist_set_selectable (GtkCList *clist,
- gint row,
- gboolean selectable);
-gboolean gtk_clist_get_selectable (GtkCList *clist,
- gint row);
-
-/* prepend/append returns the index of the row you just added,
- * making it easier to append and modify a row
- */
-gint gtk_clist_prepend (GtkCList *clist,
- gchar *text[]);
-gint gtk_clist_append (GtkCList *clist,
- gchar *text[]);
-
-/* inserts a row at index row and returns the row where it was
- * actually inserted (may be different from "row" in auto_sort mode)
- */
-gint gtk_clist_insert (GtkCList *clist,
- gint row,
- gchar *text[]);
-
-/* removes row at index row */
-void gtk_clist_remove (GtkCList *clist,
- gint row);
-
-/* sets a arbitrary data pointer for a given row */
-void gtk_clist_set_row_data (GtkCList *clist,
- gint row,
- gpointer data);
-
-/* sets a data pointer for a given row with destroy notification */
-void gtk_clist_set_row_data_full (GtkCList *clist,
- gint row,
- gpointer data,
- GDestroyNotify destroy);
-
-/* returns the data set for a row */
-gpointer gtk_clist_get_row_data (GtkCList *clist,
- gint row);
-
-/* givin a data pointer, find the first (and hopefully only!)
- * row that points to that data, or -1 if none do
- */
-gint gtk_clist_find_row_from_data (GtkCList *clist,
- gpointer data);
-
-/* force selection of a row */
-void gtk_clist_select_row (GtkCList *clist,
- gint row,
- gint column);
-
-/* force unselection of a row */
-void gtk_clist_unselect_row (GtkCList *clist,
- gint row,
- gint column);
-
-/* undo the last select/unselect operation */
-void gtk_clist_undo_selection (GtkCList *clist);
-
-/* clear the entire list -- this is much faster than removing
- * each item with gtk_clist_remove
- */
-void gtk_clist_clear (GtkCList *clist);
-
-/* return the row column corresponding to the x and y coordinates,
- * the returned values are only valid if the x and y coordinates
- * are respectively to a window == clist->clist_window
- */
-gint gtk_clist_get_selection_info (GtkCList *clist,
- gint x,
- gint y,
- gint *row,
- gint *column);
-
-/* in multiple or extended mode, select all rows */
-void gtk_clist_select_all (GtkCList *clist);
-
-/* in all modes except browse mode, deselect all rows */
-void gtk_clist_unselect_all (GtkCList *clist);
-
-/* swap the position of two rows */
-void gtk_clist_swap_rows (GtkCList *clist,
- gint row1,
- gint row2);
-
-/* move row from source_row position to dest_row position */
-void gtk_clist_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row);
-
-/* sets a compare function different to the default */
-void gtk_clist_set_compare_func (GtkCList *clist,
- GtkCListCompareFunc cmp_func);
-
-/* the column to sort by */
-void gtk_clist_set_sort_column (GtkCList *clist,
- gint column);
-
-/* how to sort : ascending or descending */
-void gtk_clist_set_sort_type (GtkCList *clist,
- GtkSortType sort_type);
-
-/* sort the list with the current compare function */
-void gtk_clist_sort (GtkCList *clist);
-
-/* Automatically sort upon insertion */
-void gtk_clist_set_auto_sort (GtkCList *clist,
- gboolean auto_sort);
-
-/* Private function for clist, ctree */
-
-PangoLayout *_gtk_clist_create_cell_layout (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column);
-
-
-G_END_DECLS
-
-
-#endif /* __GTK_CLIST_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkcolorbutton.h b/gtk/gtkcolorbutton.h
index 21c1460a40..257eb28a42 100644
--- a/gtk/gtkcolorbutton.h
+++ b/gtk/gtkcolorbutton.h
@@ -29,7 +29,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcolorsel.c b/gtk/gtkcolorsel.c
index d7375c28e2..34d2d4a7d9 100644
--- a/gtk/gtkcolorsel.c
+++ b/gtk/gtkcolorsel.c
@@ -2270,14 +2270,6 @@ gtk_color_selection_new (void)
return GTK_WIDGET (colorsel);
}
-
-void
-gtk_color_selection_set_update_policy (GtkColorSelection *colorsel,
- GtkUpdateType policy)
-{
- g_return_if_fail (GTK_IS_COLOR_SELECTION (colorsel));
-}
-
/**
* gtk_color_selection_get_has_opacity_control:
* @colorsel: a #GtkColorSelection.
@@ -2458,26 +2450,6 @@ gtk_color_selection_set_current_alpha (GtkColorSelection *colorsel,
}
/**
- * gtk_color_selection_set_color:
- * @colorsel: a #GtkColorSelection.
- * @color: an array of 4 doubles specifying the red, green, blue and opacity
- * to set the current color to.
- *
- * Sets the current color to be @color. The first time this is called, it will
- * also set the original color to be @color too.
- *
- * Deprecated: 2.0: Use gtk_color_selection_set_current_color() instead.
- **/
-void
-gtk_color_selection_set_color (GtkColorSelection *colorsel,
- gdouble *color)
-{
- g_return_if_fail (GTK_IS_COLOR_SELECTION (colorsel));
-
- set_color_internal (colorsel, color);
-}
-
-/**
* gtk_color_selection_get_current_color:
* @colorsel: a #GtkColorSelection.
* @color: a #GdkColor to fill in with the current color.
@@ -2519,30 +2491,6 @@ gtk_color_selection_get_current_alpha (GtkColorSelection *colorsel)
}
/**
- * gtk_color_selection_get_color:
- * @colorsel: a #GtkColorSelection.
- * @color: an array of 4 #gdouble to fill in with the current color.
- *
- * Sets @color to be the current color in the GtkColorSelection widget.
- *
- * Deprecated: 2.0: Use gtk_color_selection_get_current_color() instead.
- **/
-void
-gtk_color_selection_get_color (GtkColorSelection *colorsel,
- gdouble *color)
-{
- ColorSelectionPrivate *priv;
-
- g_return_if_fail (GTK_IS_COLOR_SELECTION (colorsel));
-
- priv = colorsel->private_data;
- color[0] = priv->color[COLORSEL_RED];
- color[1] = priv->color[COLORSEL_GREEN];
- color[2] = priv->color[COLORSEL_BLUE];
- color[3] = priv->has_opacity ? priv->color[COLORSEL_OPACITY] : 65535;
-}
-
-/**
* gtk_color_selection_set_previous_color:
* @colorsel: a #GtkColorSelection.
* @color: a #GdkColor to set the previous color with.
@@ -2831,33 +2779,6 @@ gtk_color_selection_palette_to_string (const GdkColor *colors,
}
/**
- * gtk_color_selection_set_change_palette_hook:
- * @func: a function to call when the custom palette needs saving.
- *
- * Installs a global function to be called whenever the user tries to
- * modify the palette in a color selection. This function should save
- * the new palette contents, and update the GtkSettings property
- * "gtk-color-palette" so all GtkColorSelection widgets will be modified.
- *
- * Return value: the previous change palette hook (that was replaced).
- *
- * Deprecated: 2.4: This function does not work in multihead environments.
- * Use gtk_color_selection_set_change_palette_with_screen_hook() instead.
- *
- **/
-GtkColorSelectionChangePaletteFunc
-gtk_color_selection_set_change_palette_hook (GtkColorSelectionChangePaletteFunc func)
-{
- GtkColorSelectionChangePaletteFunc old;
-
- old = noscreen_change_palette_hook;
-
- noscreen_change_palette_hook = func;
-
- return old;
-}
-
-/**
* gtk_color_selection_set_change_palette_with_screen_hook:
* @func: a function to call when the custom palette needs saving.
*
diff --git a/gtk/gtkcolorsel.h b/gtk/gtkcolorsel.h
index fedb029588..b99d1266ce 100644
--- a/gtk/gtkcolorsel.h
+++ b/gtk/gtkcolorsel.h
@@ -25,7 +25,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -112,24 +112,8 @@ gboolean gtk_color_selection_palette_from_string (const gchar *str,
gchar* gtk_color_selection_palette_to_string (const GdkColor *colors,
gint n_colors);
-#ifndef GTK_DISABLE_DEPRECATED
-#ifndef GDK_MULTIHEAD_SAFE
-GtkColorSelectionChangePaletteFunc gtk_color_selection_set_change_palette_hook (GtkColorSelectionChangePaletteFunc func);
-#endif
-#endif
-
GtkColorSelectionChangePaletteWithScreenFunc gtk_color_selection_set_change_palette_with_screen_hook (GtkColorSelectionChangePaletteWithScreenFunc func);
-#ifndef GTK_DISABLE_DEPRECATED
-/* Deprecated calls: */
-void gtk_color_selection_set_color (GtkColorSelection *colorsel,
- gdouble *color);
-void gtk_color_selection_get_color (GtkColorSelection *colorsel,
- gdouble *color);
-void gtk_color_selection_set_update_policy (GtkColorSelection *colorsel,
- GtkUpdateType policy);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_COLOR_SELECTION_H__ */
diff --git a/gtk/gtkcolorseldialog.h b/gtk/gtkcolorseldialog.h
index 395883693a..dcde2736d8 100644
--- a/gtk/gtkcolorseldialog.h
+++ b/gtk/gtkcolorseldialog.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcombo.c b/gtk/gtkcombo.c
deleted file mode 100644
index 69ab413bab..0000000000
--- a/gtk/gtkcombo.c
+++ /dev/null
@@ -1,1234 +0,0 @@
-/* gtkcombo - combo widget for gtk+
- * Copyright 1997 Paolo Molaro
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/* Do NOT, I repeat, NOT, copy any of the code in this file.
- * The code here relies on all sorts of internal details of GTK+
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include <string.h>
-
-#include <gdk/gdkkeysyms.h>
-
-#include "gtkarrow.h"
-#include "gtklabel.h"
-#include "gtklist.h"
-#include "gtkentry.h"
-#include "gtkeventbox.h"
-#include "gtkbutton.h"
-#include "gtklistitem.h"
-#include "gtkscrolledwindow.h"
-#include "gtkmain.h"
-#include "gtkwindow.h"
-#include "gtkcombo.h"
-#include "gtkframe.h"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-static const gchar gtk_combo_string_key[] = "gtk-combo-string-value";
-
-#define COMBO_LIST_MAX_HEIGHT (400)
-#define EMPTY_LIST_HEIGHT (15)
-
-enum {
- PROP_0,
- PROP_ENABLE_ARROW_KEYS,
- PROP_ENABLE_ARROWS_ALWAYS,
- PROP_CASE_SENSITIVE,
- PROP_ALLOW_EMPTY,
- PROP_VALUE_IN_LIST
-};
-
-static void gtk_combo_realize (GtkWidget *widget);
-static void gtk_combo_unrealize (GtkWidget *widget);
-static void gtk_combo_destroy (GtkObject *combo);
-static GtkListItem *gtk_combo_find (GtkCombo *combo);
-static gchar * gtk_combo_func (GtkListItem *li);
-static gboolean gtk_combo_focus_idle (GtkCombo *combo);
-static gint gtk_combo_entry_focus_out (GtkEntry *entry,
- GdkEventFocus *event,
- GtkCombo *combo);
-static void gtk_combo_get_pos (GtkCombo *combo,
- gint *x,
- gint *y,
- gint *height,
- gint *width);
-static void gtk_combo_popup_list (GtkCombo *combo);
-static void gtk_combo_popdown_list (GtkCombo *combo);
-
-static void gtk_combo_activate (GtkWidget *widget,
- GtkCombo *combo);
-static gboolean gtk_combo_popup_button_press (GtkWidget *button,
- GdkEventButton *event,
- GtkCombo *combo);
-static gboolean gtk_combo_popup_button_leave (GtkWidget *button,
- GdkEventCrossing *event,
- GtkCombo *combo);
-static void gtk_combo_update_entry (GtkCombo *combo);
-static void gtk_combo_update_list (GtkEntry *entry,
- GtkCombo *combo);
-static gint gtk_combo_button_press (GtkWidget *widget,
- GdkEvent *event,
- GtkCombo *combo);
-static void gtk_combo_button_event_after (GtkWidget *widget,
- GdkEvent *event,
- GtkCombo *combo);
-static gint gtk_combo_list_enter (GtkWidget *widget,
- GdkEventCrossing *event,
- GtkCombo *combo);
-static gint gtk_combo_list_key_press (GtkWidget *widget,
- GdkEventKey *event,
- GtkCombo *combo);
-static gint gtk_combo_entry_key_press (GtkEntry *widget,
- GdkEventKey *event,
- GtkCombo *combo);
-static gint gtk_combo_window_key_press (GtkWidget *window,
- GdkEventKey *event,
- GtkCombo *combo);
-static void gtk_combo_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_combo_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_combo_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-G_DEFINE_TYPE (GtkCombo, gtk_combo, GTK_TYPE_HBOX)
-
-static void
-gtk_combo_class_init (GtkComboClass * klass)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *oclass;
- GtkWidgetClass *widget_class;
-
- gobject_class = (GObjectClass *) klass;
- oclass = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
-
- gobject_class->set_property = gtk_combo_set_property;
- gobject_class->get_property = gtk_combo_get_property;
-
- g_object_class_install_property (gobject_class,
- PROP_ENABLE_ARROW_KEYS,
- g_param_spec_boolean ("enable-arrow-keys",
- P_("Enable arrow keys"),
- P_("Whether the arrow keys move through the list of items"),
- TRUE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_ENABLE_ARROWS_ALWAYS,
- g_param_spec_boolean ("enable-arrows-always",
- P_("Always enable arrows"),
- P_("Obsolete property, ignored"),
- TRUE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_CASE_SENSITIVE,
- g_param_spec_boolean ("case-sensitive",
- P_("Case sensitive"),
- P_("Whether list item matching is case sensitive"),
- FALSE,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_ALLOW_EMPTY,
- g_param_spec_boolean ("allow-empty",
- P_("Allow empty"),
- P_("Whether an empty value may be entered in this field"),
- TRUE,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_VALUE_IN_LIST,
- g_param_spec_boolean ("value-in-list",
- P_("Value in list"),
- P_("Whether entered values must already be present in the list"),
- FALSE,
- GTK_PARAM_READWRITE));
-
-
- oclass->destroy = gtk_combo_destroy;
-
- widget_class->size_allocate = gtk_combo_size_allocate;
- widget_class->realize = gtk_combo_realize;
- widget_class->unrealize = gtk_combo_unrealize;
-}
-
-static void
-gtk_combo_destroy (GtkObject *object)
-{
- GtkCombo *combo = GTK_COMBO (object);
-
- if (combo->popwin)
- {
- gtk_widget_destroy (combo->popwin);
- g_object_unref (combo->popwin);
- combo->popwin = NULL;
- }
-
- GTK_OBJECT_CLASS (gtk_combo_parent_class)->destroy (object);
-}
-
-static int
-gtk_combo_entry_key_press (GtkEntry * entry, GdkEventKey * event, GtkCombo * combo)
-{
- GList *li;
- guint state = event->state & gtk_accelerator_get_default_mod_mask ();
-
- /* completion */
- if ((event->keyval == GDK_Tab || event->keyval == GDK_KP_Tab) &&
- state == GDK_MOD1_MASK)
- {
- GtkEditable *editable = GTK_EDITABLE (entry);
- GCompletion * cmpl;
- gchar* prefix;
- gchar* nprefix = NULL;
- gint pos;
-
- if ( !GTK_LIST (combo->list)->children )
- return FALSE;
-
- cmpl = g_completion_new ((GCompletionFunc)gtk_combo_func);
- g_completion_add_items (cmpl, GTK_LIST (combo->list)->children);
-
- pos = gtk_editable_get_position (editable);
- prefix = gtk_editable_get_chars (editable, 0, pos);
-
- g_completion_complete_utf8 (cmpl, prefix, &nprefix);
-
- if (nprefix && strlen (nprefix) > strlen (prefix))
- {
- gtk_editable_insert_text (editable, g_utf8_offset_to_pointer (nprefix, pos),
- strlen (nprefix) - strlen (prefix), &pos);
- gtk_editable_set_position (editable, pos);
- }
-
- g_free (nprefix);
- g_free (prefix);
- g_completion_free (cmpl);
-
- return TRUE;
- }
-
- if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) &&
- state == GDK_MOD1_MASK)
- {
- gtk_combo_activate (NULL, combo);
- return TRUE;
- }
-
- if (!combo->use_arrows || !GTK_LIST (combo->list)->children)
- return FALSE;
-
- gtk_combo_update_list (GTK_ENTRY (combo->entry), combo);
- li = g_list_find (GTK_LIST (combo->list)->children, gtk_combo_find (combo));
-
- if (((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && state == 0) ||
- ((event->keyval == 'p' || event->keyval == 'P') && state == GDK_MOD1_MASK))
- {
- if (!li)
- li = g_list_last (GTK_LIST (combo->list)->children);
- else
- li = li->prev;
-
- if (li)
- {
- gtk_list_select_child (GTK_LIST (combo->list), GTK_WIDGET (li->data));
- gtk_combo_update_entry (combo);
- }
-
- return TRUE;
- }
- if (((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) && state == 0) ||
- ((event->keyval == 'n' || event->keyval == 'N') && state == GDK_MOD1_MASK))
- {
- if (!li)
- li = GTK_LIST (combo->list)->children;
- else if (li)
- li = li->next;
- if (li)
- {
- gtk_list_select_child (GTK_LIST (combo->list), GTK_WIDGET (li->data));
- gtk_combo_update_entry (combo);
- }
-
- return TRUE;
- }
- return FALSE;
-}
-
-static int
-gtk_combo_window_key_press (GtkWidget *window,
- GdkEventKey *event,
- GtkCombo *combo)
-{
- guint state = event->state & gtk_accelerator_get_default_mod_mask ();
-
- if ((event->keyval == GDK_Return ||
- event->keyval == GDK_ISO_Enter ||
- event->keyval == GDK_KP_Enter) &&
- state == 0)
- {
- gtk_combo_popdown_list (combo);
- gtk_combo_update_entry (combo);
-
- return TRUE;
- }
- else if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
- state == GDK_MOD1_MASK)
- {
- gtk_combo_popdown_list (combo);
-
- return TRUE;
- }
- else if ((event->keyval == GDK_space || event->keyval == GDK_KP_Space) &&
- state == 0)
- {
- gtk_combo_update_entry (combo);
- }
-
- return FALSE;
-}
-
-static GtkListItem *
-gtk_combo_find (GtkCombo * combo)
-{
- const gchar *text;
- GtkListItem *found = NULL;
- gchar *ltext;
- gchar *compare_text;
- GList *clist;
-
- text = gtk_entry_get_text (GTK_ENTRY (combo->entry));
- if (combo->case_sensitive)
- compare_text = (gchar *)text;
- else
- compare_text = g_utf8_casefold (text, -1);
-
- for (clist = GTK_LIST (combo->list)->children;
- !found && clist;
- clist = clist->next)
- {
- ltext = gtk_combo_func (GTK_LIST_ITEM (clist->data));
- if (!ltext)
- continue;
-
- if (!combo->case_sensitive)
- ltext = g_utf8_casefold (ltext, -1);
-
- if (strcmp (ltext, compare_text) == 0)
- found = clist->data;
-
- if (!combo->case_sensitive)
- g_free (ltext);
- }
-
- if (!combo->case_sensitive)
- g_free (compare_text);
-
- return found;
-}
-
-static gchar *
-gtk_combo_func (GtkListItem * li)
-{
- GtkWidget *label;
- gchar *ltext = NULL;
-
- ltext = g_object_get_data (G_OBJECT (li), I_(gtk_combo_string_key));
- if (!ltext)
- {
- label = GTK_BIN (li)->child;
- if (!label || !GTK_IS_LABEL (label))
- return NULL;
- ltext = (gchar *) gtk_label_get_text (GTK_LABEL (label));
- }
- return ltext;
-}
-
-static gint
-gtk_combo_focus_idle (GtkCombo * combo)
-{
- if (combo)
- {
- GDK_THREADS_ENTER ();
- gtk_widget_grab_focus (combo->entry);
- GDK_THREADS_LEAVE ();
- }
- return FALSE;
-}
-
-static gint
-gtk_combo_entry_focus_out (GtkEntry * entry, GdkEventFocus * event, GtkCombo * combo)
-{
-
- if (combo->value_in_list && !gtk_combo_find (combo))
- {
- GSource *focus_idle;
-
- /* gdk_beep(); *//* this can be annoying */
- if (combo->ok_if_empty && !strcmp (gtk_entry_get_text (entry), ""))
- return FALSE;
-#ifdef TEST
- printf ("INVALID ENTRY: `%s'\n", gtk_entry_get_text (entry));
-#endif
- gtk_grab_add (GTK_WIDGET (combo));
- /* this is needed because if we call gtk_widget_grab_focus()
- it isn't guaranteed it's the *last* call before the main-loop,
- so the focus can be lost anyway...
- the signal_stop_emission doesn't seem to work either...
- */
- focus_idle = g_idle_source_new ();
- g_source_set_closure (focus_idle,
- g_cclosure_new_object (G_CALLBACK (gtk_combo_focus_idle),
- G_OBJECT (combo)));
- g_source_attach (focus_idle, NULL);
- g_source_unref (focus_idle);
-
- /*g_signal_stop_emission_by_name (entry, "focus_out_event"); */
- return TRUE;
- }
- return FALSE;
-}
-
-static void
-gtk_combo_get_pos (GtkCombo * combo, gint * x, gint * y, gint * height, gint * width)
-{
- GtkBin *popwin;
- GtkWidget *widget;
- GtkScrolledWindow *popup;
-
- gint real_height;
- GtkRequisition list_requisition;
- gboolean show_hscroll = FALSE;
- gboolean show_vscroll = FALSE;
- gint avail_height;
- gint min_height;
- gint alloc_width;
- gint work_height;
- gint old_height;
- gint old_width;
- gint scrollbar_spacing;
-
- widget = GTK_WIDGET (combo);
- popup = GTK_SCROLLED_WINDOW (combo->popup);
- popwin = GTK_BIN (combo->popwin);
-
- scrollbar_spacing = _gtk_scrolled_window_get_scrollbar_spacing (popup);
-
- gdk_window_get_origin (combo->entry->window, x, y);
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
- *x -= widget->allocation.width - combo->entry->allocation.width;
- real_height = MIN (combo->entry->requisition.height,
- combo->entry->allocation.height);
- *y += real_height;
- avail_height = gdk_screen_get_height (gtk_widget_get_screen (widget)) - *y;
-
- gtk_widget_size_request (combo->list, &list_requisition);
- min_height = MIN (list_requisition.height,
- popup->vscrollbar->requisition.height);
- if (!GTK_LIST (combo->list)->children)
- list_requisition.height += EMPTY_LIST_HEIGHT;
-
- alloc_width = (widget->allocation.width -
- 2 * popwin->child->style->xthickness -
- 2 * GTK_CONTAINER (popwin->child)->border_width -
- 2 * GTK_CONTAINER (combo->popup)->border_width -
- 2 * GTK_CONTAINER (GTK_BIN (popup)->child)->border_width -
- 2 * GTK_BIN (popup)->child->style->xthickness);
-
- work_height = (2 * popwin->child->style->ythickness +
- 2 * GTK_CONTAINER (popwin->child)->border_width +
- 2 * GTK_CONTAINER (combo->popup)->border_width +
- 2 * GTK_CONTAINER (GTK_BIN (popup)->child)->border_width +
- 2 * GTK_BIN (popup)->child->style->ythickness);
-
- do
- {
- old_width = alloc_width;
- old_height = work_height;
-
- if (!show_hscroll &&
- alloc_width < list_requisition.width)
- {
- GtkRequisition requisition;
-
- gtk_widget_size_request (popup->hscrollbar, &requisition);
- work_height += (requisition.height + scrollbar_spacing);
-
- show_hscroll = TRUE;
- }
- if (!show_vscroll &&
- work_height + list_requisition.height > avail_height)
- {
- GtkRequisition requisition;
-
- if (work_height + min_height > avail_height &&
- *y - real_height > avail_height)
- {
- *y -= (work_height + list_requisition.height + real_height);
- break;
- }
- gtk_widget_size_request (popup->hscrollbar, &requisition);
- alloc_width -= (requisition.width + scrollbar_spacing);
- show_vscroll = TRUE;
- }
- } while (old_width != alloc_width || old_height != work_height);
-
- *width = widget->allocation.width;
- if (show_vscroll)
- *height = avail_height;
- else
- *height = work_height + list_requisition.height;
-
- if (*x < 0)
- *x = 0;
-}
-
-static void
-gtk_combo_popup_list (GtkCombo *combo)
-{
- GtkWidget *toplevel;
- GtkList *list;
- gint height, width, x, y;
- gint old_width, old_height;
-
- old_width = combo->popwin->allocation.width;
- old_height = combo->popwin->allocation.height;
-
- gtk_combo_get_pos (combo, &x, &y, &height, &width);
-
- /* workaround for gtk_scrolled_window_size_allocate bug */
- if (old_width != width || old_height != height)
- {
- gtk_widget_hide (GTK_SCROLLED_WINDOW (combo->popup)->hscrollbar);
- gtk_widget_hide (GTK_SCROLLED_WINDOW (combo->popup)->vscrollbar);
- }
-
- gtk_combo_update_list (GTK_ENTRY (combo->entry), combo);
-
- /* We need to make sure some child of combo->popwin
- * is focused to disable GtkWindow's automatic
- * "focus-the-first-item" code. If there is no selected
- * child, we focus the list itself with some hackery.
- */
- list = GTK_LIST (combo->list);
-
- if (list->selection)
- {
- gtk_widget_grab_focus (list->selection->data);
- }
- else
- {
- gtk_widget_set_can_focus (GTK_WIDGET (list), TRUE);
- gtk_widget_grab_focus (combo->list);
- GTK_LIST (combo->list)->last_focus_child = NULL;
- gtk_widget_set_can_focus (GTK_WIDGET (list), FALSE);
- }
-
- gtk_window_move (GTK_WINDOW (combo->popwin), x, y);
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (combo));
-
- if (GTK_IS_WINDOW (toplevel))
- {
- gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)),
- GTK_WINDOW (combo->popwin));
- gtk_window_set_transient_for (GTK_WINDOW (combo->popwin), GTK_WINDOW (toplevel));
- }
-
- gtk_widget_set_size_request (combo->popwin, width, height);
- gtk_widget_show (combo->popwin);
-
- gtk_widget_grab_focus (combo->popwin);
-}
-
-static void
-gtk_combo_popdown_list (GtkCombo *combo)
-{
- combo->current_button = 0;
-
- if (GTK_BUTTON (combo->button)->in_button)
- {
- GTK_BUTTON (combo->button)->in_button = FALSE;
- g_signal_emit_by_name (combo->button, "released");
- }
-
- if (GTK_WIDGET_HAS_GRAB (combo->popwin))
- {
- gtk_grab_remove (combo->popwin);
- gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (combo)),
- gtk_get_current_event_time ());
- gdk_display_keyboard_ungrab (gtk_widget_get_display (GTK_WIDGET (combo)),
- gtk_get_current_event_time ());
- }
-
- gtk_widget_hide (combo->popwin);
-
- gtk_window_group_add_window (gtk_window_get_group (NULL), GTK_WINDOW (combo->popwin));
-}
-
-static gboolean
-popup_grab_on_window (GdkWindow *window,
- guint32 activate_time)
-{
- if ((gdk_pointer_grab (window, TRUE,
- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_MASK,
- NULL, NULL, activate_time) == 0))
- {
- if (gdk_keyboard_grab (window, TRUE,
- activate_time) == 0)
- return TRUE;
- else
- {
- gdk_display_pointer_ungrab (gdk_drawable_get_display (window),
- activate_time);
- return FALSE;
- }
- }
-
- return FALSE;
-}
-
-static void
-gtk_combo_activate (GtkWidget *widget,
- GtkCombo *combo)
-{
- if (!combo->button->window ||
- !popup_grab_on_window (combo->button->window,
- gtk_get_current_event_time ()))
- return;
-
- gtk_combo_popup_list (combo);
-
- /* This must succeed since we already have the grab */
- popup_grab_on_window (combo->popwin->window,
- gtk_get_current_event_time ());
-
- if (!gtk_widget_has_focus (combo->entry))
- gtk_widget_grab_focus (combo->entry);
-
- gtk_grab_add (combo->popwin);
-}
-
-static gboolean
-gtk_combo_popup_button_press (GtkWidget *button,
- GdkEventButton *event,
- GtkCombo *combo)
-{
- if (!gtk_widget_has_focus (combo->entry))
- gtk_widget_grab_focus (combo->entry);
-
- if (event->button != 1)
- return FALSE;
-
- if (!popup_grab_on_window (combo->button->window,
- gtk_get_current_event_time ()))
- return FALSE;
-
- combo->current_button = event->button;
-
- gtk_combo_popup_list (combo);
-
- /* This must succeed since we already have the grab */
- popup_grab_on_window (combo->popwin->window,
- gtk_get_current_event_time ());
-
- g_signal_emit_by_name (button, "depressed");
-
- gtk_grab_add (combo->popwin);
-
- return TRUE;
-}
-
-static gboolean
-gtk_combo_popup_button_leave (GtkWidget *button,
- GdkEventCrossing *event,
- GtkCombo *combo)
-{
- /* The idea here is that we want to keep the button down if the
- * popup is popped up.
- */
- return combo->current_button != 0;
-}
-
-static void
-gtk_combo_update_entry (GtkCombo * combo)
-{
- GtkList *list = GTK_LIST (combo->list);
- char *text;
-
- g_signal_handler_block (list, combo->list_change_id);
- if (list->selection)
- {
- text = gtk_combo_func (GTK_LIST_ITEM (list->selection->data));
- if (!text)
- text = "";
- gtk_entry_set_text (GTK_ENTRY (combo->entry), text);
- }
- g_signal_handler_unblock (list, combo->list_change_id);
-}
-
-static void
-gtk_combo_selection_changed (GtkList *list,
- GtkCombo *combo)
-{
- if (!gtk_widget_get_visible (combo->popwin))
- gtk_combo_update_entry (combo);
-}
-
-static void
-gtk_combo_update_list (GtkEntry * entry, GtkCombo * combo)
-{
- GtkList *list = GTK_LIST (combo->list);
- GList *slist = list->selection;
- GtkListItem *li;
-
- gtk_grab_remove (GTK_WIDGET (combo));
-
- g_signal_handler_block (entry, combo->entry_change_id);
- if (slist && slist->data)
- gtk_list_unselect_child (list, GTK_WIDGET (slist->data));
- li = gtk_combo_find (combo);
- if (li)
- gtk_list_select_child (list, GTK_WIDGET (li));
- g_signal_handler_unblock (entry, combo->entry_change_id);
-}
-
-static gint
-gtk_combo_button_press (GtkWidget * widget, GdkEvent * event, GtkCombo * combo)
-{
- GtkWidget *child;
-
- child = gtk_get_event_widget (event);
-
- /* We don't ask for button press events on the grab widget, so
- * if an event is reported directly to the grab widget, it must
- * be on a window outside the application (and thus we remove
- * the popup window). Otherwise, we check if the widget is a child
- * of the grab widget, and only remove the popup window if it
- * is not.
- */
- if (child != widget)
- {
- while (child)
- {
- if (child == widget)
- return FALSE;
- child = child->parent;
- }
- }
-
- gtk_combo_popdown_list (combo);
-
- return TRUE;
-}
-
-static gboolean
-is_within (GtkWidget *widget,
- GtkWidget *ancestor)
-{
- return widget == ancestor || gtk_widget_is_ancestor (widget, ancestor);
-}
-
-static void
-gtk_combo_button_event_after (GtkWidget *widget,
- GdkEvent *event,
- GtkCombo *combo)
-{
- GtkWidget *child;
-
- if (event->type != GDK_BUTTON_RELEASE)
- return;
-
- child = gtk_get_event_widget ((GdkEvent*) event);
-
- if ((combo->current_button != 0) && (event->button.button == 1))
- {
- /* This was the initial button press */
-
- combo->current_button = 0;
-
- /* Check to see if we released inside the button */
- if (child && is_within (child, combo->button))
- {
- gtk_grab_add (combo->popwin);
- gdk_pointer_grab (combo->popwin->window, TRUE,
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_MASK,
- NULL, NULL, GDK_CURRENT_TIME);
- return;
- }
- }
-
- if (is_within (child, combo->list))
- gtk_combo_update_entry (combo);
-
- gtk_combo_popdown_list (combo);
-
-}
-
-static void
-find_child_foreach (GtkWidget *widget,
- gpointer data)
-{
- GdkEventButton *event = data;
-
- if (!event->window)
- {
- if (event->x >= widget->allocation.x &&
- event->x < widget->allocation.x + widget->allocation.width &&
- event->y >= widget->allocation.y &&
- event->y < widget->allocation.y + widget->allocation.height)
- event->window = g_object_ref (widget->window);
- }
-}
-
-static void
-find_child_window (GtkContainer *container,
- GdkEventButton *event)
-{
- gtk_container_foreach (container, find_child_foreach, event);
-}
-
-static gint
-gtk_combo_list_enter (GtkWidget *widget,
- GdkEventCrossing *event,
- GtkCombo *combo)
-{
- GtkWidget *event_widget;
-
- event_widget = gtk_get_event_widget ((GdkEvent*) event);
-
- if ((event_widget == combo->list) &&
- (combo->current_button != 0) &&
- (!GTK_WIDGET_HAS_GRAB (combo->list)))
- {
- GdkEvent *tmp_event = gdk_event_new (GDK_BUTTON_PRESS);
- gint x, y;
- GdkModifierType mask;
-
- gtk_grab_remove (combo->popwin);
-
- /* Transfer the grab over to the list by synthesizing
- * a button press event
- */
- gdk_window_get_pointer (combo->list->window, &x, &y, &mask);
-
- tmp_event->button.send_event = TRUE;
- tmp_event->button.time = GDK_CURRENT_TIME; /* bad */
- tmp_event->button.x = x;
- tmp_event->button.y = y;
- /* We leave all the XInput fields unfilled here, in the expectation
- * that GtkList doesn't care.
- */
- tmp_event->button.button = combo->current_button;
- tmp_event->button.state = mask;
-
- find_child_window (GTK_CONTAINER (combo->list), &tmp_event->button);
- if (!tmp_event->button.window)
- {
- GtkWidget *child;
-
- if (GTK_LIST (combo->list)->children)
- child = GTK_LIST (combo->list)->children->data;
- else
- child = combo->list;
-
- tmp_event->button.window = g_object_ref (child->window);
- }
-
- gtk_widget_event (combo->list, tmp_event);
- gdk_event_free (tmp_event);
- }
-
- return FALSE;
-}
-
-static int
-gtk_combo_list_key_press (GtkWidget * widget, GdkEventKey * event, GtkCombo * combo)
-{
- guint state = event->state & gtk_accelerator_get_default_mod_mask ();
-
- if (event->keyval == GDK_Escape && state == 0)
- {
- if (GTK_WIDGET_HAS_GRAB (combo->list))
- gtk_list_end_drag_selection (GTK_LIST (combo->list));
-
- gtk_combo_popdown_list (combo);
-
- return TRUE;
- }
- return FALSE;
-}
-
-static void
-combo_event_box_realize (GtkWidget *widget)
-{
- GdkCursor *cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget),
- GDK_TOP_LEFT_ARROW);
- gdk_window_set_cursor (widget->window, cursor);
- gdk_cursor_unref (cursor);
-}
-
-static void
-gtk_combo_init (GtkCombo * combo)
-{
- GtkWidget *arrow;
- GtkWidget *frame;
- GtkWidget *event_box;
-
- combo->case_sensitive = FALSE;
- combo->value_in_list = FALSE;
- combo->ok_if_empty = TRUE;
- combo->use_arrows = TRUE;
- combo->use_arrows_always = TRUE;
- combo->entry = gtk_entry_new ();
- combo->button = gtk_button_new ();
- combo->current_button = 0;
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
- gtk_widget_show (arrow);
- gtk_container_add (GTK_CONTAINER (combo->button), arrow);
- gtk_box_pack_start (GTK_BOX (combo), combo->entry, TRUE, TRUE, 0);
- gtk_box_pack_end (GTK_BOX (combo), combo->button, FALSE, FALSE, 0);
- gtk_widget_set_can_focus (combo->button, FALSE);
- gtk_widget_show (combo->entry);
- gtk_widget_show (combo->button);
- combo->entry_change_id = g_signal_connect (combo->entry, "changed",
- G_CALLBACK (gtk_combo_update_list),
- combo);
- g_signal_connect_after (combo->entry, "key-press-event",
- G_CALLBACK (gtk_combo_entry_key_press), combo);
- g_signal_connect_after (combo->entry, "focus-out-event",
- G_CALLBACK (gtk_combo_entry_focus_out), combo);
- combo->activate_id = g_signal_connect (combo->entry, "activate",
- G_CALLBACK (gtk_combo_activate),
- combo);
- g_signal_connect (combo->button, "button-press-event",
- G_CALLBACK (gtk_combo_popup_button_press), combo);
- g_signal_connect (combo->button, "leave-notify-event",
- G_CALLBACK (gtk_combo_popup_button_leave), combo);
-
- combo->popwin = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_widget_set_name (combo->popwin, "gtk-combo-popup-window");
- gtk_window_set_type_hint (GTK_WINDOW (combo->popwin), GDK_WINDOW_TYPE_HINT_COMBO);
- g_object_ref (combo->popwin);
- gtk_window_set_resizable (GTK_WINDOW (combo->popwin), FALSE);
-
- g_signal_connect (combo->popwin, "key-press-event",
- G_CALLBACK (gtk_combo_window_key_press), combo);
-
- gtk_widget_set_events (combo->popwin, GDK_KEY_PRESS_MASK);
-
- event_box = gtk_event_box_new ();
- gtk_container_add (GTK_CONTAINER (combo->popwin), event_box);
- g_signal_connect (event_box, "realize",
- G_CALLBACK (combo_event_box_realize), NULL);
- gtk_widget_show (event_box);
-
-
- frame = gtk_frame_new (NULL);
- gtk_container_add (GTK_CONTAINER (event_box), frame);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_widget_show (frame);
-
- combo->popup = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (combo->popup),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_widget_set_can_focus (GTK_SCROLLED_WINDOW (combo->popup)->hscrollbar, FALSE);
- gtk_widget_set_can_focus (GTK_SCROLLED_WINDOW (combo->popup)->vscrollbar, FALSE);
- gtk_container_add (GTK_CONTAINER (frame), combo->popup);
- gtk_widget_show (combo->popup);
-
- combo->list = gtk_list_new ();
- /* We'll use enter notify events to figure out when to transfer
- * the grab to the list
- */
- gtk_widget_set_events (combo->list, GDK_ENTER_NOTIFY_MASK);
-
- gtk_list_set_selection_mode (GTK_LIST(combo->list), GTK_SELECTION_BROWSE);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (combo->popup), combo->list);
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (combo->list),
- gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (combo->popup)));
- gtk_container_set_focus_hadjustment (GTK_CONTAINER (combo->list),
- gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (combo->popup)));
- gtk_widget_show (combo->list);
-
- combo->list_change_id = g_signal_connect (combo->list, "selection-changed",
- G_CALLBACK (gtk_combo_selection_changed), combo);
-
- g_signal_connect (combo->popwin, "key-press-event",
- G_CALLBACK (gtk_combo_list_key_press), combo);
- g_signal_connect (combo->popwin, "button-press-event",
- G_CALLBACK (gtk_combo_button_press), combo);
-
- g_signal_connect (combo->popwin, "event-after",
- G_CALLBACK (gtk_combo_button_event_after), combo);
- g_signal_connect (combo->list, "event-after",
- G_CALLBACK (gtk_combo_button_event_after), combo);
-
- g_signal_connect (combo->list, "enter-notify-event",
- G_CALLBACK (gtk_combo_list_enter), combo);
-}
-
-static void
-gtk_combo_realize (GtkWidget *widget)
-{
- GtkCombo *combo = GTK_COMBO (widget);
-
- gtk_window_set_screen (GTK_WINDOW (combo->popwin),
- gtk_widget_get_screen (widget));
-
- GTK_WIDGET_CLASS (gtk_combo_parent_class)->realize (widget);
-}
-
-static void
-gtk_combo_unrealize (GtkWidget *widget)
-{
- GtkCombo *combo = GTK_COMBO (widget);
-
- gtk_combo_popdown_list (combo);
- gtk_widget_unrealize (combo->popwin);
-
- GTK_WIDGET_CLASS (gtk_combo_parent_class)->unrealize (widget);
-}
-
-GtkWidget*
-gtk_combo_new (void)
-{
- return g_object_new (GTK_TYPE_COMBO, NULL);
-}
-
-void
-gtk_combo_set_value_in_list (GtkCombo * combo, gboolean val, gboolean ok_if_empty)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
- val = val != FALSE;
- ok_if_empty = ok_if_empty != FALSE;
-
- g_object_freeze_notify (G_OBJECT (combo));
- if (combo->value_in_list != val)
- {
- combo->value_in_list = val;
- g_object_notify (G_OBJECT (combo), "value-in-list");
- }
- if (combo->ok_if_empty != ok_if_empty)
- {
- combo->ok_if_empty = ok_if_empty;
- g_object_notify (G_OBJECT (combo), "allow-empty");
- }
- g_object_thaw_notify (G_OBJECT (combo));
-}
-
-void
-gtk_combo_set_case_sensitive (GtkCombo * combo, gboolean val)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
- val = val != FALSE;
-
- if (combo->case_sensitive != val)
- {
- combo->case_sensitive = val;
- g_object_notify (G_OBJECT (combo), "case-sensitive");
- }
-}
-
-void
-gtk_combo_set_use_arrows (GtkCombo * combo, gboolean val)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
- val = val != FALSE;
-
- if (combo->use_arrows != val)
- {
- combo->use_arrows = val;
- g_object_notify (G_OBJECT (combo), "enable-arrow-keys");
- }
-}
-
-void
-gtk_combo_set_use_arrows_always (GtkCombo * combo, gboolean val)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
- val = val != FALSE;
-
- if (combo->use_arrows_always != val)
- {
- g_object_freeze_notify (G_OBJECT (combo));
- combo->use_arrows_always = val;
- g_object_notify (G_OBJECT (combo), "enable-arrows-always");
-
- if (combo->use_arrows != TRUE)
- {
- combo->use_arrows = TRUE;
- g_object_notify (G_OBJECT (combo), "enable-arrow-keys");
- }
- g_object_thaw_notify (G_OBJECT (combo));
- }
-}
-
-void
-gtk_combo_set_popdown_strings (GtkCombo *combo,
- GList *strings)
-{
- GList *list;
- GtkWidget *li;
-
- g_return_if_fail (GTK_IS_COMBO (combo));
-
- gtk_combo_popdown_list (combo);
-
- gtk_list_clear_items (GTK_LIST (combo->list), 0, -1);
- list = strings;
- while (list)
- {
- li = gtk_list_item_new_with_label ((gchar *) list->data);
- gtk_widget_show (li);
- gtk_container_add (GTK_CONTAINER (combo->list), li);
- list = list->next;
- }
-}
-
-void
-gtk_combo_set_item_string (GtkCombo *combo,
- GtkItem *item,
- const gchar *item_value)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
- g_return_if_fail (item != NULL);
-
- g_object_set_data_full (G_OBJECT (item), I_(gtk_combo_string_key),
- g_strdup (item_value), g_free);
-}
-
-static void
-gtk_combo_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkCombo *combo = GTK_COMBO (widget);
-
- GTK_WIDGET_CLASS (gtk_combo_parent_class)->size_allocate (widget, allocation);
-
- if (combo->entry->allocation.height > combo->entry->requisition.height)
- {
- GtkAllocation button_allocation;
-
- button_allocation = combo->button->allocation;
- button_allocation.height = combo->entry->requisition.height;
- button_allocation.y = combo->entry->allocation.y +
- (combo->entry->allocation.height - combo->entry->requisition.height)
- / 2;
- gtk_widget_size_allocate (combo->button, &button_allocation);
- }
-}
-
-void
-gtk_combo_disable_activate (GtkCombo *combo)
-{
- g_return_if_fail (GTK_IS_COMBO (combo));
-
- if ( combo->activate_id ) {
- g_signal_handler_disconnect (combo->entry, combo->activate_id);
- combo->activate_id = 0;
- }
-}
-
-static void
-gtk_combo_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkCombo *combo = GTK_COMBO (object);
-
- switch (prop_id)
- {
- case PROP_ENABLE_ARROW_KEYS:
- gtk_combo_set_use_arrows (combo, g_value_get_boolean (value));
- break;
- case PROP_ENABLE_ARROWS_ALWAYS:
- gtk_combo_set_use_arrows_always (combo, g_value_get_boolean (value));
- break;
- case PROP_CASE_SENSITIVE:
- gtk_combo_set_case_sensitive (combo, g_value_get_boolean (value));
- break;
- case PROP_ALLOW_EMPTY:
- combo->ok_if_empty = g_value_get_boolean (value);
- break;
- case PROP_VALUE_IN_LIST:
- combo->value_in_list = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
-}
-
-static void
-gtk_combo_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkCombo *combo = GTK_COMBO (object);
-
- switch (prop_id)
- {
- case PROP_ENABLE_ARROW_KEYS:
- g_value_set_boolean (value, combo->use_arrows);
- break;
- case PROP_ENABLE_ARROWS_ALWAYS:
- g_value_set_boolean (value, combo->use_arrows_always);
- break;
- case PROP_CASE_SENSITIVE:
- g_value_set_boolean (value, combo->case_sensitive);
- break;
- case PROP_ALLOW_EMPTY:
- g_value_set_boolean (value, combo->ok_if_empty);
- break;
- case PROP_VALUE_IN_LIST:
- g_value_set_boolean (value, combo->value_in_list);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
-}
-
-#define __GTK_SMART_COMBO_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkcombo.h b/gtk/gtkcombo.h
deleted file mode 100644
index c9c8b930c0..0000000000
--- a/gtk/gtkcombo.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* gtkcombo - combo widget for gtk+
- * Copyright 1997 Paolo Molaro
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_SMART_COMBO_H__
-#define __GTK_SMART_COMBO_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_COMBO (gtk_combo_get_type ())
-#define GTK_COMBO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COMBO, GtkCombo))
-#define GTK_COMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_COMBO, GtkComboClass))
-#define GTK_IS_COMBO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_COMBO))
-#define GTK_IS_COMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_COMBO))
-#define GTK_COMBO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_COMBO, GtkComboClass))
-
-
-typedef struct _GtkCombo GtkCombo;
-typedef struct _GtkComboClass GtkComboClass;
-
-/* you should access only the entry and list fields directly */
-struct _GtkCombo {
- GtkHBox hbox;
-
- /*< public >*/
- GtkWidget *entry;
-
- /*< private >*/
- GtkWidget *button;
- GtkWidget *popup;
- GtkWidget *popwin;
-
- /*< public >*/
- GtkWidget *list;
-
- /*< private >*/
- guint entry_change_id;
- guint list_change_id; /* unused */
-
- guint value_in_list:1;
- guint ok_if_empty:1;
- guint case_sensitive:1;
- guint use_arrows:1;
- guint use_arrows_always:1;
-
- guint16 current_button;
- guint activate_id;
-};
-
-struct _GtkComboClass {
- GtkHBoxClass parent_class;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-GType gtk_combo_get_type (void) G_GNUC_CONST;
-
-GtkWidget* gtk_combo_new (void);
-/* the text in the entry must be or not be in the list */
-void gtk_combo_set_value_in_list (GtkCombo* combo,
- gboolean val,
- gboolean ok_if_empty);
-/* set/unset arrows working for changing the value (can be annoying) */
-void gtk_combo_set_use_arrows (GtkCombo* combo,
- gboolean val);
-/* up/down arrows change value if current value not in list */
-void gtk_combo_set_use_arrows_always (GtkCombo* combo,
- gboolean val);
-/* perform case-sensitive compares */
-void gtk_combo_set_case_sensitive (GtkCombo* combo,
- gboolean val);
-/* call this function on an item if it isn't a label or you
- want it to have a different value to be displayed in the entry */
-void gtk_combo_set_item_string (GtkCombo* combo,
- GtkItem* item,
- const gchar* item_value);
-/* simple interface */
-void gtk_combo_set_popdown_strings (GtkCombo* combo,
- GList *strings);
-
-void gtk_combo_disable_activate (GtkCombo* combo);
-
-G_END_DECLS
-
-#endif /* __GTK_SMART_COMBO_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkcombobox.h b/gtk/gtkcombobox.h
index 963e4b415b..cbe40f9ca5 100644
--- a/gtk/gtkcombobox.h
+++ b/gtk/gtkcombobox.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcomboboxentry.h b/gtk/gtkcomboboxentry.h
index 81c5aec1f5..c8820c56b5 100644
--- a/gtk/gtkcomboboxentry.h
+++ b/gtk/gtkcomboboxentry.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index 2fa7c22b69..3e1fa7528e 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -1538,55 +1538,6 @@ struct _GtkForeachData
gpointer callback_data;
};
-static void
-gtk_container_foreach_unmarshal (GtkWidget *child,
- gpointer data)
-{
- GtkForeachData *fdata = (GtkForeachData*) data;
- GtkArg args[2];
-
- /* first argument */
- args[0].name = NULL;
- args[0].type = G_TYPE_FROM_INSTANCE (child);
- GTK_VALUE_OBJECT (args[0]) = GTK_OBJECT (child);
-
- /* location for return value */
- args[1].name = NULL;
- args[1].type = G_TYPE_NONE;
-
- fdata->callback (fdata->container, fdata->callback_data, 1, args);
-}
-
-void
-gtk_container_foreach_full (GtkContainer *container,
- GtkCallback callback,
- GtkCallbackMarshal marshal,
- gpointer callback_data,
- GDestroyNotify notify)
-{
- g_return_if_fail (GTK_IS_CONTAINER (container));
-
- if (marshal)
- {
- GtkForeachData fdata;
-
- fdata.container = GTK_OBJECT (container);
- fdata.callback = marshal;
- fdata.callback_data = callback_data;
-
- gtk_container_foreach (container, gtk_container_foreach_unmarshal, &fdata);
- }
- else
- {
- g_return_if_fail (callback != NULL);
-
- gtk_container_foreach (container, callback, &callback_data);
- }
-
- if (notify)
- notify (callback_data);
-}
-
/**
* gtk_container_set_focus_child:
* @container: a #GtkContainer
diff --git a/gtk/gtkcontainer.h b/gtk/gtkcontainer.h
index 0bf30b9a2f..a1c3a52068 100644
--- a/gtk/gtkcontainer.h
+++ b/gtk/gtkcontainer.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -122,19 +122,8 @@ void gtk_container_check_resize (GtkContainer *container);
void gtk_container_foreach (GtkContainer *container,
GtkCallback callback,
gpointer callback_data);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_container_foreach_full (GtkContainer *container,
- GtkCallback callback,
- GtkCallbackMarshal marshal,
- gpointer callback_data,
- GDestroyNotify notify);
-#endif /* GTK_DISABLE_DEPRECATED */
GList* gtk_container_get_children (GtkContainer *container);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_container_children gtk_container_get_children
-#endif
-
void gtk_container_propagate_expose (GtkContainer *container,
GtkWidget *child,
GdkEventExpose *event);
@@ -220,9 +209,6 @@ GList *_gtk_container_focus_sort (GtkContainer *container,
GtkDirectionType direction,
GtkWidget *old_focus);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_container_border_width gtk_container_set_border_width
-#endif /* GTK_DISABLE_DEPRECATED */
G_END_DECLS
diff --git a/gtk/gtkctree.c b/gtk/gtkctree.c
deleted file mode 100644
index bd4175c61d..0000000000
--- a/gtk/gtkctree.c
+++ /dev/null
@@ -1,6144 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald,
- * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
- *
- * GtkCTree widget for GTK+
- * Copyright (C) 1998 Lars Hamann and Stefan Jeske
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-#include <stdlib.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#define __GTK_CTREE_C__
-
-#include "gtkctree.h"
-#include "gtkbindings.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkdnd.h"
-#include "gtkintl.h"
-#include <gdk/gdkkeysyms.h>
-
-#include "gtkalias.h"
-
-#define PM_SIZE 8
-#define TAB_SIZE (PM_SIZE + 6)
-#define CELL_SPACING 1
-#define CLIST_OPTIMUM_SIZE 64
-#define COLUMN_INSET 3
-#define DRAG_WIDTH 6
-
-#define ROW_TOP_YPIXEL(clist, row) (((clist)->row_height * (row)) + \
- (((row) + 1) * CELL_SPACING) + \
- (clist)->voffset)
-#define ROW_FROM_YPIXEL(clist, y) (((y) - (clist)->voffset) / \
- ((clist)->row_height + CELL_SPACING))
-#define COLUMN_LEFT_XPIXEL(clist, col) ((clist)->column[(col)].area.x \
- + (clist)->hoffset)
-#define COLUMN_LEFT(clist, column) ((clist)->column[(column)].area.x)
-
-static inline gint
-COLUMN_FROM_XPIXEL (GtkCList * clist,
- gint x)
-{
- gint i, cx;
-
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].visible)
- {
- cx = clist->column[i].area.x + clist->hoffset;
-
- if (x >= (cx - (COLUMN_INSET + CELL_SPACING)) &&
- x <= (cx + clist->column[i].area.width + COLUMN_INSET))
- return i;
- }
-
- /* no match */
- return -1;
-}
-
-#define CLIST_UNFROZEN(clist) (((GtkCList*) (clist))->freeze_count == 0)
-#define CLIST_REFRESH(clist) G_STMT_START { \
- if (CLIST_UNFROZEN (clist)) \
- GTK_CLIST_GET_CLASS (clist)->refresh ((GtkCList*) (clist)); \
-} G_STMT_END
-
-
-enum {
- ARG_0,
- ARG_N_COLUMNS,
- ARG_TREE_COLUMN,
- ARG_INDENT,
- ARG_SPACING,
- ARG_SHOW_STUB,
- ARG_LINE_STYLE,
- ARG_EXPANDER_STYLE
-};
-
-
-static void gtk_ctree_class_init (GtkCTreeClass *klass);
-static void gtk_ctree_init (GtkCTree *ctree);
-static GObject* gtk_ctree_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_params);
-static void gtk_ctree_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_ctree_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_ctree_realize (GtkWidget *widget);
-static void gtk_ctree_unrealize (GtkWidget *widget);
-static gint gtk_ctree_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static void ctree_attach_styles (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void ctree_detach_styles (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static gint draw_cell_pixmap (GdkWindow *window,
- GdkRectangle *clip_rectangle,
- GdkGC *fg_gc,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint x,
- gint y,
- gint width,
- gint height);
-static void get_cell_style (GtkCList *clist,
- GtkCListRow *clist_row,
- gint state,
- gint column,
- GtkStyle **style,
- GdkGC **fg_gc,
- GdkGC **bg_gc);
-static gint gtk_ctree_draw_expander (GtkCTree *ctree,
- GtkCTreeRow *ctree_row,
- GtkStyle *style,
- GdkRectangle *clip_rectangle,
- gint x);
-static gint gtk_ctree_draw_lines (GtkCTree *ctree,
- GtkCTreeRow *ctree_row,
- gint row,
- gint column,
- gint state,
- GdkRectangle *clip_rectangle,
- GdkRectangle *cell_rectangle,
- GdkRectangle *crect,
- GdkRectangle *area,
- GtkStyle *style);
-static void draw_row (GtkCList *clist,
- GdkRectangle *area,
- gint row,
- GtkCListRow *clist_row);
-static void draw_drag_highlight (GtkCList *clist,
- GtkCListRow *dest_row,
- gint dest_row_number,
- GtkCListDragPos drag_pos);
-static void tree_draw_node (GtkCTree *ctree,
- GtkCTreeNode *node);
-static void set_cell_contents (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkCellType type,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-static void set_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded);
-static GtkCTreeRow *row_new (GtkCTree *ctree);
-static void row_delete (GtkCTree *ctree,
- GtkCTreeRow *ctree_row);
-static void tree_delete (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void tree_delete_row (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void real_clear (GtkCList *clist);
-static void tree_update_level (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void tree_select (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void tree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void real_select_all (GtkCList *clist);
-static void real_unselect_all (GtkCList *clist);
-static void tree_expand (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void tree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void tree_collapse_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth);
-static void tree_toggle_expansion (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void change_focus_row_expansion (GtkCTree *ctree,
- GtkCTreeExpansionType expansion);
-static void real_select_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-static void real_unselect_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event);
-static void real_tree_select (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column);
-static void real_tree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column);
-static void real_tree_expand (GtkCTree *ctree,
- GtkCTreeNode *node);
-static void real_tree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node);
-static void real_tree_move (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling);
-static void real_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row);
-static void gtk_ctree_link (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- gboolean update_focus_row);
-static void gtk_ctree_unlink (GtkCTree *ctree,
- GtkCTreeNode *node,
- gboolean update_focus_row);
-static GtkCTreeNode * gtk_ctree_last_visible (GtkCTree *ctree,
- GtkCTreeNode *node);
-static gboolean ctree_is_hot_spot (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint row,
- gint x,
- gint y);
-static void tree_sort (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static void fake_unselect_all (GtkCList *clist,
- gint row);
-static GList * selection_find (GtkCList *clist,
- gint row_number,
- GList *row_list_element);
-static void resync_selection (GtkCList *clist,
- GdkEvent *event);
-static void real_undo_selection (GtkCList *clist);
-static void select_row_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-static gint real_insert_row (GtkCList *clist,
- gint row,
- gchar *text[]);
-static void real_remove_row (GtkCList *clist,
- gint row);
-static void real_sort_list (GtkCList *clist);
-static void cell_size_request (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkRequisition *requisition);
-static void column_auto_resize (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- gint old_width);
-static void auto_resize_columns (GtkCList *clist);
-
-
-static gboolean check_drag (GtkCTree *ctree,
- GtkCTreeNode *drag_source,
- GtkCTreeNode *drag_target,
- GtkCListDragPos insert_pos);
-static void gtk_ctree_drag_begin (GtkWidget *widget,
- GdkDragContext *context);
-static gint gtk_ctree_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
-static void gtk_ctree_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint32 time);
-static void remove_grab (GtkCList *clist);
-static void drag_dest_cell (GtkCList *clist,
- gint x,
- gint y,
- GtkCListDestInfo *dest_info);
-
-
-enum
-{
- TREE_SELECT_ROW,
- TREE_UNSELECT_ROW,
- TREE_EXPAND,
- TREE_COLLAPSE,
- TREE_MOVE,
- CHANGE_FOCUS_ROW_EXPANSION,
- LAST_SIGNAL
-};
-
-static GtkCListClass *parent_class = NULL;
-static GtkContainerClass *container_class = NULL;
-static guint ctree_signals[LAST_SIGNAL] = {0};
-
-
-GtkType
-gtk_ctree_get_type (void)
-{
- static GtkType ctree_type = 0;
-
- if (!ctree_type)
- {
- static const GtkTypeInfo ctree_info =
- {
- "GtkCTree",
- sizeof (GtkCTree),
- sizeof (GtkCTreeClass),
- (GtkClassInitFunc) gtk_ctree_class_init,
- (GtkObjectInitFunc) gtk_ctree_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkCTree");
- ctree_type = gtk_type_unique (GTK_TYPE_CLIST, &ctree_info);
- }
-
- return ctree_type;
-}
-
-static void
-gtk_ctree_class_init (GtkCTreeClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkCListClass *clist_class;
- GtkBindingSet *binding_set;
-
- gobject_class->constructor = gtk_ctree_constructor;
-
- object_class = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
- container_class = (GtkContainerClass *) klass;
- clist_class = (GtkCListClass *) klass;
-
- parent_class = gtk_type_class (GTK_TYPE_CLIST);
- container_class = gtk_type_class (GTK_TYPE_CONTAINER);
-
- object_class->set_arg = gtk_ctree_set_arg;
- object_class->get_arg = gtk_ctree_get_arg;
-
- widget_class->realize = gtk_ctree_realize;
- widget_class->unrealize = gtk_ctree_unrealize;
- widget_class->button_press_event = gtk_ctree_button_press;
-
- widget_class->drag_begin = gtk_ctree_drag_begin;
- widget_class->drag_motion = gtk_ctree_drag_motion;
- widget_class->drag_data_received = gtk_ctree_drag_data_received;
-
- clist_class->select_row = real_select_row;
- clist_class->unselect_row = real_unselect_row;
- clist_class->row_move = real_row_move;
- clist_class->undo_selection = real_undo_selection;
- clist_class->resync_selection = resync_selection;
- clist_class->selection_find = selection_find;
- clist_class->click_column = NULL;
- clist_class->draw_row = draw_row;
- clist_class->draw_drag_highlight = draw_drag_highlight;
- clist_class->clear = real_clear;
- clist_class->select_all = real_select_all;
- clist_class->unselect_all = real_unselect_all;
- clist_class->fake_unselect_all = fake_unselect_all;
- clist_class->insert_row = real_insert_row;
- clist_class->remove_row = real_remove_row;
- clist_class->sort_list = real_sort_list;
- clist_class->set_cell_contents = set_cell_contents;
- clist_class->cell_size_request = cell_size_request;
-
- klass->tree_select_row = real_tree_select;
- klass->tree_unselect_row = real_tree_unselect;
- klass->tree_expand = real_tree_expand;
- klass->tree_collapse = real_tree_collapse;
- klass->tree_move = real_tree_move;
- klass->change_focus_row_expansion = change_focus_row_expansion;
-
- gtk_object_add_arg_type ("GtkCTree::n-columns", /* overrides GtkCList::n_columns!! */
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME,
- ARG_N_COLUMNS);
- gtk_object_add_arg_type ("GtkCTree::tree-column",
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME,
- ARG_TREE_COLUMN);
- gtk_object_add_arg_type ("GtkCTree::indent",
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_INDENT);
- gtk_object_add_arg_type ("GtkCTree::spacing",
- GTK_TYPE_UINT,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SPACING);
- gtk_object_add_arg_type ("GtkCTree::show-stub",
- GTK_TYPE_BOOL,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SHOW_STUB);
- gtk_object_add_arg_type ("GtkCTree::line-style",
- GTK_TYPE_CTREE_LINE_STYLE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_LINE_STYLE);
- gtk_object_add_arg_type ("GtkCTree::expander-style",
- GTK_TYPE_CTREE_EXPANDER_STYLE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_EXPANDER_STYLE);
-
- ctree_signals[TREE_SELECT_ROW] =
- gtk_signal_new (I_("tree-select-row"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_select_row),
- _gtk_marshal_VOID__POINTER_INT,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_CTREE_NODE,
- GTK_TYPE_INT);
- ctree_signals[TREE_UNSELECT_ROW] =
- gtk_signal_new (I_("tree-unselect-row"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_unselect_row),
- _gtk_marshal_VOID__POINTER_INT,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_CTREE_NODE,
- GTK_TYPE_INT);
- ctree_signals[TREE_EXPAND] =
- gtk_signal_new (I_("tree-expand"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_expand),
- _gtk_marshal_VOID__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_CTREE_NODE);
- ctree_signals[TREE_COLLAPSE] =
- gtk_signal_new (I_("tree-collapse"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_collapse),
- _gtk_marshal_VOID__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_CTREE_NODE);
- ctree_signals[TREE_MOVE] =
- gtk_signal_new (I_("tree-move"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_move),
- _gtk_marshal_VOID__POINTER_POINTER_POINTER,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_CTREE_NODE,
- GTK_TYPE_CTREE_NODE,
- GTK_TYPE_CTREE_NODE);
- ctree_signals[CHANGE_FOCUS_ROW_EXPANSION] =
- gtk_signal_new (I_("change-focus-row-expansion"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkCTreeClass,
- change_focus_row_expansion),
- _gtk_marshal_VOID__ENUM,
- GTK_TYPE_NONE, 1, GTK_TYPE_CTREE_EXPANSION_TYPE);
-
- binding_set = gtk_binding_set_by_class (klass);
- gtk_binding_entry_add_signal (binding_set,
- GDK_plus, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
- gtk_binding_entry_add_signal (binding_set,
- GDK_plus, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Add, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Add, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_minus, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_COLLAPSE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_minus, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM,
- GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Subtract, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_COLLAPSE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Subtract, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM,
- GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_equal, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Equal, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Multiply, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_asterisk, 0,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM, GTK_CTREE_EXPANSION_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KP_Multiply, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM,
- GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_asterisk, GDK_CONTROL_MASK,
- "change-focus-row-expansion", 1,
- GTK_TYPE_ENUM,
- GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE);
-}
-
-static void
-gtk_ctree_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkCTree *ctree;
- GtkCList *clist;
-
- ctree = GTK_CTREE (object);
- clist = GTK_CLIST (ctree);
-
- switch (arg_id)
- {
- case ARG_N_COLUMNS: /* construct-only arg, only set at construction time */
- clist->columns = MAX (1, GTK_VALUE_UINT (*arg));
- ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
- break;
- case ARG_TREE_COLUMN: /* construct-only arg, only set at construction time */
- ctree->tree_column = GTK_VALUE_UINT (*arg);
- ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
- break;
- case ARG_INDENT:
- gtk_ctree_set_indent (ctree, GTK_VALUE_UINT (*arg));
- break;
- case ARG_SPACING:
- gtk_ctree_set_spacing (ctree, GTK_VALUE_UINT (*arg));
- break;
- case ARG_SHOW_STUB:
- gtk_ctree_set_show_stub (ctree, GTK_VALUE_BOOL (*arg));
- break;
- case ARG_LINE_STYLE:
- gtk_ctree_set_line_style (ctree, GTK_VALUE_ENUM (*arg));
- break;
- case ARG_EXPANDER_STYLE:
- gtk_ctree_set_expander_style (ctree, GTK_VALUE_ENUM (*arg));
- break;
- default:
- break;
- }
-}
-
-static void
-gtk_ctree_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkCTree *ctree;
-
- ctree = GTK_CTREE (object);
-
- switch (arg_id)
- {
- case ARG_N_COLUMNS:
- GTK_VALUE_UINT (*arg) = GTK_CLIST (ctree)->columns;
- break;
- case ARG_TREE_COLUMN:
- GTK_VALUE_UINT (*arg) = ctree->tree_column;
- break;
- case ARG_INDENT:
- GTK_VALUE_UINT (*arg) = ctree->tree_indent;
- break;
- case ARG_SPACING:
- GTK_VALUE_UINT (*arg) = ctree->tree_spacing;
- break;
- case ARG_SHOW_STUB:
- GTK_VALUE_BOOL (*arg) = ctree->show_stub;
- break;
- case ARG_LINE_STYLE:
- GTK_VALUE_ENUM (*arg) = ctree->line_style;
- break;
- case ARG_EXPANDER_STYLE:
- GTK_VALUE_ENUM (*arg) = ctree->expander_style;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-gtk_ctree_init (GtkCTree *ctree)
-{
- GtkCList *clist;
-
- GTK_CLIST_SET_FLAG (ctree, CLIST_DRAW_DRAG_RECT);
- GTK_CLIST_SET_FLAG (ctree, CLIST_DRAW_DRAG_LINE);
-
- clist = GTK_CLIST (ctree);
-
- ctree->tree_indent = 20;
- ctree->tree_spacing = 5;
- ctree->tree_column = 0;
- ctree->line_style = GTK_CTREE_LINES_SOLID;
- ctree->expander_style = GTK_CTREE_EXPANDER_SQUARE;
- ctree->drag_compare = NULL;
- ctree->show_stub = TRUE;
-
- clist->button_actions[0] |= GTK_BUTTON_EXPANDS;
-}
-
-static void
-ctree_attach_styles (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- GtkCList *clist;
- gint i;
-
- clist = GTK_CLIST (ctree);
-
- if (GTK_CTREE_ROW (node)->row.style)
- GTK_CTREE_ROW (node)->row.style =
- gtk_style_attach (GTK_CTREE_ROW (node)->row.style, clist->clist_window);
-
- if (GTK_CTREE_ROW (node)->row.fg_set || GTK_CTREE_ROW (node)->row.bg_set)
- {
- GdkColormap *colormap;
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (ctree));
- if (GTK_CTREE_ROW (node)->row.fg_set)
- gdk_colormap_alloc_color (colormap,
- &(GTK_CTREE_ROW (node)->row.foreground),
- FALSE, TRUE);
- if (GTK_CTREE_ROW (node)->row.bg_set)
- gdk_colormap_alloc_color (colormap,
- &(GTK_CTREE_ROW (node)->row.background),
- FALSE, TRUE);
- }
-
- for (i = 0; i < clist->columns; i++)
- if (GTK_CTREE_ROW (node)->row.cell[i].style)
- GTK_CTREE_ROW (node)->row.cell[i].style =
- gtk_style_attach (GTK_CTREE_ROW (node)->row.cell[i].style,
- clist->clist_window);
-}
-
-static void
-ctree_detach_styles (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- GtkCList *clist;
- gint i;
-
- clist = GTK_CLIST (ctree);
-
- if (GTK_CTREE_ROW (node)->row.style)
- gtk_style_detach (GTK_CTREE_ROW (node)->row.style);
- for (i = 0; i < clist->columns; i++)
- if (GTK_CTREE_ROW (node)->row.cell[i].style)
- gtk_style_detach (GTK_CTREE_ROW (node)->row.cell[i].style);
-}
-
-static void
-gtk_ctree_realize (GtkWidget *widget)
-{
- GtkCTree *ctree;
- GtkCList *clist;
- GdkGCValues values;
- GtkCTreeNode *node;
- GtkCTreeNode *child;
- gint i;
-
- g_return_if_fail (GTK_IS_CTREE (widget));
-
- GTK_WIDGET_CLASS (parent_class)->realize (widget);
-
- ctree = GTK_CTREE (widget);
- clist = GTK_CLIST (widget);
-
- node = GTK_CTREE_NODE (clist->row_list);
- for (i = 0; i < clist->rows; i++)
- {
- if (GTK_CTREE_ROW (node)->children && !GTK_CTREE_ROW (node)->expanded)
- for (child = GTK_CTREE_ROW (node)->children; child;
- child = GTK_CTREE_ROW (child)->sibling)
- gtk_ctree_pre_recursive (ctree, child, ctree_attach_styles, NULL);
- node = GTK_CTREE_NODE_NEXT (node);
- }
-
- values.foreground = widget->style->fg[GTK_STATE_NORMAL];
- values.background = widget->style->base[GTK_STATE_NORMAL];
- values.subwindow_mode = GDK_INCLUDE_INFERIORS;
- values.line_style = GDK_LINE_SOLID;
- ctree->lines_gc = gdk_gc_new_with_values (GTK_CLIST(widget)->clist_window,
- &values,
- GDK_GC_FOREGROUND |
- GDK_GC_BACKGROUND |
- GDK_GC_SUBWINDOW |
- GDK_GC_LINE_STYLE);
-
- if (ctree->line_style == GTK_CTREE_LINES_DOTTED)
- {
- gint8 dashes[] = { 1, 1 };
-
- gdk_gc_set_line_attributes (ctree->lines_gc, 1,
- GDK_LINE_ON_OFF_DASH, GDK_CAP_BUTT, GDK_JOIN_MITER);
- gdk_gc_set_dashes (ctree->lines_gc, 0, dashes, G_N_ELEMENTS (dashes));
- }
-}
-
-static void
-gtk_ctree_unrealize (GtkWidget *widget)
-{
- GtkCTree *ctree;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (widget));
-
- GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
-
- ctree = GTK_CTREE (widget);
- clist = GTK_CLIST (widget);
-
- if (gtk_widget_get_realized (widget))
- {
- GtkCTreeNode *node;
- GtkCTreeNode *child;
- gint i;
-
- node = GTK_CTREE_NODE (clist->row_list);
- for (i = 0; i < clist->rows; i++)
- {
- if (GTK_CTREE_ROW (node)->children &&
- !GTK_CTREE_ROW (node)->expanded)
- for (child = GTK_CTREE_ROW (node)->children; child;
- child = GTK_CTREE_ROW (child)->sibling)
- gtk_ctree_pre_recursive(ctree, child, ctree_detach_styles, NULL);
- node = GTK_CTREE_NODE_NEXT (node);
- }
- }
-
- g_object_unref (ctree->lines_gc);
-}
-
-static gint
-gtk_ctree_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkCTree *ctree;
- GtkCList *clist;
- gint button_actions;
-
- g_return_val_if_fail (GTK_IS_CTREE (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- ctree = GTK_CTREE (widget);
- clist = GTK_CLIST (widget);
-
- button_actions = clist->button_actions[event->button - 1];
-
- if (button_actions == GTK_BUTTON_IGNORED)
- return FALSE;
-
- if (event->window == clist->clist_window)
- {
- GtkCTreeNode *work;
- gint x;
- gint y;
- gint row;
- gint column;
-
- x = event->x;
- y = event->y;
-
- if (!gtk_clist_get_selection_info (clist, x, y, &row, &column))
- return FALSE;
-
- work = GTK_CTREE_NODE (g_list_nth (clist->row_list, row));
-
- if (button_actions & GTK_BUTTON_EXPANDS &&
- (GTK_CTREE_ROW (work)->children && !GTK_CTREE_ROW (work)->is_leaf &&
- (event->type == GDK_2BUTTON_PRESS ||
- ctree_is_hot_spot (ctree, work, row, x, y))))
- {
- if (GTK_CTREE_ROW (work)->expanded)
- gtk_ctree_collapse (ctree, work);
- else
- gtk_ctree_expand (ctree, work);
-
- return TRUE;
- }
- }
-
- return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, event);
-}
-
-static void
-draw_drag_highlight (GtkCList *clist,
- GtkCListRow *dest_row,
- gint dest_row_number,
- GtkCListDragPos drag_pos)
-{
- GtkCTree *ctree;
- GdkPoint points[4];
- gint level;
- gint i;
- gint y = 0;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- ctree = GTK_CTREE (clist);
-
- level = ((GtkCTreeRow *)(dest_row))->level;
-
- y = ROW_TOP_YPIXEL (clist, dest_row_number) - 1;
-
- switch (drag_pos)
- {
- case GTK_CLIST_DRAG_NONE:
- break;
- case GTK_CLIST_DRAG_AFTER:
- y += clist->row_height + 1;
- case GTK_CLIST_DRAG_BEFORE:
-
- if (clist->column[ctree->tree_column].visible)
- switch (clist->column[ctree->tree_column].justification)
- {
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- if (ctree->tree_column > 0)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- COLUMN_LEFT_XPIXEL(clist, 0), y,
- COLUMN_LEFT_XPIXEL(clist, ctree->tree_column - 1)+
- clist->column[ctree->tree_column - 1].area.width,
- y);
-
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- COLUMN_LEFT_XPIXEL(clist, ctree->tree_column) +
- ctree->tree_indent * level -
- (ctree->tree_indent - PM_SIZE) / 2, y,
- GTK_WIDGET (ctree)->allocation.width, y);
- break;
- case GTK_JUSTIFY_RIGHT:
- if (ctree->tree_column < clist->columns - 1)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- COLUMN_LEFT_XPIXEL(clist, ctree->tree_column + 1),
- y,
- COLUMN_LEFT_XPIXEL(clist, clist->columns - 1) +
- clist->column[clist->columns - 1].area.width, y);
-
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- 0, y, COLUMN_LEFT_XPIXEL(clist, ctree->tree_column)
- + clist->column[ctree->tree_column].area.width -
- ctree->tree_indent * level +
- (ctree->tree_indent - PM_SIZE) / 2, y);
- break;
- }
- else
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- 0, y, clist->clist_window_width, y);
- break;
- case GTK_CLIST_DRAG_INTO:
- y = ROW_TOP_YPIXEL (clist, dest_row_number) + clist->row_height;
-
- if (clist->column[ctree->tree_column].visible)
- switch (clist->column[ctree->tree_column].justification)
- {
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- points[0].x = COLUMN_LEFT_XPIXEL(clist, ctree->tree_column) +
- ctree->tree_indent * level - (ctree->tree_indent - PM_SIZE) / 2;
- points[0].y = y;
- points[3].x = points[0].x;
- points[3].y = y - clist->row_height - 1;
- points[1].x = clist->clist_window_width - 1;
- points[1].y = points[0].y;
- points[2].x = points[1].x;
- points[2].y = points[3].y;
-
- for (i = 0; i < 3; i++)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- points[i].x, points[i].y,
- points[i+1].x, points[i+1].y);
-
- if (ctree->tree_column > 0)
- {
- points[0].x = COLUMN_LEFT_XPIXEL(clist,
- ctree->tree_column - 1) +
- clist->column[ctree->tree_column - 1].area.width ;
- points[0].y = y;
- points[3].x = points[0].x;
- points[3].y = y - clist->row_height - 1;
- points[1].x = 0;
- points[1].y = points[0].y;
- points[2].x = 0;
- points[2].y = points[3].y;
-
- for (i = 0; i < 3; i++)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- points[i].x, points[i].y, points[i+1].x,
- points[i+1].y);
- }
- break;
- case GTK_JUSTIFY_RIGHT:
- points[0].x = COLUMN_LEFT_XPIXEL(clist, ctree->tree_column) -
- ctree->tree_indent * level + (ctree->tree_indent - PM_SIZE) / 2 +
- clist->column[ctree->tree_column].area.width;
- points[0].y = y;
- points[3].x = points[0].x;
- points[3].y = y - clist->row_height - 1;
- points[1].x = 0;
- points[1].y = points[0].y;
- points[2].x = 0;
- points[2].y = points[3].y;
-
- for (i = 0; i < 3; i++)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- points[i].x, points[i].y,
- points[i+1].x, points[i+1].y);
-
- if (ctree->tree_column < clist->columns - 1)
- {
- points[0].x = COLUMN_LEFT_XPIXEL(clist, ctree->tree_column +1);
- points[0].y = y;
- points[3].x = points[0].x;
- points[3].y = y - clist->row_height - 1;
- points[1].x = clist->clist_window_width - 1;
- points[1].y = points[0].y;
- points[2].x = points[1].x;
- points[2].y = points[3].y;
-
- for (i = 0; i < 3; i++)
- gdk_draw_line (clist->clist_window, clist->xor_gc,
- points[i].x, points[i].y,
- points[i+1].x, points[i+1].y);
- }
- break;
- }
- else
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- 0, y - clist->row_height,
- clist->clist_window_width - 1, clist->row_height);
- break;
- }
-}
-
-static gint
-draw_cell_pixmap (GdkWindow *window,
- GdkRectangle *clip_rectangle,
- GdkGC *fg_gc,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- gint xsrc = 0;
- gint ysrc = 0;
-
- if (mask)
- {
- gdk_gc_set_clip_mask (fg_gc, mask);
- gdk_gc_set_clip_origin (fg_gc, x, y);
- }
- if (x < clip_rectangle->x)
- {
- xsrc = clip_rectangle->x - x;
- width -= xsrc;
- x = clip_rectangle->x;
- }
- if (x + width > clip_rectangle->x + clip_rectangle->width)
- width = clip_rectangle->x + clip_rectangle->width - x;
-
- if (y < clip_rectangle->y)
- {
- ysrc = clip_rectangle->y - y;
- height -= ysrc;
- y = clip_rectangle->y;
- }
- if (y + height > clip_rectangle->y + clip_rectangle->height)
- height = clip_rectangle->y + clip_rectangle->height - y;
-
- if (width > 0 && height > 0)
- gdk_draw_drawable (window, fg_gc, pixmap, xsrc, ysrc, x, y, width, height);
-
- if (mask)
- {
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
- gdk_gc_set_clip_origin (fg_gc, 0, 0);
- }
-
- return x + MAX (width, 0);
-}
-
-static void
-get_cell_style (GtkCList *clist,
- GtkCListRow *clist_row,
- gint state,
- gint column,
- GtkStyle **style,
- GdkGC **fg_gc,
- GdkGC **bg_gc)
-{
- gint fg_state;
-
- if ((state == GTK_STATE_NORMAL) &&
- (GTK_WIDGET (clist)->state == GTK_STATE_INSENSITIVE))
- fg_state = GTK_STATE_INSENSITIVE;
- else
- fg_state = state;
-
- if (clist_row->cell[column].style)
- {
- if (style)
- *style = clist_row->cell[column].style;
- if (fg_gc)
- *fg_gc = clist_row->cell[column].style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = clist_row->cell[column].style->bg_gc[state];
- else
- *bg_gc = clist_row->cell[column].style->base_gc[state];
- }
- }
- else if (clist_row->style)
- {
- if (style)
- *style = clist_row->style;
- if (fg_gc)
- *fg_gc = clist_row->style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = clist_row->style->bg_gc[state];
- else
- *bg_gc = clist_row->style->base_gc[state];
- }
- }
- else
- {
- if (style)
- *style = GTK_WIDGET (clist)->style;
- if (fg_gc)
- *fg_gc = GTK_WIDGET (clist)->style->fg_gc[fg_state];
- if (bg_gc) {
- if (state == GTK_STATE_SELECTED)
- *bg_gc = GTK_WIDGET (clist)->style->bg_gc[state];
- else
- *bg_gc = GTK_WIDGET (clist)->style->base_gc[state];
- }
-
- if (state != GTK_STATE_SELECTED)
- {
- if (fg_gc && clist_row->fg_set)
- *fg_gc = clist->fg_gc;
- if (bg_gc && clist_row->bg_set)
- *bg_gc = clist->bg_gc;
- }
- }
-}
-
-static gint
-gtk_ctree_draw_expander (GtkCTree *ctree,
- GtkCTreeRow *ctree_row,
- GtkStyle *style,
- GdkRectangle *clip_rectangle,
- gint x)
-{
- GtkCList *clist;
- GdkPoint points[3];
- gint justification_factor;
- gint y;
-
- if (ctree->expander_style == GTK_CTREE_EXPANDER_NONE)
- return x;
-
- clist = GTK_CLIST (ctree);
- if (clist->column[ctree->tree_column].justification == GTK_JUSTIFY_RIGHT)
- justification_factor = -1;
- else
- justification_factor = 1;
- y = (clip_rectangle->y + (clip_rectangle->height - PM_SIZE) / 2 -
- (clip_rectangle->height + 1) % 2);
-
- if (!ctree_row->children)
- {
- switch (ctree->expander_style)
- {
- case GTK_CTREE_EXPANDER_NONE:
- return x;
- case GTK_CTREE_EXPANDER_TRIANGLE:
- return x + justification_factor * (PM_SIZE + 3);
- case GTK_CTREE_EXPANDER_SQUARE:
- case GTK_CTREE_EXPANDER_CIRCULAR:
- return x + justification_factor * (PM_SIZE + 1);
- }
- }
-
- gdk_gc_set_clip_rectangle (style->fg_gc[GTK_STATE_NORMAL], clip_rectangle);
- gdk_gc_set_clip_rectangle (style->base_gc[GTK_STATE_NORMAL], clip_rectangle);
-
- switch (ctree->expander_style)
- {
- case GTK_CTREE_EXPANDER_NONE:
- break;
- case GTK_CTREE_EXPANDER_TRIANGLE:
- if (ctree_row->expanded)
- {
- points[0].x = x;
- points[0].y = y + (PM_SIZE + 2) / 6;
- points[1].x = points[0].x + justification_factor * (PM_SIZE + 2);
- points[1].y = points[0].y;
- points[2].x = (points[0].x +
- justification_factor * (PM_SIZE + 2) / 2);
- points[2].y = y + 2 * (PM_SIZE + 2) / 3;
- }
- else
- {
- points[0].x = x + justification_factor * ((PM_SIZE + 2) / 6 + 2);
- points[0].y = y - 1;
- points[1].x = points[0].x;
- points[1].y = points[0].y + (PM_SIZE + 2);
- points[2].x = (points[0].x +
- justification_factor * (2 * (PM_SIZE + 2) / 3 - 1));
- points[2].y = points[0].y + (PM_SIZE + 2) / 2;
- }
-
- gdk_draw_polygon (clist->clist_window, style->base_gc[GTK_STATE_NORMAL],
- TRUE, points, 3);
- gdk_draw_polygon (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL],
- FALSE, points, 3);
-
- x += justification_factor * (PM_SIZE + 3);
- break;
- case GTK_CTREE_EXPANDER_SQUARE:
- case GTK_CTREE_EXPANDER_CIRCULAR:
- if (justification_factor == -1)
- x += justification_factor * (PM_SIZE + 1);
-
- if (ctree->expander_style == GTK_CTREE_EXPANDER_CIRCULAR)
- {
- gdk_draw_arc (clist->clist_window, style->base_gc[GTK_STATE_NORMAL],
- TRUE, x, y, PM_SIZE, PM_SIZE, 0, 360 * 64);
- gdk_draw_arc (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL],
- FALSE, x, y, PM_SIZE, PM_SIZE, 0, 360 * 64);
- }
- else
- {
- gdk_draw_rectangle (clist->clist_window,
- style->base_gc[GTK_STATE_NORMAL], TRUE,
- x, y, PM_SIZE, PM_SIZE);
- gdk_draw_rectangle (clist->clist_window,
- style->fg_gc[GTK_STATE_NORMAL], FALSE,
- x, y, PM_SIZE, PM_SIZE);
- }
-
- gdk_draw_line (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL],
- x + 2, y + PM_SIZE / 2, x + PM_SIZE - 2, y + PM_SIZE / 2);
-
- if (!ctree_row->expanded)
- gdk_draw_line (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL],
- x + PM_SIZE / 2, y + 2,
- x + PM_SIZE / 2, y + PM_SIZE - 2);
-
- if (justification_factor == 1)
- x += justification_factor * (PM_SIZE + 1);
- break;
- }
-
- gdk_gc_set_clip_rectangle (style->fg_gc[GTK_STATE_NORMAL], NULL);
- gdk_gc_set_clip_rectangle (style->base_gc[GTK_STATE_NORMAL], NULL);
-
- return x;
-}
-
-
-static gint
-gtk_ctree_draw_lines (GtkCTree *ctree,
- GtkCTreeRow *ctree_row,
- gint row,
- gint column,
- gint state,
- GdkRectangle *clip_rectangle,
- GdkRectangle *cell_rectangle,
- GdkRectangle *crect,
- GdkRectangle *area,
- GtkStyle *style)
-{
- GtkCList *clist;
- GtkCTreeNode *node;
- GtkCTreeNode *parent;
- GdkRectangle tree_rectangle;
- GdkRectangle tc_rectangle;
- GdkGC *bg_gc;
- gint offset;
- gint offset_x;
- gint offset_y;
- gint xcenter;
- gint ycenter;
- gint next_level;
- gint column_right;
- gint column_left;
- gint justify_right;
- gint justification_factor;
-
- clist = GTK_CLIST (ctree);
- ycenter = clip_rectangle->y + (clip_rectangle->height / 2);
- justify_right = (clist->column[column].justification == GTK_JUSTIFY_RIGHT);
-
- if (justify_right)
- {
- offset = (clip_rectangle->x + clip_rectangle->width - 1 -
- ctree->tree_indent * (ctree_row->level - 1));
- justification_factor = -1;
- }
- else
- {
- offset = clip_rectangle->x + ctree->tree_indent * (ctree_row->level - 1);
- justification_factor = 1;
- }
-
- switch (ctree->line_style)
- {
- case GTK_CTREE_LINES_NONE:
- break;
- case GTK_CTREE_LINES_TABBED:
- xcenter = offset + justification_factor * TAB_SIZE;
-
- column_right = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) +
- clist->column[ctree->tree_column].area.width +
- COLUMN_INSET);
- column_left = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) -
- COLUMN_INSET - CELL_SPACING);
-
- if (area)
- {
- tree_rectangle.y = crect->y;
- tree_rectangle.height = crect->height;
-
- if (justify_right)
- {
- tree_rectangle.x = xcenter;
- tree_rectangle.width = column_right - xcenter;
- }
- else
- {
- tree_rectangle.x = column_left;
- tree_rectangle.width = xcenter - column_left;
- }
-
- if (!gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle))
- {
- offset += justification_factor * 3;
- break;
- }
- }
-
- gdk_gc_set_clip_rectangle (ctree->lines_gc, crect);
-
- next_level = ctree_row->level;
-
- if (!ctree_row->sibling || (ctree_row->children && ctree_row->expanded))
- {
- node = gtk_ctree_find_node_ptr (ctree, ctree_row);
- if (GTK_CTREE_NODE_NEXT (node))
- next_level = GTK_CTREE_ROW (GTK_CTREE_NODE_NEXT (node))->level;
- else
- next_level = 0;
- }
-
- if (ctree->tree_indent > 0)
- {
- node = ctree_row->parent;
- while (node)
- {
- xcenter -= (justification_factor * ctree->tree_indent);
-
- if ((justify_right && xcenter < column_left) ||
- (!justify_right && xcenter > column_right))
- {
- node = GTK_CTREE_ROW (node)->parent;
- continue;
- }
-
- tree_rectangle.y = cell_rectangle->y;
- tree_rectangle.height = cell_rectangle->height;
- if (justify_right)
- {
- tree_rectangle.x = MAX (xcenter - ctree->tree_indent + 1,
- column_left);
- tree_rectangle.width = MIN (xcenter - column_left,
- ctree->tree_indent);
- }
- else
- {
- tree_rectangle.x = xcenter;
- tree_rectangle.width = MIN (column_right - xcenter,
- ctree->tree_indent);
- }
-
- if (!area || gdk_rectangle_intersect (area, &tree_rectangle,
- &tc_rectangle))
- {
- get_cell_style (clist, &GTK_CTREE_ROW (node)->row,
- state, column, NULL, NULL, &bg_gc);
-
- if (bg_gc == clist->bg_gc)
- gdk_gc_set_foreground
- (clist->bg_gc, &GTK_CTREE_ROW (node)->row.background);
-
- if (!area)
- gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE,
- tree_rectangle.x,
- tree_rectangle.y,
- tree_rectangle.width,
- tree_rectangle.height);
- else
- gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE,
- tc_rectangle.x,
- tc_rectangle.y,
- tc_rectangle.width,
- tc_rectangle.height);
- }
- if (next_level > GTK_CTREE_ROW (node)->level)
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- xcenter, crect->y,
- xcenter, crect->y + crect->height);
- else
- {
- gint width;
-
- offset_x = MIN (ctree->tree_indent, 2 * TAB_SIZE);
- width = offset_x / 2 + offset_x % 2;
-
- parent = GTK_CTREE_ROW (node)->parent;
-
- tree_rectangle.y = ycenter;
- tree_rectangle.height = (cell_rectangle->y - ycenter +
- cell_rectangle->height);
-
- if (justify_right)
- {
- tree_rectangle.x = MAX(xcenter + 1 - width, column_left);
- tree_rectangle.width = MIN (xcenter + 1 - column_left,
- width);
- }
- else
- {
- tree_rectangle.x = xcenter;
- tree_rectangle.width = MIN (column_right - xcenter,
- width);
- }
-
- if (!area ||
- gdk_rectangle_intersect (area, &tree_rectangle,
- &tc_rectangle))
- {
- if (parent)
- {
- get_cell_style (clist, &GTK_CTREE_ROW (parent)->row,
- state, column, NULL, NULL, &bg_gc);
- if (bg_gc == clist->bg_gc)
- gdk_gc_set_foreground
- (clist->bg_gc,
- &GTK_CTREE_ROW (parent)->row.background);
- }
- else if (state == GTK_STATE_SELECTED)
- bg_gc = style->base_gc[state];
- else
- bg_gc = GTK_WIDGET (clist)->style->base_gc[state];
-
- if (!area)
- gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE,
- tree_rectangle.x,
- tree_rectangle.y,
- tree_rectangle.width,
- tree_rectangle.height);
- else
- gdk_draw_rectangle (clist->clist_window,
- bg_gc, TRUE,
- tc_rectangle.x,
- tc_rectangle.y,
- tc_rectangle.width,
- tc_rectangle.height);
- }
-
- get_cell_style (clist, &GTK_CTREE_ROW (node)->row,
- state, column, NULL, NULL, &bg_gc);
- if (bg_gc == clist->bg_gc)
- gdk_gc_set_foreground
- (clist->bg_gc, &GTK_CTREE_ROW (node)->row.background);
-
- gdk_gc_set_clip_rectangle (bg_gc, crect);
- gdk_draw_arc (clist->clist_window, bg_gc, TRUE,
- xcenter - (justify_right * offset_x),
- cell_rectangle->y,
- offset_x, clist->row_height,
- (180 + (justify_right * 90)) * 64, 90 * 64);
- gdk_gc_set_clip_rectangle (bg_gc, NULL);
-
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- xcenter, cell_rectangle->y, xcenter, ycenter);
-
- if (justify_right)
- gdk_draw_arc (clist->clist_window, ctree->lines_gc, FALSE,
- xcenter - offset_x, cell_rectangle->y,
- offset_x, clist->row_height,
- 270 * 64, 90 * 64);
- else
- gdk_draw_arc (clist->clist_window, ctree->lines_gc, FALSE,
- xcenter, cell_rectangle->y,
- offset_x, clist->row_height,
- 180 * 64, 90 * 64);
- }
- node = GTK_CTREE_ROW (node)->parent;
- }
- }
-
- if (state != GTK_STATE_SELECTED)
- {
- tree_rectangle.y = clip_rectangle->y;
- tree_rectangle.height = clip_rectangle->height;
- tree_rectangle.width = COLUMN_INSET + CELL_SPACING +
- MIN (clist->column[ctree->tree_column].area.width + COLUMN_INSET,
- TAB_SIZE);
-
- if (justify_right)
- tree_rectangle.x = MAX (xcenter + 1, column_left);
- else
- tree_rectangle.x = column_left;
-
- if (!area)
- gdk_draw_rectangle (clist->clist_window,
- GTK_WIDGET
- (ctree)->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- tree_rectangle.x,
- tree_rectangle.y,
- tree_rectangle.width,
- tree_rectangle.height);
- else if (gdk_rectangle_intersect (area, &tree_rectangle,
- &tc_rectangle))
- gdk_draw_rectangle (clist->clist_window,
- GTK_WIDGET
- (ctree)->style->base_gc[GTK_STATE_NORMAL],
- TRUE,
- tc_rectangle.x,
- tc_rectangle.y,
- tc_rectangle.width,
- tc_rectangle.height);
- }
-
- xcenter = offset + (justification_factor * ctree->tree_indent / 2);
-
- get_cell_style (clist, &ctree_row->row, state, column, NULL, NULL,
- &bg_gc);
- if (bg_gc == clist->bg_gc)
- gdk_gc_set_foreground (clist->bg_gc, &ctree_row->row.background);
-
- gdk_gc_set_clip_rectangle (bg_gc, crect);
- if (ctree_row->is_leaf)
- {
- GdkPoint points[6];
-
- points[0].x = offset + justification_factor * TAB_SIZE;
- points[0].y = cell_rectangle->y;
-
- points[1].x = points[0].x - justification_factor * 4;
- points[1].y = points[0].y;
-
- points[2].x = points[1].x - justification_factor * 2;
- points[2].y = points[1].y + 3;
-
- points[3].x = points[2].x;
- points[3].y = points[2].y + clist->row_height - 5;
-
- points[4].x = points[3].x + justification_factor * 2;
- points[4].y = points[3].y + 3;
-
- points[5].x = points[4].x + justification_factor * 4;
- points[5].y = points[4].y;
-
- gdk_draw_polygon (clist->clist_window, bg_gc, TRUE, points, 6);
- gdk_draw_lines (clist->clist_window, ctree->lines_gc, points, 6);
- }
- else
- {
- gdk_draw_arc (clist->clist_window, bg_gc, TRUE,
- offset - (justify_right * 2 * TAB_SIZE),
- cell_rectangle->y,
- 2 * TAB_SIZE, clist->row_height,
- (90 + (180 * justify_right)) * 64, 180 * 64);
- gdk_draw_arc (clist->clist_window, ctree->lines_gc, FALSE,
- offset - (justify_right * 2 * TAB_SIZE),
- cell_rectangle->y,
- 2 * TAB_SIZE, clist->row_height,
- (90 + (180 * justify_right)) * 64, 180 * 64);
- }
- gdk_gc_set_clip_rectangle (bg_gc, NULL);
- gdk_gc_set_clip_rectangle (ctree->lines_gc, NULL);
-
- offset += justification_factor * 3;
- break;
- default:
- xcenter = offset + justification_factor * PM_SIZE / 2;
-
- if (area)
- {
- tree_rectangle.y = crect->y;
- tree_rectangle.height = crect->height;
-
- if (justify_right)
- {
- tree_rectangle.x = xcenter - PM_SIZE / 2 - 2;
- tree_rectangle.width = (clip_rectangle->x +
- clip_rectangle->width -tree_rectangle.x);
- }
- else
- {
- tree_rectangle.x = clip_rectangle->x + PM_SIZE / 2;
- tree_rectangle.width = (xcenter + PM_SIZE / 2 + 2 -
- clip_rectangle->x);
- }
-
- if (!gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle))
- break;
- }
-
- offset_x = 1;
- offset_y = 0;
- if (ctree->line_style == GTK_CTREE_LINES_DOTTED)
- {
- offset_x += abs((clip_rectangle->x + clist->hoffset) % 2);
- offset_y = abs((cell_rectangle->y + clist->voffset) % 2);
- }
-
- clip_rectangle->y--;
- clip_rectangle->height++;
- gdk_gc_set_clip_rectangle (ctree->lines_gc, clip_rectangle);
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- xcenter,
- (ctree->show_stub || clist->row_list->data != ctree_row) ?
- cell_rectangle->y + offset_y : ycenter,
- xcenter,
- (ctree_row->sibling) ? crect->y +crect->height : ycenter);
-
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- xcenter + (justification_factor * offset_x), ycenter,
- xcenter + (justification_factor * (PM_SIZE / 2 + 2)),
- ycenter);
-
- node = ctree_row->parent;
- while (node)
- {
- xcenter -= (justification_factor * ctree->tree_indent);
-
- if (GTK_CTREE_ROW (node)->sibling)
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- xcenter, cell_rectangle->y + offset_y,
- xcenter, crect->y + crect->height);
- node = GTK_CTREE_ROW (node)->parent;
- }
- gdk_gc_set_clip_rectangle (ctree->lines_gc, NULL);
- clip_rectangle->y++;
- clip_rectangle->height--;
- break;
- }
- return offset;
-}
-
-static void
-draw_row (GtkCList *clist,
- GdkRectangle *area,
- gint row,
- GtkCListRow *clist_row)
-{
- GtkWidget *widget;
- GtkCTree *ctree;
- GdkRectangle *crect;
- GdkRectangle row_rectangle;
- GdkRectangle cell_rectangle;
- GdkRectangle clip_rectangle;
- GdkRectangle intersect_rectangle;
- gint last_column;
- gint column_left = 0;
- gint column_right = 0;
- gint offset = 0;
- gint state;
- gint i;
-
- g_return_if_fail (clist != NULL);
-
- /* bail now if we arn't drawable yet */
- if (!GTK_WIDGET_DRAWABLE (clist) || row < 0 || row >= clist->rows)
- return;
-
- widget = GTK_WIDGET (clist);
- ctree = GTK_CTREE (clist);
-
- /* if the function is passed the pointer to the row instead of null,
- * it avoids this expensive lookup */
- if (!clist_row)
- clist_row = (g_list_nth (clist->row_list, row))->data;
-
- /* rectangle of the entire row */
- row_rectangle.x = 0;
- row_rectangle.y = ROW_TOP_YPIXEL (clist, row);
- row_rectangle.width = clist->clist_window_width;
- row_rectangle.height = clist->row_height;
-
- /* rectangle of the cell spacing above the row */
- cell_rectangle.x = 0;
- cell_rectangle.y = row_rectangle.y - CELL_SPACING;
- cell_rectangle.width = row_rectangle.width;
- cell_rectangle.height = CELL_SPACING;
-
- /* rectangle used to clip drawing operations, its y and height
- * positions only need to be set once, so we set them once here.
- * the x and width are set withing the drawing loop below once per
- * column */
- clip_rectangle.y = row_rectangle.y;
- clip_rectangle.height = row_rectangle.height;
-
- if (clist_row->state == GTK_STATE_NORMAL)
- {
- if (clist_row->fg_set)
- gdk_gc_set_foreground (clist->fg_gc, &clist_row->foreground);
- if (clist_row->bg_set)
- gdk_gc_set_foreground (clist->bg_gc, &clist_row->background);
- }
-
- state = clist_row->state;
-
- gdk_gc_set_foreground (ctree->lines_gc,
- &widget->style->fg[clist_row->state]);
-
- /* draw the cell borders */
- if (area)
- {
- crect = &intersect_rectangle;
-
- if (gdk_rectangle_intersect (area, &cell_rectangle, crect))
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
- crect->x, crect->y, crect->width, crect->height);
- }
- else
- {
- crect = &cell_rectangle;
-
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
- crect->x, crect->y, crect->width, crect->height);
- }
-
- /* horizontal black lines */
- if (ctree->line_style == GTK_CTREE_LINES_TABBED)
- {
-
- column_right = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) +
- clist->column[ctree->tree_column].area.width +
- COLUMN_INSET);
- column_left = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) -
- COLUMN_INSET - (ctree->tree_column != 0) * CELL_SPACING);
-
- switch (clist->column[ctree->tree_column].justification)
- {
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- offset = (column_left + ctree->tree_indent *
- (((GtkCTreeRow *)clist_row)->level - 1));
-
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- MIN (offset + TAB_SIZE, column_right),
- cell_rectangle.y,
- clist->clist_window_width, cell_rectangle.y);
- break;
- case GTK_JUSTIFY_RIGHT:
- offset = (column_right - 1 - ctree->tree_indent *
- (((GtkCTreeRow *)clist_row)->level - 1));
-
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- -1, cell_rectangle.y,
- MAX (offset - TAB_SIZE, column_left),
- cell_rectangle.y);
- break;
- }
- }
-
- /* the last row has to clear its bottom cell spacing too */
- if (clist_row == clist->row_list_end->data)
- {
- cell_rectangle.y += clist->row_height + CELL_SPACING;
-
- if (!area || gdk_rectangle_intersect (area, &cell_rectangle, crect))
- {
- gdk_draw_rectangle (clist->clist_window,
- widget->style->base_gc[GTK_STATE_NORMAL], TRUE,
- crect->x, crect->y, crect->width, crect->height);
-
- /* horizontal black lines */
- if (ctree->line_style == GTK_CTREE_LINES_TABBED)
- {
- switch (clist->column[ctree->tree_column].justification)
- {
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- MIN (column_left + TAB_SIZE + COLUMN_INSET +
- (((GtkCTreeRow *)clist_row)->level > 1) *
- MIN (ctree->tree_indent / 2, TAB_SIZE),
- column_right),
- cell_rectangle.y,
- clist->clist_window_width, cell_rectangle.y);
- break;
- case GTK_JUSTIFY_RIGHT:
- gdk_draw_line (clist->clist_window, ctree->lines_gc,
- -1, cell_rectangle.y,
- MAX (column_right - TAB_SIZE - 1 -
- COLUMN_INSET -
- (((GtkCTreeRow *)clist_row)->level > 1) *
- MIN (ctree->tree_indent / 2, TAB_SIZE),
- column_left - 1), cell_rectangle.y);
- break;
- }
- }
- }
- }
-
- for (last_column = clist->columns - 1;
- last_column >= 0 && !clist->column[last_column].visible; last_column--)
- ;
-
- /* iterate and draw all the columns (row cells) and draw their contents */
- for (i = 0; i < clist->columns; i++)
- {
- GtkStyle *style;
- GdkGC *fg_gc;
- GdkGC *bg_gc;
- PangoLayout *layout = NULL;
- PangoRectangle logical_rect;
-
- gint width;
- gint height;
- gint pixmap_width;
- gint string_width;
- gint old_offset;
-
- if (!clist->column[i].visible)
- continue;
-
- get_cell_style (clist, clist_row, state, i, &style, &fg_gc, &bg_gc);
-
- /* calculate clipping region */
- clip_rectangle.x = clist->column[i].area.x + clist->hoffset;
- clip_rectangle.width = clist->column[i].area.width;
-
- cell_rectangle.x = clip_rectangle.x - COLUMN_INSET - CELL_SPACING;
- cell_rectangle.width = (clip_rectangle.width + 2 * COLUMN_INSET +
- (1 + (i == last_column)) * CELL_SPACING);
- cell_rectangle.y = clip_rectangle.y;
- cell_rectangle.height = clip_rectangle.height;
-
- string_width = 0;
- pixmap_width = 0;
-
- if (area && !gdk_rectangle_intersect (area, &cell_rectangle,
- &intersect_rectangle))
- {
- if (i != ctree->tree_column)
- continue;
- }
- else
- {
- gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE,
- crect->x, crect->y, crect->width, crect->height);
-
-
- layout = _gtk_clist_create_cell_layout (clist, clist_row, i);
- if (layout)
- {
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
- width = logical_rect.width;
- }
- else
- width = 0;
-
- switch (clist_row->cell[i].type)
- {
- case GTK_CELL_PIXMAP:
- gdk_drawable_get_size
- (GTK_CELL_PIXMAP (clist_row->cell[i])->pixmap, &pixmap_width,
- &height);
- width += pixmap_width;
- break;
- case GTK_CELL_PIXTEXT:
- if (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap)
- {
- gdk_drawable_get_size
- (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
- &pixmap_width, &height);
- width += pixmap_width;
- }
-
- if (GTK_CELL_PIXTEXT (clist_row->cell[i])->text &&
- GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap)
- width += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
-
- if (i == ctree->tree_column)
- width += (ctree->tree_indent *
- ((GtkCTreeRow *)clist_row)->level);
- break;
- default:
- break;
- }
-
- switch (clist->column[i].justification)
- {
- case GTK_JUSTIFY_LEFT:
- offset = clip_rectangle.x + clist_row->cell[i].horizontal;
- break;
- case GTK_JUSTIFY_RIGHT:
- offset = (clip_rectangle.x + clist_row->cell[i].horizontal +
- clip_rectangle.width - width);
- break;
- case GTK_JUSTIFY_CENTER:
- case GTK_JUSTIFY_FILL:
- offset = (clip_rectangle.x + clist_row->cell[i].horizontal +
- (clip_rectangle.width / 2) - (width / 2));
- break;
- };
-
- if (i != ctree->tree_column)
- {
- offset += clist_row->cell[i].horizontal;
- switch (clist_row->cell[i].type)
- {
- case GTK_CELL_PIXMAP:
- draw_cell_pixmap
- (clist->clist_window, &clip_rectangle, fg_gc,
- GTK_CELL_PIXMAP (clist_row->cell[i])->pixmap,
- GTK_CELL_PIXMAP (clist_row->cell[i])->mask,
- offset,
- clip_rectangle.y + clist_row->cell[i].vertical +
- (clip_rectangle.height - height) / 2,
- pixmap_width, height);
- break;
- case GTK_CELL_PIXTEXT:
- offset = draw_cell_pixmap
- (clist->clist_window, &clip_rectangle, fg_gc,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->mask,
- offset,
- clip_rectangle.y + clist_row->cell[i].vertical +
- (clip_rectangle.height - height) / 2,
- pixmap_width, height);
- offset += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
-
- /* Fall through */
- case GTK_CELL_TEXT:
- if (layout)
- {
- gint row_center_offset = (clist->row_height - logical_rect.height) / 2;
-
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rectangle);
- gdk_draw_layout (clist->clist_window, fg_gc,
- offset,
- row_rectangle.y + row_center_offset + clist_row->cell[i].vertical,
- layout);
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
- g_object_unref (G_OBJECT (layout));
- }
- break;
- default:
- break;
- }
- continue;
- }
- }
-
- if (bg_gc == clist->bg_gc)
- gdk_gc_set_background (ctree->lines_gc, &clist_row->background);
-
- /* draw ctree->tree_column */
- cell_rectangle.y -= CELL_SPACING;
- cell_rectangle.height += CELL_SPACING;
-
- if (area && !gdk_rectangle_intersect (area, &cell_rectangle,
- &intersect_rectangle))
- {
- if (layout)
- g_object_unref (G_OBJECT (layout));
- continue;
- }
-
- /* draw lines */
- offset = gtk_ctree_draw_lines (ctree, (GtkCTreeRow *)clist_row, row, i,
- state, &clip_rectangle, &cell_rectangle,
- crect, area, style);
-
- /* draw expander */
- offset = gtk_ctree_draw_expander (ctree, (GtkCTreeRow *)clist_row,
- style, &clip_rectangle, offset);
-
- if (clist->column[i].justification == GTK_JUSTIFY_RIGHT)
- offset -= ctree->tree_spacing;
- else
- offset += ctree->tree_spacing;
-
- if (clist->column[i].justification == GTK_JUSTIFY_RIGHT)
- offset -= (pixmap_width + clist_row->cell[i].horizontal);
- else
- offset += clist_row->cell[i].horizontal;
-
- old_offset = offset;
- offset = draw_cell_pixmap (clist->clist_window, &clip_rectangle, fg_gc,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap,
- GTK_CELL_PIXTEXT (clist_row->cell[i])->mask,
- offset,
- clip_rectangle.y + clist_row->cell[i].vertical
- + (clip_rectangle.height - height) / 2,
- pixmap_width, height);
-
- if (layout)
- {
- gint row_center_offset = (clist->row_height - logical_rect.height) / 2;
-
- if (clist->column[i].justification == GTK_JUSTIFY_RIGHT)
- {
- offset = (old_offset - string_width);
- if (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap)
- offset -= GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
- }
- else
- {
- if (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap)
- offset += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing;
- }
-
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rectangle);
- gdk_draw_layout (clist->clist_window, fg_gc,
- offset,
- row_rectangle.y + row_center_offset + clist_row->cell[i].vertical,
- layout);
-
- g_object_unref (G_OBJECT (layout));
- }
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
- }
-
- /* draw focus rectangle */
- if (clist->focus_row == row &&
- GTK_WIDGET_CAN_FOCUS (widget) && gtk_widget_has_focus (widget))
- {
- if (!area)
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- row_rectangle.x, row_rectangle.y,
- row_rectangle.width - 1, row_rectangle.height - 1);
- else if (gdk_rectangle_intersect (area, &row_rectangle,
- &intersect_rectangle))
- {
- gdk_gc_set_clip_rectangle (clist->xor_gc, &intersect_rectangle);
- gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE,
- row_rectangle.x, row_rectangle.y,
- row_rectangle.width - 1,
- row_rectangle.height - 1);
- gdk_gc_set_clip_rectangle (clist->xor_gc, NULL);
- }
- }
-}
-
-static void
-tree_draw_node (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
-
- clist = GTK_CLIST (ctree);
-
- if (CLIST_UNFROZEN (clist) && gtk_ctree_is_viewable (ctree, node))
- {
- GtkCTreeNode *work;
- gint num = 0;
-
- work = GTK_CTREE_NODE (clist->row_list);
- while (work && work != node)
- {
- work = GTK_CTREE_NODE_NEXT (work);
- num++;
- }
- if (work && gtk_clist_row_is_visible (clist, num) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row
- (clist, NULL, num, GTK_CLIST_ROW ((GList *) node));
- }
-}
-
-static GtkCTreeNode *
-gtk_ctree_last_visible (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCTreeNode *work;
-
- if (!node)
- return NULL;
-
- work = GTK_CTREE_ROW (node)->children;
-
- if (!work || !GTK_CTREE_ROW (node)->expanded)
- return node;
-
- while (GTK_CTREE_ROW (work)->sibling)
- work = GTK_CTREE_ROW (work)->sibling;
-
- return gtk_ctree_last_visible (ctree, work);
-}
-
-static void
-gtk_ctree_link (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- gboolean update_focus_row)
-{
- GtkCList *clist;
- GList *list_end;
- GList *list;
- GList *work;
- gboolean visible = FALSE;
- gint rows = 0;
-
- if (sibling)
- g_return_if_fail (GTK_CTREE_ROW (sibling)->parent == parent);
- g_return_if_fail (node != NULL);
- g_return_if_fail (node != sibling);
- g_return_if_fail (node != parent);
-
- clist = GTK_CLIST (ctree);
-
- if (update_focus_row && clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- for (rows = 1, list_end = (GList *)node; list_end->next;
- list_end = list_end->next)
- rows++;
-
- GTK_CTREE_ROW (node)->parent = parent;
- GTK_CTREE_ROW (node)->sibling = sibling;
-
- if (!parent || (parent && (gtk_ctree_is_viewable (ctree, parent) &&
- GTK_CTREE_ROW (parent)->expanded)))
- {
- visible = TRUE;
- clist->rows += rows;
- }
-
- if (parent)
- work = (GList *)(GTK_CTREE_ROW (parent)->children);
- else
- work = clist->row_list;
-
- if (sibling)
- {
- if (work != (GList *)sibling)
- {
- while (GTK_CTREE_ROW (work)->sibling != sibling)
- work = (GList *)(GTK_CTREE_ROW (work)->sibling);
- GTK_CTREE_ROW (work)->sibling = node;
- }
-
- if (sibling == GTK_CTREE_NODE (clist->row_list))
- clist->row_list = (GList *) node;
- if (GTK_CTREE_NODE_PREV (sibling) &&
- GTK_CTREE_NODE_NEXT (GTK_CTREE_NODE_PREV (sibling)) == sibling)
- {
- list = (GList *)GTK_CTREE_NODE_PREV (sibling);
- list->next = (GList *)node;
- }
-
- list = (GList *)node;
- list->prev = (GList *)GTK_CTREE_NODE_PREV (sibling);
- list_end->next = (GList *)sibling;
- list = (GList *)sibling;
- list->prev = list_end;
- if (parent && GTK_CTREE_ROW (parent)->children == sibling)
- GTK_CTREE_ROW (parent)->children = node;
- }
- else
- {
- if (work)
- {
- /* find sibling */
- while (GTK_CTREE_ROW (work)->sibling)
- work = (GList *)(GTK_CTREE_ROW (work)->sibling);
- GTK_CTREE_ROW (work)->sibling = node;
-
- /* find last visible child of sibling */
- work = (GList *) gtk_ctree_last_visible (ctree,
- GTK_CTREE_NODE (work));
-
- list_end->next = work->next;
- if (work->next)
- list = work->next->prev = list_end;
- work->next = (GList *)node;
- list = (GList *)node;
- list->prev = work;
- }
- else
- {
- if (parent)
- {
- GTK_CTREE_ROW (parent)->children = node;
- list = (GList *)node;
- list->prev = (GList *)parent;
- if (GTK_CTREE_ROW (parent)->expanded)
- {
- list_end->next = (GList *)GTK_CTREE_NODE_NEXT (parent);
- if (GTK_CTREE_NODE_NEXT(parent))
- {
- list = (GList *)GTK_CTREE_NODE_NEXT (parent);
- list->prev = list_end;
- }
- list = (GList *)parent;
- list->next = (GList *)node;
- }
- else
- list_end->next = NULL;
- }
- else
- {
- clist->row_list = (GList *)node;
- list = (GList *)node;
- list->prev = NULL;
- list_end->next = NULL;
- }
- }
- }
-
- gtk_ctree_pre_recursive (ctree, node, tree_update_level, NULL);
-
- if (clist->row_list_end == NULL ||
- clist->row_list_end->next == (GList *)node)
- clist->row_list_end = list_end;
-
- if (visible && update_focus_row)
- {
- gint pos;
-
- pos = g_list_position (clist->row_list, (GList *)node);
-
- if (pos <= clist->focus_row)
- {
- clist->focus_row += rows;
- clist->undo_anchor = clist->focus_row;
- }
- }
-}
-
-static void
-gtk_ctree_unlink (GtkCTree *ctree,
- GtkCTreeNode *node,
- gboolean update_focus_row)
-{
- GtkCList *clist;
- gint rows;
- gint level;
- gint visible;
- GtkCTreeNode *work;
- GtkCTreeNode *parent;
- GList *list;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- clist = GTK_CLIST (ctree);
-
- if (update_focus_row && clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- visible = gtk_ctree_is_viewable (ctree, node);
-
- /* clist->row_list_end unlinked ? */
- if (visible &&
- (GTK_CTREE_NODE_NEXT (node) == NULL ||
- (GTK_CTREE_ROW (node)->children &&
- gtk_ctree_is_ancestor (ctree, node,
- GTK_CTREE_NODE (clist->row_list_end)))))
- clist->row_list_end = (GList *) (GTK_CTREE_NODE_PREV (node));
-
- /* update list */
- rows = 0;
- level = GTK_CTREE_ROW (node)->level;
- work = GTK_CTREE_NODE_NEXT (node);
- while (work && GTK_CTREE_ROW (work)->level > level)
- {
- work = GTK_CTREE_NODE_NEXT (work);
- rows++;
- }
-
- if (visible)
- {
- clist->rows -= (rows + 1);
-
- if (update_focus_row)
- {
- gint pos;
-
- pos = g_list_position (clist->row_list, (GList *)node);
- if (pos + rows < clist->focus_row)
- clist->focus_row -= (rows + 1);
- else if (pos <= clist->focus_row)
- {
- if (!GTK_CTREE_ROW (node)->sibling)
- clist->focus_row = MAX (pos - 1, 0);
- else
- clist->focus_row = pos;
-
- clist->focus_row = MIN (clist->focus_row, clist->rows - 1);
- }
- clist->undo_anchor = clist->focus_row;
- }
- }
-
- if (work)
- {
- list = (GList *)GTK_CTREE_NODE_PREV (work);
- list->next = NULL;
- list = (GList *)work;
- list->prev = (GList *)GTK_CTREE_NODE_PREV (node);
- }
-
- if (GTK_CTREE_NODE_PREV (node) &&
- GTK_CTREE_NODE_NEXT (GTK_CTREE_NODE_PREV (node)) == node)
- {
- list = (GList *)GTK_CTREE_NODE_PREV (node);
- list->next = (GList *)work;
- }
-
- /* update tree */
- parent = GTK_CTREE_ROW (node)->parent;
- if (parent)
- {
- if (GTK_CTREE_ROW (parent)->children == node)
- {
- GTK_CTREE_ROW (parent)->children = GTK_CTREE_ROW (node)->sibling;
- if (!GTK_CTREE_ROW (parent)->children)
- gtk_ctree_collapse (ctree, parent);
- }
- else
- {
- GtkCTreeNode *sibling;
-
- sibling = GTK_CTREE_ROW (parent)->children;
- while (GTK_CTREE_ROW (sibling)->sibling != node)
- sibling = GTK_CTREE_ROW (sibling)->sibling;
- GTK_CTREE_ROW (sibling)->sibling = GTK_CTREE_ROW (node)->sibling;
- }
- }
- else
- {
- if (clist->row_list == (GList *)node)
- clist->row_list = (GList *) (GTK_CTREE_ROW (node)->sibling);
- else
- {
- GtkCTreeNode *sibling;
-
- sibling = GTK_CTREE_NODE (clist->row_list);
- while (GTK_CTREE_ROW (sibling)->sibling != node)
- sibling = GTK_CTREE_ROW (sibling)->sibling;
- GTK_CTREE_ROW (sibling)->sibling = GTK_CTREE_ROW (node)->sibling;
- }
- }
-}
-
-static void
-real_row_move (GtkCList *clist,
- gint source_row,
- gint dest_row)
-{
- GtkCTree *ctree;
- GtkCTreeNode *node;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- if (GTK_CLIST_AUTO_SORT (clist))
- return;
-
- if (source_row < 0 || source_row >= clist->rows ||
- dest_row < 0 || dest_row >= clist->rows ||
- source_row == dest_row)
- return;
-
- ctree = GTK_CTREE (clist);
- node = GTK_CTREE_NODE (g_list_nth (clist->row_list, source_row));
-
- if (source_row < dest_row)
- {
- GtkCTreeNode *work;
-
- dest_row++;
- work = GTK_CTREE_ROW (node)->children;
-
- while (work && GTK_CTREE_ROW (work)->level > GTK_CTREE_ROW (node)->level)
- {
- work = GTK_CTREE_NODE_NEXT (work);
- dest_row++;
- }
-
- if (dest_row > clist->rows)
- dest_row = clist->rows;
- }
-
- if (dest_row < clist->rows)
- {
- GtkCTreeNode *sibling;
-
- sibling = GTK_CTREE_NODE (g_list_nth (clist->row_list, dest_row));
- gtk_ctree_move (ctree, node, GTK_CTREE_ROW (sibling)->parent, sibling);
- }
- else
- gtk_ctree_move (ctree, node, NULL, NULL);
-}
-
-static void
-real_tree_move (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling)
-{
- GtkCList *clist;
- GtkCTreeNode *work;
- gboolean visible = FALSE;
-
- g_return_if_fail (ctree != NULL);
- g_return_if_fail (node != NULL);
- g_return_if_fail (!new_sibling ||
- GTK_CTREE_ROW (new_sibling)->parent == new_parent);
-
- if (new_parent && GTK_CTREE_ROW (new_parent)->is_leaf)
- return;
-
- /* new_parent != child of child */
- for (work = new_parent; work; work = GTK_CTREE_ROW (work)->parent)
- if (work == node)
- return;
-
- clist = GTK_CLIST (ctree);
-
- visible = gtk_ctree_is_viewable (ctree, node);
-
- if (clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- if (GTK_CLIST_AUTO_SORT (clist))
- {
- if (new_parent == GTK_CTREE_ROW (node)->parent)
- return;
-
- if (new_parent)
- new_sibling = GTK_CTREE_ROW (new_parent)->children;
- else
- new_sibling = GTK_CTREE_NODE (clist->row_list);
-
- while (new_sibling && clist->compare
- (clist, GTK_CTREE_ROW (node), GTK_CTREE_ROW (new_sibling)) > 0)
- new_sibling = GTK_CTREE_ROW (new_sibling)->sibling;
- }
-
- if (new_parent == GTK_CTREE_ROW (node)->parent &&
- new_sibling == GTK_CTREE_ROW (node)->sibling)
- return;
-
- gtk_clist_freeze (clist);
-
- work = NULL;
- if (gtk_ctree_is_viewable (ctree, node))
- work = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row));
-
- gtk_ctree_unlink (ctree, node, FALSE);
- gtk_ctree_link (ctree, node, new_parent, new_sibling, FALSE);
-
- if (work)
- {
- while (work && !gtk_ctree_is_viewable (ctree, work))
- work = GTK_CTREE_ROW (work)->parent;
- clist->focus_row = g_list_position (clist->row_list, (GList *)work);
- clist->undo_anchor = clist->focus_row;
- }
-
- if (clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) &&
- (visible || gtk_ctree_is_viewable (ctree, node)))
- gtk_clist_set_column_width
- (clist, ctree->tree_column,
- gtk_clist_optimal_column_width (clist, ctree->tree_column));
-
- gtk_clist_thaw (clist);
-}
-
-static void
-change_focus_row_expansion (GtkCTree *ctree,
- GtkCTreeExpansionType action)
-{
- GtkCList *clist;
- GtkCTreeNode *node;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (ctree))) &&
- GTK_WIDGET_HAS_GRAB (ctree))
- return;
-
- if (!(node =
- GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row))) ||
- GTK_CTREE_ROW (node)->is_leaf || !(GTK_CTREE_ROW (node)->children))
- return;
-
- switch (action)
- {
- case GTK_CTREE_EXPANSION_EXPAND:
- gtk_ctree_expand (ctree, node);
- break;
- case GTK_CTREE_EXPANSION_EXPAND_RECURSIVE:
- gtk_ctree_expand_recursive (ctree, node);
- break;
- case GTK_CTREE_EXPANSION_COLLAPSE:
- gtk_ctree_collapse (ctree, node);
- break;
- case GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE:
- gtk_ctree_collapse_recursive (ctree, node);
- break;
- case GTK_CTREE_EXPANSION_TOGGLE:
- gtk_ctree_toggle_expansion (ctree, node);
- break;
- case GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE:
- gtk_ctree_toggle_expansion_recursive (ctree, node);
- break;
- }
-}
-
-static void
-real_tree_expand (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- GtkCTreeNode *work;
- GtkRequisition requisition;
- gboolean visible;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (!node || GTK_CTREE_ROW (node)->expanded || GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- clist = GTK_CLIST (ctree);
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- GTK_CTREE_ROW (node)->expanded = TRUE;
-
- visible = gtk_ctree_is_viewable (ctree, node);
- /* get cell width if tree_column is auto resized */
- if (visible && clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column, &requisition);
-
- /* unref/unset closed pixmap */
- if (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
- {
- g_object_unref
- (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap);
-
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = NULL;
-
- if (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask)
- {
- g_object_unref
- (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask);
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = NULL;
- }
- }
-
- /* set/ref opened pixmap */
- if (GTK_CTREE_ROW (node)->pixmap_opened)
- {
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap =
- g_object_ref (GTK_CTREE_ROW (node)->pixmap_opened);
-
- if (GTK_CTREE_ROW (node)->mask_opened)
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask =
- g_object_ref (GTK_CTREE_ROW (node)->mask_opened);
- }
-
-
- work = GTK_CTREE_ROW (node)->children;
- if (work)
- {
- GList *list = (GList *)work;
- gint *cell_width = NULL;
- gint tmp = 0;
- gint row;
- gint i;
-
- if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- cell_width = g_new0 (gint, clist->columns);
- if (clist->column[ctree->tree_column].auto_resize)
- cell_width[ctree->tree_column] = requisition.width;
-
- while (work)
- {
- /* search maximum cell widths of auto_resize columns */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (work)->row, i, &requisition);
- cell_width[i] = MAX (requisition.width, cell_width[i]);
- }
-
- list = (GList *)work;
- work = GTK_CTREE_NODE_NEXT (work);
- tmp++;
- }
- }
- else
- while (work)
- {
- list = (GList *)work;
- work = GTK_CTREE_NODE_NEXT (work);
- tmp++;
- }
-
- list->next = (GList *)GTK_CTREE_NODE_NEXT (node);
-
- if (GTK_CTREE_NODE_NEXT (node))
- {
- GList *tmp_list;
-
- tmp_list = (GList *)GTK_CTREE_NODE_NEXT (node);
- tmp_list->prev = list;
- }
- else
- clist->row_list_end = list;
-
- list = (GList *)node;
- list->next = (GList *)(GTK_CTREE_ROW (node)->children);
-
- if (visible)
- {
- /* resize auto_resize columns if needed */
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize &&
- cell_width[i] > clist->column[i].width)
- gtk_clist_set_column_width (clist, i, cell_width[i]);
- g_free (cell_width);
-
- /* update focus_row position */
- row = g_list_position (clist->row_list, (GList *)node);
- if (row < clist->focus_row)
- clist->focus_row += tmp;
-
- clist->rows += tmp;
- CLIST_REFRESH (clist);
- }
- }
- else if (visible && clist->column[ctree->tree_column].auto_resize)
- /* resize tree_column if needed */
- column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column,
- requisition.width);
-}
-
-static void
-real_tree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- GtkCTreeNode *work;
- GtkRequisition requisition;
- gboolean visible;
- gint level;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (!node || !GTK_CTREE_ROW (node)->expanded ||
- GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- clist = GTK_CLIST (ctree);
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- GTK_CTREE_ROW (node)->expanded = FALSE;
- level = GTK_CTREE_ROW (node)->level;
-
- visible = gtk_ctree_is_viewable (ctree, node);
- /* get cell width if tree_column is auto resized */
- if (visible && clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column, &requisition);
-
- /* unref/unset opened pixmap */
- if (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
- {
- g_object_unref
- (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap);
-
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = NULL;
-
- if (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask)
- {
- g_object_unref
- (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask);
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = NULL;
- }
- }
-
- /* set/ref closed pixmap */
- if (GTK_CTREE_ROW (node)->pixmap_closed)
- {
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap =
- g_object_ref (GTK_CTREE_ROW (node)->pixmap_closed);
-
- if (GTK_CTREE_ROW (node)->mask_closed)
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask =
- g_object_ref (GTK_CTREE_ROW (node)->mask_closed);
- }
-
- work = GTK_CTREE_ROW (node)->children;
- if (work)
- {
- gint tmp = 0;
- gint row;
- GList *list;
-
- while (work && GTK_CTREE_ROW (work)->level > level)
- {
- work = GTK_CTREE_NODE_NEXT (work);
- tmp++;
- }
-
- if (work)
- {
- list = (GList *)node;
- list->next = (GList *)work;
- list = (GList *)GTK_CTREE_NODE_PREV (work);
- list->next = NULL;
- list = (GList *)work;
- list->prev = (GList *)node;
- }
- else
- {
- list = (GList *)node;
- list->next = NULL;
- clist->row_list_end = (GList *)node;
- }
-
- if (visible)
- {
- /* resize auto_resize columns if needed */
- auto_resize_columns (clist);
-
- row = g_list_position (clist->row_list, (GList *)node);
- if (row < clist->focus_row)
- clist->focus_row -= tmp;
- clist->rows -= tmp;
- CLIST_REFRESH (clist);
- }
- }
- else if (visible && clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- /* resize tree_column if needed */
- column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, ctree->tree_column,
- requisition.width);
-
-}
-
-static void
-column_auto_resize (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- gint old_width)
-{
- /* resize column if needed for auto_resize */
- GtkRequisition requisition;
-
- if (!clist->column[column].auto_resize ||
- GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- return;
-
- if (clist_row)
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
- else
- requisition.width = 0;
-
- if (requisition.width > clist->column[column].width)
- gtk_clist_set_column_width (clist, column, requisition.width);
- else if (requisition.width < old_width &&
- old_width == clist->column[column].width)
- {
- GList *list;
- gint new_width;
-
- /* run a "gtk_clist_optimal_column_width" but break, if
- * the column doesn't shrink */
- if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[column].button)
- new_width = (clist->column[column].button->requisition.width -
- (CELL_SPACING + (2 * COLUMN_INSET)));
- else
- new_width = 0;
-
- for (list = clist->row_list; list; list = list->next)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, GTK_CLIST_ROW (list), column, &requisition);
- new_width = MAX (new_width, requisition.width);
- if (new_width == clist->column[column].width)
- break;
- }
- if (new_width < clist->column[column].width)
- gtk_clist_set_column_width (clist, column, new_width);
- }
-}
-
-static void
-auto_resize_columns (GtkCList *clist)
-{
- gint i;
-
- if (GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- return;
-
- for (i = 0; i < clist->columns; i++)
- column_auto_resize (clist, NULL, i, clist->column[i].width);
-}
-
-static void
-cell_size_request (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkRequisition *requisition)
-{
- GtkCTree *ctree;
- gint width;
- gint height;
- PangoLayout *layout;
- PangoRectangle logical_rect;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
- g_return_if_fail (requisition != NULL);
-
- ctree = GTK_CTREE (clist);
-
- layout = _gtk_clist_create_cell_layout (clist, clist_row, column);
- if (layout)
- {
- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
-
- requisition->width = logical_rect.width;
- requisition->height = logical_rect.height;
-
- g_object_unref (G_OBJECT (layout));
- }
- else
- {
- requisition->width = 0;
- requisition->height = 0;
- }
-
- switch (clist_row->cell[column].type)
- {
- case GTK_CELL_PIXTEXT:
- if (GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap)
- {
- gdk_drawable_get_size (GTK_CELL_PIXTEXT
- (clist_row->cell[column])->pixmap,
- &width, &height);
- width += GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing;
- }
- else
- width = height = 0;
-
- requisition->width += width;
- requisition->height = MAX (requisition->height, height);
-
- if (column == ctree->tree_column)
- {
- requisition->width += (ctree->tree_spacing + ctree->tree_indent *
- (((GtkCTreeRow *) clist_row)->level - 1));
- switch (ctree->expander_style)
- {
- case GTK_CTREE_EXPANDER_NONE:
- break;
- case GTK_CTREE_EXPANDER_TRIANGLE:
- requisition->width += PM_SIZE + 3;
- break;
- case GTK_CTREE_EXPANDER_SQUARE:
- case GTK_CTREE_EXPANDER_CIRCULAR:
- requisition->width += PM_SIZE + 1;
- break;
- }
- if (ctree->line_style == GTK_CTREE_LINES_TABBED)
- requisition->width += 3;
- }
- break;
- case GTK_CELL_PIXMAP:
- gdk_drawable_get_size (GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap,
- &width, &height);
- requisition->width += width;
- requisition->height = MAX (requisition->height, height);
- break;
- default:
- break;
- }
-
- requisition->width += clist_row->cell[column].horizontal;
- requisition->height += clist_row->cell[column].vertical;
-}
-
-static void
-set_cell_contents (GtkCList *clist,
- GtkCListRow *clist_row,
- gint column,
- GtkCellType type,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- gboolean visible = FALSE;
- GtkCTree *ctree;
- GtkRequisition requisition;
- gchar *old_text = NULL;
- GdkPixmap *old_pixmap = NULL;
- GdkBitmap *old_mask = NULL;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
- g_return_if_fail (clist_row != NULL);
-
- ctree = GTK_CTREE (clist);
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- GtkCTreeNode *parent;
-
- parent = ((GtkCTreeRow *)clist_row)->parent;
- if (!parent || (parent && GTK_CTREE_ROW (parent)->expanded &&
- gtk_ctree_is_viewable (ctree, parent)))
- {
- visible = TRUE;
- GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row,
- column, &requisition);
- }
- }
-
- switch (clist_row->cell[column].type)
- {
- case GTK_CELL_EMPTY:
- break;
- case GTK_CELL_TEXT:
- old_text = GTK_CELL_TEXT (clist_row->cell[column])->text;
- break;
- case GTK_CELL_PIXMAP:
- old_pixmap = GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap;
- old_mask = GTK_CELL_PIXMAP (clist_row->cell[column])->mask;
- break;
- case GTK_CELL_PIXTEXT:
- old_text = GTK_CELL_PIXTEXT (clist_row->cell[column])->text;
- old_pixmap = GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap;
- old_mask = GTK_CELL_PIXTEXT (clist_row->cell[column])->mask;
- break;
- case GTK_CELL_WIDGET:
- /* unimplemented */
- break;
-
- default:
- break;
- }
-
- clist_row->cell[column].type = GTK_CELL_EMPTY;
- if (column == ctree->tree_column && type != GTK_CELL_EMPTY)
- type = GTK_CELL_PIXTEXT;
-
- /* Note that pixmap and mask were already ref'ed by the caller
- */
- switch (type)
- {
- case GTK_CELL_TEXT:
- if (text)
- {
- clist_row->cell[column].type = GTK_CELL_TEXT;
- GTK_CELL_TEXT (clist_row->cell[column])->text = g_strdup (text);
- }
- break;
- case GTK_CELL_PIXMAP:
- if (pixmap)
- {
- clist_row->cell[column].type = GTK_CELL_PIXMAP;
- GTK_CELL_PIXMAP (clist_row->cell[column])->pixmap = pixmap;
- /* We set the mask even if it is NULL */
- GTK_CELL_PIXMAP (clist_row->cell[column])->mask = mask;
- }
- break;
- case GTK_CELL_PIXTEXT:
- if (column == ctree->tree_column)
- {
- clist_row->cell[column].type = GTK_CELL_PIXTEXT;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing = spacing;
- if (text)
- GTK_CELL_PIXTEXT (clist_row->cell[column])->text = g_strdup (text);
- else
- GTK_CELL_PIXTEXT (clist_row->cell[column])->text = NULL;
- if (pixmap)
- {
- GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap = pixmap;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = mask;
- }
- else
- {
- GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap = NULL;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = NULL;
- }
- }
- else if (text && pixmap)
- {
- clist_row->cell[column].type = GTK_CELL_PIXTEXT;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->text = g_strdup (text);
- GTK_CELL_PIXTEXT (clist_row->cell[column])->spacing = spacing;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->pixmap = pixmap;
- GTK_CELL_PIXTEXT (clist_row->cell[column])->mask = mask;
- }
- break;
- default:
- break;
- }
-
- if (visible && clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- column_auto_resize (clist, clist_row, column, requisition.width);
-
- g_free (old_text);
- if (old_pixmap)
- g_object_unref (old_pixmap);
- if (old_mask)
- g_object_unref (old_mask);
-}
-
-static void
-set_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded)
-{
- if (GTK_CTREE_ROW (node)->pixmap_opened)
- {
- g_object_unref (GTK_CTREE_ROW (node)->pixmap_opened);
- if (GTK_CTREE_ROW (node)->mask_opened)
- g_object_unref (GTK_CTREE_ROW (node)->mask_opened);
- }
- if (GTK_CTREE_ROW (node)->pixmap_closed)
- {
- g_object_unref (GTK_CTREE_ROW (node)->pixmap_closed);
- if (GTK_CTREE_ROW (node)->mask_closed)
- g_object_unref (GTK_CTREE_ROW (node)->mask_closed);
- }
-
- GTK_CTREE_ROW (node)->pixmap_opened = NULL;
- GTK_CTREE_ROW (node)->mask_opened = NULL;
- GTK_CTREE_ROW (node)->pixmap_closed = NULL;
- GTK_CTREE_ROW (node)->mask_closed = NULL;
-
- if (pixmap_closed)
- {
- GTK_CTREE_ROW (node)->pixmap_closed = g_object_ref (pixmap_closed);
- if (mask_closed)
- GTK_CTREE_ROW (node)->mask_closed = g_object_ref (mask_closed);
- }
- if (pixmap_opened)
- {
- GTK_CTREE_ROW (node)->pixmap_opened = g_object_ref (pixmap_opened);
- if (mask_opened)
- GTK_CTREE_ROW (node)->mask_opened = g_object_ref (mask_opened);
- }
-
- GTK_CTREE_ROW (node)->is_leaf = is_leaf;
- GTK_CTREE_ROW (node)->expanded = (is_leaf) ? FALSE : expanded;
-
- if (GTK_CTREE_ROW (node)->expanded)
- gtk_ctree_node_set_pixtext (ctree, node, ctree->tree_column,
- text, spacing, pixmap_opened, mask_opened);
- else
- gtk_ctree_node_set_pixtext (ctree, node, ctree->tree_column,
- text, spacing, pixmap_closed, mask_closed);
-}
-
-static void
-tree_delete (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- tree_unselect (ctree, node, NULL);
- row_delete (ctree, GTK_CTREE_ROW (node));
- g_list_free_1 ((GList *)node);
-}
-
-static void
-tree_delete_row (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- row_delete (ctree, GTK_CTREE_ROW (node));
- g_list_free_1 ((GList *)node);
-}
-
-static void
-tree_update_level (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (!node)
- return;
-
- if (GTK_CTREE_ROW (node)->parent)
- GTK_CTREE_ROW (node)->level =
- GTK_CTREE_ROW (GTK_CTREE_ROW (node)->parent)->level + 1;
- else
- GTK_CTREE_ROW (node)->level = 1;
-}
-
-static void
-tree_select (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (node && GTK_CTREE_ROW (node)->row.state != GTK_STATE_SELECTED &&
- GTK_CTREE_ROW (node)->row.selectable)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_SELECT_ROW],
- node, -1);
-}
-
-static void
-tree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (node && GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_UNSELECT_ROW],
- node, -1);
-}
-
-static void
-tree_expand (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (node && !GTK_CTREE_ROW (node)->expanded)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_EXPAND], node);
-}
-
-static void
-tree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (node && GTK_CTREE_ROW (node)->expanded)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_COLLAPSE], node);
-}
-
-static void
-tree_collapse_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth)
-{
- if (node && GTK_CTREE_ROW (node)->level == depth)
- gtk_ctree_collapse_recursive (ctree, node);
-}
-
-static void
-tree_toggle_expansion (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (!node)
- return;
-
- if (GTK_CTREE_ROW (node)->expanded)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_COLLAPSE], node);
- else
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_EXPAND], node);
-}
-
-static GtkCTreeRow *
-row_new (GtkCTree *ctree)
-{
- GtkCList *clist;
- GtkCTreeRow *ctree_row;
- int i;
-
- clist = GTK_CLIST (ctree);
- ctree_row = g_slice_new (GtkCTreeRow);
- ctree_row->row.cell = g_slice_alloc (sizeof (GtkCell) * clist->columns);
-
- for (i = 0; i < clist->columns; i++)
- {
- ctree_row->row.cell[i].type = GTK_CELL_EMPTY;
- ctree_row->row.cell[i].vertical = 0;
- ctree_row->row.cell[i].horizontal = 0;
- ctree_row->row.cell[i].style = NULL;
- }
-
- GTK_CELL_PIXTEXT (ctree_row->row.cell[ctree->tree_column])->text = NULL;
-
- ctree_row->row.fg_set = FALSE;
- ctree_row->row.bg_set = FALSE;
- ctree_row->row.style = NULL;
- ctree_row->row.selectable = TRUE;
- ctree_row->row.state = GTK_STATE_NORMAL;
- ctree_row->row.data = NULL;
- ctree_row->row.destroy = NULL;
-
- ctree_row->level = 0;
- ctree_row->expanded = FALSE;
- ctree_row->parent = NULL;
- ctree_row->sibling = NULL;
- ctree_row->children = NULL;
- ctree_row->pixmap_closed = NULL;
- ctree_row->mask_closed = NULL;
- ctree_row->pixmap_opened = NULL;
- ctree_row->mask_opened = NULL;
-
- return ctree_row;
-}
-
-static void
-row_delete (GtkCTree *ctree,
- GtkCTreeRow *ctree_row)
-{
- GtkCList *clist;
- gint i;
-
- clist = GTK_CLIST (ctree);
-
- for (i = 0; i < clist->columns; i++)
- {
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, &(ctree_row->row), i, GTK_CELL_EMPTY, NULL, 0, NULL, NULL);
- if (ctree_row->row.cell[i].style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gtk_style_detach (ctree_row->row.cell[i].style);
- g_object_unref (ctree_row->row.cell[i].style);
- }
- }
-
- if (ctree_row->row.style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gtk_style_detach (ctree_row->row.style);
- g_object_unref (ctree_row->row.style);
- }
-
- if (ctree_row->pixmap_closed)
- {
- g_object_unref (ctree_row->pixmap_closed);
- if (ctree_row->mask_closed)
- g_object_unref (ctree_row->mask_closed);
- }
-
- if (ctree_row->pixmap_opened)
- {
- g_object_unref (ctree_row->pixmap_opened);
- if (ctree_row->mask_opened)
- g_object_unref (ctree_row->mask_opened);
- }
-
- if (ctree_row->row.destroy)
- {
- GDestroyNotify dnotify = ctree_row->row.destroy;
- gpointer ddata = ctree_row->row.data;
-
- ctree_row->row.destroy = NULL;
- ctree_row->row.data = NULL;
-
- dnotify (ddata);
- }
-
- g_slice_free1 (sizeof (GtkCell) * clist->columns, ctree_row->row.cell);
- g_slice_free (GtkCTreeRow, ctree_row);
-}
-
-static void
-real_select_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event)
-{
- GList *node;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- if ((node = g_list_nth (clist->row_list, row)) &&
- GTK_CTREE_ROW (node)->row.selectable)
- gtk_signal_emit (GTK_OBJECT (clist), ctree_signals[TREE_SELECT_ROW],
- node, column);
-}
-
-static void
-real_unselect_row (GtkCList *clist,
- gint row,
- gint column,
- GdkEvent *event)
-{
- GList *node;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- if ((node = g_list_nth (clist->row_list, row)))
- gtk_signal_emit (GTK_OBJECT (clist), ctree_signals[TREE_UNSELECT_ROW],
- node, column);
-}
-
-static void
-real_tree_select (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column)
-{
- GtkCList *clist;
- GList *list;
- GtkCTreeNode *sel_row;
- gboolean node_selected;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (!node || GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED ||
- !GTK_CTREE_ROW (node)->row.selectable)
- return;
-
- clist = GTK_CLIST (ctree);
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
-
- node_selected = FALSE;
- list = clist->selection;
-
- while (list)
- {
- sel_row = list->data;
- list = list->next;
-
- if (node == sel_row)
- node_selected = TRUE;
- else
- gtk_signal_emit (GTK_OBJECT (ctree),
- ctree_signals[TREE_UNSELECT_ROW], sel_row, column);
- }
-
- if (node_selected)
- return;
-
- default:
- break;
- }
-
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_SELECTED;
-
- if (!clist->selection)
- {
- clist->selection = g_list_append (clist->selection, node);
- clist->selection_end = clist->selection;
- }
- else
- clist->selection_end = g_list_append (clist->selection_end, node)->next;
-
- tree_draw_node (ctree, node);
-}
-
-static void
-real_tree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (!node || GTK_CTREE_ROW (node)->row.state != GTK_STATE_SELECTED)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (clist->selection_end && clist->selection_end->data == node)
- clist->selection_end = clist->selection_end->prev;
-
- clist->selection = g_list_remove (clist->selection, node);
-
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_NORMAL;
-
- tree_draw_node (ctree, node);
-}
-
-static void
-select_row_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- if (!node || GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED ||
- !GTK_CTREE_ROW (node)->row.selectable)
- return;
-
- GTK_CLIST (ctree)->undo_unselection =
- g_list_prepend (GTK_CLIST (ctree)->undo_unselection, node);
- gtk_ctree_select (ctree, node);
-}
-
-static void
-real_select_all (GtkCList *clist)
-{
- GtkCTree *ctree;
- GtkCTreeNode *node;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- ctree = GTK_CTREE (clist);
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
- return;
-
- case GTK_SELECTION_MULTIPLE:
-
- gtk_clist_freeze (clist);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->anchor_state = GTK_STATE_SELECTED;
- clist->anchor = -1;
- clist->drag_pos = -1;
- clist->undo_anchor = clist->focus_row;
-
- for (node = GTK_CTREE_NODE (clist->row_list); node;
- node = GTK_CTREE_NODE_NEXT (node))
- gtk_ctree_pre_recursive (ctree, node, select_row_recursive, NULL);
-
- gtk_clist_thaw (clist);
- break;
-
- default:
- /* do nothing */
- break;
- }
-}
-
-static void
-real_unselect_all (GtkCList *clist)
-{
- GtkCTree *ctree;
- GtkCTreeNode *node;
- GList *list;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- ctree = GTK_CTREE (clist);
-
- switch (clist->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- if (clist->focus_row >= 0)
- {
- gtk_ctree_select
- (ctree,
- GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row)));
- return;
- }
- break;
-
- case GTK_SELECTION_MULTIPLE:
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- clist->anchor = -1;
- clist->drag_pos = -1;
- clist->undo_anchor = clist->focus_row;
- break;
-
- default:
- break;
- }
-
- list = clist->selection;
-
- while (list)
- {
- node = list->data;
- list = list->next;
- gtk_ctree_unselect (ctree, node);
- }
-}
-
-static gboolean
-ctree_is_hot_spot (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint row,
- gint x,
- gint y)
-{
- GtkCTreeRow *tree_row;
- GtkCList *clist;
- gint xl;
- gint yu;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- clist = GTK_CLIST (ctree);
-
- if (!clist->column[ctree->tree_column].visible ||
- ctree->expander_style == GTK_CTREE_EXPANDER_NONE)
- return FALSE;
-
- tree_row = GTK_CTREE_ROW (node);
-
- yu = (ROW_TOP_YPIXEL (clist, row) + (clist->row_height - PM_SIZE) / 2 -
- (clist->row_height - 1) % 2);
-
- if (clist->column[ctree->tree_column].justification == GTK_JUSTIFY_RIGHT)
- xl = (clist->column[ctree->tree_column].area.x +
- clist->column[ctree->tree_column].area.width - 1 + clist->hoffset -
- (tree_row->level - 1) * ctree->tree_indent - PM_SIZE -
- (ctree->line_style == GTK_CTREE_LINES_TABBED) * 3);
- else
- xl = (clist->column[ctree->tree_column].area.x + clist->hoffset +
- (tree_row->level - 1) * ctree->tree_indent +
- (ctree->line_style == GTK_CTREE_LINES_TABBED) * 3);
-
- return (x >= xl && x <= xl + PM_SIZE && y >= yu && y <= yu + PM_SIZE);
-}
-
-/***********************************************************
- ***********************************************************
- *** Public interface ***
- ***********************************************************
- ***********************************************************/
-
-
-/***********************************************************
- * Creation, insertion, deletion *
- ***********************************************************/
-
-static GObject*
-gtk_ctree_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_properties)
-{
- GObject *object = G_OBJECT_CLASS (parent_class)->constructor (type,
- n_construct_properties,
- construct_properties);
-
- return object;
-}
-
-GtkWidget*
-gtk_ctree_new_with_titles (gint columns,
- gint tree_column,
- gchar *titles[])
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (columns > 0, NULL);
- g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL);
-
- widget = g_object_new (GTK_TYPE_CTREE,
- "n_columns", columns,
- "tree_column", tree_column,
- NULL);
- if (titles)
- {
- GtkCList *clist = GTK_CLIST (widget);
- guint i;
-
- for (i = 0; i < columns; i++)
- gtk_clist_set_column_title (clist, i, titles[i]);
- gtk_clist_column_titles_show (clist);
- }
-
- return widget;
-}
-
-GtkWidget *
-gtk_ctree_new (gint columns,
- gint tree_column)
-{
- return gtk_ctree_new_with_titles (columns, tree_column, NULL);
-}
-
-static gint
-real_insert_row (GtkCList *clist,
- gint row,
- gchar *text[])
-{
- GtkCTreeNode *parent = NULL;
- GtkCTreeNode *sibling;
- GtkCTreeNode *node;
-
- g_return_val_if_fail (GTK_IS_CTREE (clist), -1);
-
- sibling = GTK_CTREE_NODE (g_list_nth (clist->row_list, row));
- if (sibling)
- parent = GTK_CTREE_ROW (sibling)->parent;
-
- node = gtk_ctree_insert_node (GTK_CTREE (clist), parent, sibling, text, 5,
- NULL, NULL, NULL, NULL, TRUE, FALSE);
-
- if (GTK_CLIST_AUTO_SORT (clist) || !sibling)
- return g_list_position (clist->row_list, (GList *) node);
-
- return row;
-}
-
-
-/**
- * gtk_ctree_insert_node:
- * @pixmap_closed: (allow-none):
- * @mask_closed: (allow-none):
- * @pixmap_opened: (allow-none):
- * @mask_opened: (allow-none):
- */
-GtkCTreeNode *
-gtk_ctree_insert_node (GtkCTree *ctree,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- gchar *text[],
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded)
-{
- GtkCList *clist;
- GtkCTreeRow *new_row;
- GtkCTreeNode *node;
- GList *list;
- gint i;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- if (sibling)
- g_return_val_if_fail (GTK_CTREE_ROW (sibling)->parent == parent, NULL);
-
- if (parent && GTK_CTREE_ROW (parent)->is_leaf)
- return NULL;
-
- clist = GTK_CLIST (ctree);
-
- /* create the row */
- new_row = row_new (ctree);
- list = g_list_alloc ();
- list->data = new_row;
- node = GTK_CTREE_NODE (list);
-
- if (text)
- for (i = 0; i < clist->columns; i++)
- if (text[i] && i != ctree->tree_column)
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, &(new_row->row), i, GTK_CELL_TEXT, text[i], 0, NULL, NULL);
-
- set_node_info (ctree, node, text ?
- text[ctree->tree_column] : NULL, spacing, pixmap_closed,
- mask_closed, pixmap_opened, mask_opened, is_leaf, expanded);
-
- /* sorted insertion */
- if (GTK_CLIST_AUTO_SORT (clist))
- {
- if (parent)
- sibling = GTK_CTREE_ROW (parent)->children;
- else
- sibling = GTK_CTREE_NODE (clist->row_list);
-
- while (sibling && clist->compare
- (clist, GTK_CTREE_ROW (node), GTK_CTREE_ROW (sibling)) > 0)
- sibling = GTK_CTREE_ROW (sibling)->sibling;
- }
-
- gtk_ctree_link (ctree, node, parent, sibling, TRUE);
-
- if (text && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) &&
- gtk_ctree_is_viewable (ctree, node))
- {
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- column_auto_resize (clist, &(new_row->row), i, 0);
- }
-
- if (clist->rows == 1)
- {
- clist->focus_row = 0;
- if (clist->selection_mode == GTK_SELECTION_BROWSE)
- gtk_ctree_select (ctree, node);
- }
-
-
- CLIST_REFRESH (clist);
-
- return node;
-}
-
-GtkCTreeNode *
-gtk_ctree_insert_gnode (GtkCTree *ctree,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- GNode *gnode,
- GtkCTreeGNodeFunc func,
- gpointer data)
-{
- GtkCList *clist;
- GtkCTreeNode *cnode = NULL;
- GtkCTreeNode *child = NULL;
- GtkCTreeNode *new_child;
- GList *list;
- GNode *work;
- guint depth = 1;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (gnode != NULL, NULL);
- g_return_val_if_fail (func != NULL, NULL);
- if (sibling)
- g_return_val_if_fail (GTK_CTREE_ROW (sibling)->parent == parent, NULL);
-
- clist = GTK_CLIST (ctree);
-
- if (parent)
- depth = GTK_CTREE_ROW (parent)->level + 1;
-
- list = g_list_alloc ();
- list->data = row_new (ctree);
- cnode = GTK_CTREE_NODE (list);
-
- gtk_clist_freeze (clist);
-
- set_node_info (ctree, cnode, "", 0, NULL, NULL, NULL, NULL, TRUE, FALSE);
-
- if (!func (ctree, depth, gnode, cnode, data))
- {
- tree_delete_row (ctree, cnode, NULL);
- gtk_clist_thaw (clist);
- return NULL;
- }
-
- if (GTK_CLIST_AUTO_SORT (clist))
- {
- if (parent)
- sibling = GTK_CTREE_ROW (parent)->children;
- else
- sibling = GTK_CTREE_NODE (clist->row_list);
-
- while (sibling && clist->compare
- (clist, GTK_CTREE_ROW (cnode), GTK_CTREE_ROW (sibling)) > 0)
- sibling = GTK_CTREE_ROW (sibling)->sibling;
- }
-
- gtk_ctree_link (ctree, cnode, parent, sibling, TRUE);
-
- for (work = g_node_last_child (gnode); work; work = work->prev)
- {
- new_child = gtk_ctree_insert_gnode (ctree, cnode, child,
- work, func, data);
- if (new_child)
- child = new_child;
- }
-
- gtk_clist_thaw (clist);
-
- return cnode;
-}
-
-GNode *
-gtk_ctree_export_to_gnode (GtkCTree *ctree,
- GNode *parent,
- GNode *sibling,
- GtkCTreeNode *node,
- GtkCTreeGNodeFunc func,
- gpointer data)
-{
- GtkCTreeNode *work;
- GNode *gnode;
- gint depth;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (func != NULL, NULL);
- if (sibling)
- {
- g_return_val_if_fail (parent != NULL, NULL);
- g_return_val_if_fail (sibling->parent == parent, NULL);
- }
-
- gnode = g_node_new (NULL);
- depth = g_node_depth (parent) + 1;
-
- if (!func (ctree, depth, gnode, node, data))
- {
- g_node_destroy (gnode);
- return NULL;
- }
-
- if (parent)
- g_node_insert_before (parent, sibling, gnode);
-
- if (!GTK_CTREE_ROW (node)->is_leaf)
- {
- GNode *new_sibling = NULL;
-
- for (work = GTK_CTREE_ROW (node)->children; work;
- work = GTK_CTREE_ROW (work)->sibling)
- new_sibling = gtk_ctree_export_to_gnode (ctree, gnode, new_sibling,
- work, func, data);
-
- g_node_reverse_children (gnode);
- }
-
- return gnode;
-}
-
-static void
-real_remove_row (GtkCList *clist,
- gint row)
-{
- GtkCTreeNode *node;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- node = GTK_CTREE_NODE (g_list_nth (clist->row_list, row));
-
- if (node)
- gtk_ctree_remove_node (GTK_CTREE (clist), node);
-}
-
-void
-gtk_ctree_remove_node (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- gtk_clist_freeze (clist);
-
- if (node)
- {
- gtk_ctree_unlink (ctree, node, TRUE);
- gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_delete),
- NULL);
- if (clist->selection_mode == GTK_SELECTION_BROWSE && !clist->selection &&
- clist->focus_row >= 0)
- gtk_clist_select_row (clist, clist->focus_row, -1);
-
- auto_resize_columns (clist);
- }
- else
- gtk_clist_clear (clist);
-
- gtk_clist_thaw (clist);
-}
-
-static void
-real_clear (GtkCList *clist)
-{
- GtkCTree *ctree;
- GtkCTreeNode *work;
- GtkCTreeNode *ptr;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- ctree = GTK_CTREE (clist);
-
- /* remove all rows */
- work = GTK_CTREE_NODE (clist->row_list);
- clist->row_list = NULL;
- clist->row_list_end = NULL;
-
- GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- while (work)
- {
- ptr = work;
- work = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_post_recursive (ctree, ptr, GTK_CTREE_FUNC (tree_delete_row),
- NULL);
- }
- GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
-
- parent_class->clear (clist);
-}
-
-
-/***********************************************************
- * Generic recursive functions, querying / finding tree *
- * information *
- ***********************************************************/
-
-
-void
-gtk_ctree_post_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeFunc func,
- gpointer data)
-{
- GtkCTreeNode *work;
- GtkCTreeNode *tmp;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (func != NULL);
-
- if (node)
- work = GTK_CTREE_ROW (node)->children;
- else
- work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (work)
- {
- tmp = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_post_recursive (ctree, work, func, data);
- work = tmp;
- }
-
- if (node)
- func (ctree, node, data);
-}
-
-void
-gtk_ctree_post_recursive_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth,
- GtkCTreeFunc func,
- gpointer data)
-{
- GtkCTreeNode *work;
- GtkCTreeNode *tmp;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (func != NULL);
-
- if (depth < 0)
- {
- gtk_ctree_post_recursive (ctree, node, func, data);
- return;
- }
-
- if (node)
- work = GTK_CTREE_ROW (node)->children;
- else
- work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- if (work && GTK_CTREE_ROW (work)->level <= depth)
- {
- while (work)
- {
- tmp = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_post_recursive_to_depth (ctree, work, depth, func, data);
- work = tmp;
- }
- }
-
- if (node && GTK_CTREE_ROW (node)->level <= depth)
- func (ctree, node, data);
-}
-
-void
-gtk_ctree_pre_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeFunc func,
- gpointer data)
-{
- GtkCTreeNode *work;
- GtkCTreeNode *tmp;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (func != NULL);
-
- if (node)
- {
- work = GTK_CTREE_ROW (node)->children;
- func (ctree, node, data);
- }
- else
- work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (work)
- {
- tmp = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_pre_recursive (ctree, work, func, data);
- work = tmp;
- }
-}
-
-void
-gtk_ctree_pre_recursive_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth,
- GtkCTreeFunc func,
- gpointer data)
-{
- GtkCTreeNode *work;
- GtkCTreeNode *tmp;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (func != NULL);
-
- if (depth < 0)
- {
- gtk_ctree_pre_recursive (ctree, node, func, data);
- return;
- }
-
- if (node)
- {
- work = GTK_CTREE_ROW (node)->children;
- if (GTK_CTREE_ROW (node)->level <= depth)
- func (ctree, node, data);
- }
- else
- work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- if (work && GTK_CTREE_ROW (work)->level <= depth)
- {
- while (work)
- {
- tmp = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_pre_recursive_to_depth (ctree, work, depth, func, data);
- work = tmp;
- }
- }
-}
-
-gboolean
-gtk_ctree_is_viewable (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCTreeRow *work;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- work = GTK_CTREE_ROW (node);
-
- while (work->parent && GTK_CTREE_ROW (work->parent)->expanded)
- work = GTK_CTREE_ROW (work->parent);
-
- if (!work->parent)
- return TRUE;
-
- return FALSE;
-}
-
-GtkCTreeNode *
-gtk_ctree_last (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
-
- if (!node)
- return NULL;
-
- while (GTK_CTREE_ROW (node)->sibling)
- node = GTK_CTREE_ROW (node)->sibling;
-
- if (GTK_CTREE_ROW (node)->children)
- return gtk_ctree_last (ctree, GTK_CTREE_ROW (node)->children);
-
- return node;
-}
-
-GtkCTreeNode *
-gtk_ctree_find_node_ptr (GtkCTree *ctree,
- GtkCTreeRow *ctree_row)
-{
- GtkCTreeNode *node;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (ctree_row != NULL, NULL);
-
- if (ctree_row->parent)
- node = GTK_CTREE_ROW (ctree_row->parent)->children;
- else
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (GTK_CTREE_ROW (node) != ctree_row)
- node = GTK_CTREE_ROW (node)->sibling;
-
- return node;
-}
-
-GtkCTreeNode *
-gtk_ctree_node_nth (GtkCTree *ctree,
- guint row)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
-
- if ((row >= GTK_CLIST(ctree)->rows))
- return NULL;
-
- return GTK_CTREE_NODE (g_list_nth (GTK_CLIST (ctree)->row_list, row));
-}
-
-gboolean
-gtk_ctree_find (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *child)
-{
- if (!child)
- return FALSE;
-
- if (!node)
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (node)
- {
- if (node == child)
- return TRUE;
- if (GTK_CTREE_ROW (node)->children)
- {
- if (gtk_ctree_find (ctree, GTK_CTREE_ROW (node)->children, child))
- return TRUE;
- }
- node = GTK_CTREE_ROW (node)->sibling;
- }
- return FALSE;
-}
-
-gboolean
-gtk_ctree_is_ancestor (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *child)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- if (GTK_CTREE_ROW (node)->children)
- return gtk_ctree_find (ctree, GTK_CTREE_ROW (node)->children, child);
-
- return FALSE;
-}
-
-GtkCTreeNode *
-gtk_ctree_find_by_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- GtkCTreeNode *work;
-
- if (!node)
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (node)
- {
- if (GTK_CTREE_ROW (node)->row.data == data)
- return node;
- if (GTK_CTREE_ROW (node)->children &&
- (work = gtk_ctree_find_by_row_data
- (ctree, GTK_CTREE_ROW (node)->children, data)))
- return work;
- node = GTK_CTREE_ROW (node)->sibling;
- }
- return NULL;
-}
-
-GList *
-gtk_ctree_find_all_by_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- GList *list = NULL;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
-
- /* if node == NULL then look in the whole tree */
- if (!node)
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (node)
- {
- if (GTK_CTREE_ROW (node)->row.data == data)
- list = g_list_append (list, node);
-
- if (GTK_CTREE_ROW (node)->children)
- {
- GList *sub_list;
-
- sub_list = gtk_ctree_find_all_by_row_data (ctree,
- GTK_CTREE_ROW
- (node)->children,
- data);
- list = g_list_concat (list, sub_list);
- }
- node = GTK_CTREE_ROW (node)->sibling;
- }
- return list;
-}
-
-GtkCTreeNode *
-gtk_ctree_find_by_row_data_custom (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GCompareFunc func)
-{
- GtkCTreeNode *work;
-
- g_return_val_if_fail (func != NULL, NULL);
-
- if (!node)
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (node)
- {
- if (!func (GTK_CTREE_ROW (node)->row.data, data))
- return node;
- if (GTK_CTREE_ROW (node)->children &&
- (work = gtk_ctree_find_by_row_data_custom
- (ctree, GTK_CTREE_ROW (node)->children, data, func)))
- return work;
- node = GTK_CTREE_ROW (node)->sibling;
- }
- return NULL;
-}
-
-GList *
-gtk_ctree_find_all_by_row_data_custom (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GCompareFunc func)
-{
- GList *list = NULL;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (func != NULL, NULL);
-
- /* if node == NULL then look in the whole tree */
- if (!node)
- node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list);
-
- while (node)
- {
- if (!func (GTK_CTREE_ROW (node)->row.data, data))
- list = g_list_append (list, node);
-
- if (GTK_CTREE_ROW (node)->children)
- {
- GList *sub_list;
-
- sub_list = gtk_ctree_find_all_by_row_data_custom (ctree,
- GTK_CTREE_ROW
- (node)->children,
- data,
- func);
- list = g_list_concat (list, sub_list);
- }
- node = GTK_CTREE_ROW (node)->sibling;
- }
- return list;
-}
-
-gboolean
-gtk_ctree_is_hot_spot (GtkCTree *ctree,
- gint x,
- gint y)
-{
- GtkCTreeNode *node;
- gint column;
- gint row;
-
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
-
- if (gtk_clist_get_selection_info (GTK_CLIST (ctree), x, y, &row, &column))
- if ((node = GTK_CTREE_NODE(g_list_nth (GTK_CLIST (ctree)->row_list, row))))
- return ctree_is_hot_spot (ctree, node, row, x, y);
-
- return FALSE;
-}
-
-
-/***********************************************************
- * Tree signals : move, expand, collapse, (un)select *
- ***********************************************************/
-
-
-/**
- * gtk_ctree_move:
- * @new_parent: (allow-none):
- * @new_sibling: (allow-none):
- */
-void
-gtk_ctree_move (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_MOVE], node,
- new_parent, new_sibling);
-}
-
-void
-gtk_ctree_expand (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_EXPAND], node);
-}
-
-void
-gtk_ctree_expand_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- if (node && GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_expand), NULL);
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_ctree_expand_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- if (node && GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- gtk_ctree_post_recursive_to_depth (ctree, node, depth,
- GTK_CTREE_FUNC (tree_expand), NULL);
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_ctree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_COLLAPSE], node);
-}
-
-void
-gtk_ctree_collapse_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
- gint i;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (node && GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_collapse), NULL);
- GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- gtk_clist_set_column_width (clist, i,
- gtk_clist_optimal_column_width (clist, i));
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_ctree_collapse_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
- gint i;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (node && GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- gtk_ctree_post_recursive_to_depth (ctree, node, depth,
- GTK_CTREE_FUNC (tree_collapse_to_depth),
- GINT_TO_POINTER (depth));
- GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED);
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- gtk_clist_set_column_width (clist, i,
- gtk_clist_optimal_column_width (clist, i));
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_ctree_toggle_expansion (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- tree_toggle_expansion (ctree, node, NULL);
-}
-
-void
-gtk_ctree_toggle_expansion_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (node && GTK_CTREE_ROW (node)->is_leaf)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- gtk_ctree_post_recursive (ctree, node,
- GTK_CTREE_FUNC (tree_toggle_expansion), NULL);
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-void
-gtk_ctree_select (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (GTK_CTREE_ROW (node)->row.selectable)
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_SELECT_ROW],
- node, -1);
-}
-
-void
-gtk_ctree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_UNSELECT_ROW],
- node, -1);
-}
-
-void
-gtk_ctree_select_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- gtk_ctree_real_select_recursive (ctree, node, TRUE);
-}
-
-void
-gtk_ctree_unselect_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- gtk_ctree_real_select_recursive (ctree, node, FALSE);
-}
-
-void
-gtk_ctree_real_select_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint state)
-{
- GtkCList *clist;
- gboolean thaw = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- if ((state &&
- (clist->selection_mode == GTK_SELECTION_BROWSE ||
- clist->selection_mode == GTK_SELECTION_SINGLE)) ||
- (!state && clist->selection_mode == GTK_SELECTION_BROWSE))
- return;
-
- if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node)))
- {
- gtk_clist_freeze (clist);
- thaw = TRUE;
- }
-
- if (clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- if (state)
- gtk_ctree_post_recursive (ctree, node,
- GTK_CTREE_FUNC (tree_select), NULL);
- else
- gtk_ctree_post_recursive (ctree, node,
- GTK_CTREE_FUNC (tree_unselect), NULL);
-
- if (thaw)
- gtk_clist_thaw (clist);
-}
-
-
-/***********************************************************
- * Analogons of GtkCList functions *
- ***********************************************************/
-
-
-void
-gtk_ctree_node_set_text (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- const gchar *text)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return;
-
- clist = GTK_CLIST (ctree);
-
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, &(GTK_CTREE_ROW (node)->row), column, GTK_CELL_TEXT,
- text, 0, NULL, NULL);
-
- tree_draw_node (ctree, node);
-}
-
-
-/**
- * gtk_ctree_node_set_pixmap:
- * @mask: (allow-none):
- */
-void
-gtk_ctree_node_set_pixmap (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
- g_return_if_fail (pixmap != NULL);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return;
-
- g_object_ref (pixmap);
- if (mask)
- g_object_ref (mask);
-
- clist = GTK_CLIST (ctree);
-
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, &(GTK_CTREE_ROW (node)->row), column, GTK_CELL_PIXMAP,
- NULL, 0, pixmap, mask);
-
- tree_draw_node (ctree, node);
-}
-
-
-/**
- * gtk_ctree_node_set_pixtext:
- * @mask: (allow-none):
- */
-void
-gtk_ctree_node_set_pixtext (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
- if (column != ctree->tree_column)
- g_return_if_fail (pixmap != NULL);
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (pixmap)
- {
- g_object_ref (pixmap);
- if (mask)
- g_object_ref (mask);
- }
-
- GTK_CLIST_GET_CLASS (clist)->set_cell_contents
- (clist, &(GTK_CTREE_ROW (node)->row), column, GTK_CELL_PIXTEXT,
- text, spacing, pixmap, mask);
-
- tree_draw_node (ctree, node);
-}
-
-
-/**
- * gtk_ctree_set_node_info:
- * @pixmap_closed: (allow-none):
- * @mask_closed: (allow-none):
- * @pixmap_opened: (allow-none):
- * @mask_opened: (allow-none):
- */
-void
-gtk_ctree_set_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded)
-{
- gboolean old_leaf;
- gboolean old_expanded;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- old_leaf = GTK_CTREE_ROW (node)->is_leaf;
- old_expanded = GTK_CTREE_ROW (node)->expanded;
-
- if (is_leaf && GTK_CTREE_ROW (node)->children)
- {
- GtkCTreeNode *work;
- GtkCTreeNode *ptr;
-
- work = GTK_CTREE_ROW (node)->children;
- while (work)
- {
- ptr = work;
- work = GTK_CTREE_ROW (work)->sibling;
- gtk_ctree_remove_node (ctree, ptr);
- }
- }
-
- set_node_info (ctree, node, text, spacing, pixmap_closed, mask_closed,
- pixmap_opened, mask_opened, is_leaf, expanded);
-
- if (!is_leaf && !old_leaf)
- {
- GTK_CTREE_ROW (node)->expanded = old_expanded;
- if (expanded && !old_expanded)
- gtk_ctree_expand (ctree, node);
- else if (!expanded && old_expanded)
- gtk_ctree_collapse (ctree, node);
- }
-
- GTK_CTREE_ROW (node)->expanded = (is_leaf) ? FALSE : expanded;
-
- tree_draw_node (ctree, node);
-}
-
-void
-gtk_ctree_node_set_shift (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gint vertical,
- gint horizontal)
-{
- GtkCList *clist;
- GtkRequisition requisition;
- gboolean visible = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return;
-
- clist = GTK_CLIST (ctree);
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- visible = gtk_ctree_is_viewable (ctree, node);
- if (visible)
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (node)->row, column, &requisition);
- }
-
- GTK_CTREE_ROW (node)->row.cell[column].vertical = vertical;
- GTK_CTREE_ROW (node)->row.cell[column].horizontal = horizontal;
-
- if (visible)
- column_auto_resize (clist, &GTK_CTREE_ROW (node)->row,
- column, requisition.width);
-
- tree_draw_node (ctree, node);
-}
-
-static void
-remove_grab (GtkCList *clist)
-{
- if (gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (clist))) &&
- GTK_WIDGET_HAS_GRAB (clist))
- {
- gtk_grab_remove (GTK_WIDGET (clist));
- gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (clist)),
- GDK_CURRENT_TIME);
- }
-
- if (clist->htimer)
- {
- g_source_remove (clist->htimer);
- clist->htimer = 0;
- }
-
- if (clist->vtimer)
- {
- g_source_remove (clist->vtimer);
- clist->vtimer = 0;
- }
-}
-
-void
-gtk_ctree_node_set_selectable (GtkCTree *ctree,
- GtkCTreeNode *node,
- gboolean selectable)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (selectable == GTK_CTREE_ROW (node)->row.selectable)
- return;
-
- GTK_CTREE_ROW (node)->row.selectable = selectable;
-
- if (!selectable && GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED)
- {
- GtkCList *clist;
-
- clist = GTK_CLIST (ctree);
-
- if (clist->anchor >= 0 &&
- clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- clist->drag_button = 0;
- remove_grab (clist);
-
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
- }
- gtk_ctree_unselect (ctree, node);
- }
-}
-
-gboolean
-gtk_ctree_node_get_selectable (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_val_if_fail (node != NULL, FALSE);
-
- return GTK_CTREE_ROW (node)->row.selectable;
-}
-
-GtkCellType
-gtk_ctree_node_get_cell_type (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), -1);
- g_return_val_if_fail (node != NULL, -1);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return -1;
-
- return GTK_CTREE_ROW (node)->row.cell[column].type;
-}
-
-gboolean
-gtk_ctree_node_get_text (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gchar **text)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return FALSE;
-
- if (GTK_CTREE_ROW (node)->row.cell[column].type != GTK_CELL_TEXT)
- return FALSE;
-
- if (text)
- *text = GTK_CELL_TEXT (GTK_CTREE_ROW (node)->row.cell[column])->text;
-
- return TRUE;
-}
-
-gboolean
-gtk_ctree_node_get_pixmap (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GdkPixmap **pixmap,
- GdkBitmap **mask)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return FALSE;
-
- if (GTK_CTREE_ROW (node)->row.cell[column].type != GTK_CELL_PIXMAP)
- return FALSE;
-
- if (pixmap)
- *pixmap = GTK_CELL_PIXMAP (GTK_CTREE_ROW (node)->row.cell[column])->pixmap;
- if (mask)
- *mask = GTK_CELL_PIXMAP (GTK_CTREE_ROW (node)->row.cell[column])->mask;
-
- return TRUE;
-}
-
-gboolean
-gtk_ctree_node_get_pixtext (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap,
- GdkBitmap **mask)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return FALSE;
-
- if (GTK_CTREE_ROW (node)->row.cell[column].type != GTK_CELL_PIXTEXT)
- return FALSE;
-
- if (text)
- *text = GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[column])->text;
- if (spacing)
- *spacing = GTK_CELL_PIXTEXT (GTK_CTREE_ROW
- (node)->row.cell[column])->spacing;
- if (pixmap)
- *pixmap = GTK_CELL_PIXTEXT (GTK_CTREE_ROW
- (node)->row.cell[column])->pixmap;
- if (mask)
- *mask = GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[column])->mask;
-
- return TRUE;
-}
-
-gboolean
-gtk_ctree_get_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap_closed,
- GdkBitmap **mask_closed,
- GdkPixmap **pixmap_opened,
- GdkBitmap **mask_opened,
- gboolean *is_leaf,
- gboolean *expanded)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- if (text)
- *text = GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->text;
- if (spacing)
- *spacing = GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->spacing;
- if (pixmap_closed)
- *pixmap_closed = GTK_CTREE_ROW (node)->pixmap_closed;
- if (mask_closed)
- *mask_closed = GTK_CTREE_ROW (node)->mask_closed;
- if (pixmap_opened)
- *pixmap_opened = GTK_CTREE_ROW (node)->pixmap_opened;
- if (mask_opened)
- *mask_opened = GTK_CTREE_ROW (node)->mask_opened;
- if (is_leaf)
- *is_leaf = GTK_CTREE_ROW (node)->is_leaf;
- if (expanded)
- *expanded = GTK_CTREE_ROW (node)->expanded;
-
- return TRUE;
-}
-
-void
-gtk_ctree_node_set_cell_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GtkStyle *style)
-{
- GtkCList *clist;
- GtkRequisition requisition;
- gboolean visible = FALSE;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- clist = GTK_CLIST (ctree);
-
- if (column < 0 || column >= clist->columns)
- return;
-
- if (GTK_CTREE_ROW (node)->row.cell[column].style == style)
- return;
-
- if (clist->column[column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- visible = gtk_ctree_is_viewable (ctree, node);
- if (visible)
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (node)->row, column, &requisition);
- }
-
- if (GTK_CTREE_ROW (node)->row.cell[column].style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gtk_style_detach (GTK_CTREE_ROW (node)->row.cell[column].style);
- g_object_unref (GTK_CTREE_ROW (node)->row.cell[column].style);
- }
-
- GTK_CTREE_ROW (node)->row.cell[column].style = style;
-
- if (GTK_CTREE_ROW (node)->row.cell[column].style)
- {
- g_object_ref (GTK_CTREE_ROW (node)->row.cell[column].style);
-
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- GTK_CTREE_ROW (node)->row.cell[column].style =
- gtk_style_attach (GTK_CTREE_ROW (node)->row.cell[column].style,
- clist->clist_window);
- }
-
- if (visible)
- column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, column,
- requisition.width);
-
- tree_draw_node (ctree, node);
-}
-
-GtkStyle *
-gtk_ctree_node_get_cell_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (node != NULL, NULL);
-
- if (column < 0 || column >= GTK_CLIST (ctree)->columns)
- return NULL;
-
- return GTK_CTREE_ROW (node)->row.cell[column].style;
-}
-
-void
-gtk_ctree_node_set_row_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkStyle *style)
-{
- GtkCList *clist;
- GtkRequisition requisition;
- gboolean visible;
- gint *old_width = NULL;
- gint i;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- clist = GTK_CLIST (ctree);
-
- if (GTK_CTREE_ROW (node)->row.style == style)
- return;
-
- visible = gtk_ctree_is_viewable (ctree, node);
- if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- old_width = g_new (gint, clist->columns);
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- {
- GTK_CLIST_GET_CLASS (clist)->cell_size_request
- (clist, &GTK_CTREE_ROW (node)->row, i, &requisition);
- old_width[i] = requisition.width;
- }
- }
-
- if (GTK_CTREE_ROW (node)->row.style)
- {
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gtk_style_detach (GTK_CTREE_ROW (node)->row.style);
- g_object_unref (GTK_CTREE_ROW (node)->row.style);
- }
-
- GTK_CTREE_ROW (node)->row.style = style;
-
- if (GTK_CTREE_ROW (node)->row.style)
- {
- g_object_ref (GTK_CTREE_ROW (node)->row.style);
-
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- GTK_CTREE_ROW (node)->row.style =
- gtk_style_attach (GTK_CTREE_ROW (node)->row.style,
- clist->clist_window);
- }
-
- if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- for (i = 0; i < clist->columns; i++)
- if (clist->column[i].auto_resize)
- column_auto_resize (clist, &GTK_CTREE_ROW (node)->row, i,
- old_width[i]);
- g_free (old_width);
- }
- tree_draw_node (ctree, node);
-}
-
-GtkStyle *
-gtk_ctree_node_get_row_style (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
- g_return_val_if_fail (node != NULL, NULL);
-
- return GTK_CTREE_ROW (node)->row.style;
-}
-
-void
-gtk_ctree_node_set_foreground (GtkCTree *ctree,
- GtkCTreeNode *node,
- const GdkColor *color)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (color)
- {
- GTK_CTREE_ROW (node)->row.foreground = *color;
- GTK_CTREE_ROW (node)->row.fg_set = TRUE;
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
- &GTK_CTREE_ROW (node)->row.foreground,
- FALSE, TRUE);
- }
- else
- GTK_CTREE_ROW (node)->row.fg_set = FALSE;
-
- tree_draw_node (ctree, node);
-}
-
-void
-gtk_ctree_node_set_background (GtkCTree *ctree,
- GtkCTreeNode *node,
- const GdkColor *color)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- if (color)
- {
- GTK_CTREE_ROW (node)->row.background = *color;
- GTK_CTREE_ROW (node)->row.bg_set = TRUE;
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (ctree)),
- &GTK_CTREE_ROW (node)->row.background,
- FALSE, TRUE);
- }
- else
- GTK_CTREE_ROW (node)->row.bg_set = FALSE;
-
- tree_draw_node (ctree, node);
-}
-
-void
-gtk_ctree_node_set_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- gtk_ctree_node_set_row_data_full (ctree, node, data, NULL);
-}
-
-void
-gtk_ctree_node_set_row_data_full (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GDestroyNotify destroy)
-{
- GDestroyNotify dnotify;
- gpointer ddata;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (node != NULL);
-
- dnotify = GTK_CTREE_ROW (node)->row.destroy;
- ddata = GTK_CTREE_ROW (node)->row.data;
-
- GTK_CTREE_ROW (node)->row.data = data;
- GTK_CTREE_ROW (node)->row.destroy = destroy;
-
- if (dnotify)
- dnotify (ddata);
-}
-
-gpointer
-gtk_ctree_node_get_row_data (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL);
-
- return node ? GTK_CTREE_ROW (node)->row.data : NULL;
-}
-
-void
-gtk_ctree_node_moveto (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gfloat row_align,
- gfloat col_align)
-{
- gint row = -1;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- while (node && !gtk_ctree_is_viewable (ctree, node))
- node = GTK_CTREE_ROW (node)->parent;
-
- if (node)
- row = g_list_position (clist->row_list, (GList *)node);
-
- gtk_clist_moveto (clist, row, column, row_align, col_align);
-}
-
-GtkVisibility
-gtk_ctree_node_is_visible (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- gint row;
-
- g_return_val_if_fail (ctree != NULL, 0);
- g_return_val_if_fail (node != NULL, 0);
-
- row = g_list_position (GTK_CLIST (ctree)->row_list, (GList*) node);
- return gtk_clist_row_is_visible (GTK_CLIST (ctree), row);
-}
-
-
-/***********************************************************
- * GtkCTree specific functions *
- ***********************************************************/
-
-void
-gtk_ctree_set_indent (GtkCTree *ctree,
- gint indent)
-{
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (indent >= 0);
-
- if (indent == ctree->tree_indent)
- return;
-
- clist = GTK_CLIST (ctree);
- ctree->tree_indent = indent;
-
- if (clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- gtk_clist_set_column_width
- (clist, ctree->tree_column,
- gtk_clist_optimal_column_width (clist, ctree->tree_column));
- else
- CLIST_REFRESH (ctree);
-}
-
-void
-gtk_ctree_set_spacing (GtkCTree *ctree,
- gint spacing)
-{
- GtkCList *clist;
- gint old_spacing;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
- g_return_if_fail (spacing >= 0);
-
- if (spacing == ctree->tree_spacing)
- return;
-
- clist = GTK_CLIST (ctree);
-
- old_spacing = ctree->tree_spacing;
- ctree->tree_spacing = spacing;
-
- if (clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- gtk_clist_set_column_width (clist, ctree->tree_column,
- clist->column[ctree->tree_column].width +
- spacing - old_spacing);
- else
- CLIST_REFRESH (ctree);
-}
-
-void
-gtk_ctree_set_show_stub (GtkCTree *ctree,
- gboolean show_stub)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- show_stub = show_stub != FALSE;
-
- if (show_stub != ctree->show_stub)
- {
- GtkCList *clist;
-
- clist = GTK_CLIST (ctree);
- ctree->show_stub = show_stub;
-
- if (CLIST_UNFROZEN (clist) && clist->rows &&
- gtk_clist_row_is_visible (clist, 0) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row
- (clist, NULL, 0, GTK_CLIST_ROW (clist->row_list));
- }
-}
-
-void
-gtk_ctree_set_line_style (GtkCTree *ctree,
- GtkCTreeLineStyle line_style)
-{
- GtkCList *clist;
- GtkCTreeLineStyle old_style;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (line_style == ctree->line_style)
- return;
-
- clist = GTK_CLIST (ctree);
-
- old_style = ctree->line_style;
- ctree->line_style = line_style;
-
- if (clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- if (old_style == GTK_CTREE_LINES_TABBED)
- gtk_clist_set_column_width
- (clist, ctree->tree_column,
- clist->column[ctree->tree_column].width - 3);
- else if (line_style == GTK_CTREE_LINES_TABBED)
- gtk_clist_set_column_width
- (clist, ctree->tree_column,
- clist->column[ctree->tree_column].width + 3);
- }
-
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- {
- gint8 dashes[] = { 1, 1 };
-
- switch (line_style)
- {
- case GTK_CTREE_LINES_SOLID:
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gdk_gc_set_line_attributes (ctree->lines_gc, 1, GDK_LINE_SOLID,
- GDK_CAP_BUTT, GDK_JOIN_MITER);
- break;
- case GTK_CTREE_LINES_DOTTED:
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gdk_gc_set_line_attributes (ctree->lines_gc, 1,
- GDK_LINE_ON_OFF_DASH, GDK_CAP_BUTT, GDK_JOIN_MITER);
- gdk_gc_set_dashes (ctree->lines_gc, 0, dashes, G_N_ELEMENTS (dashes));
- break;
- case GTK_CTREE_LINES_TABBED:
- if (gtk_widget_get_realized (GTK_WIDGET (ctree)))
- gdk_gc_set_line_attributes (ctree->lines_gc, 1, GDK_LINE_SOLID,
- GDK_CAP_BUTT, GDK_JOIN_MITER);
- break;
- case GTK_CTREE_LINES_NONE:
- break;
- default:
- return;
- }
- CLIST_REFRESH (ctree);
- }
-}
-
-void
-gtk_ctree_set_expander_style (GtkCTree *ctree,
- GtkCTreeExpanderStyle expander_style)
-{
- GtkCList *clist;
- GtkCTreeExpanderStyle old_style;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- if (expander_style == ctree->expander_style)
- return;
-
- clist = GTK_CLIST (ctree);
-
- old_style = ctree->expander_style;
- ctree->expander_style = expander_style;
-
- if (clist->column[ctree->tree_column].auto_resize &&
- !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist))
- {
- gint new_width;
-
- new_width = clist->column[ctree->tree_column].width;
- switch (old_style)
- {
- case GTK_CTREE_EXPANDER_NONE:
- break;
- case GTK_CTREE_EXPANDER_TRIANGLE:
- new_width -= PM_SIZE + 3;
- break;
- case GTK_CTREE_EXPANDER_SQUARE:
- case GTK_CTREE_EXPANDER_CIRCULAR:
- new_width -= PM_SIZE + 1;
- break;
- }
-
- switch (expander_style)
- {
- case GTK_CTREE_EXPANDER_NONE:
- break;
- case GTK_CTREE_EXPANDER_TRIANGLE:
- new_width += PM_SIZE + 3;
- break;
- case GTK_CTREE_EXPANDER_SQUARE:
- case GTK_CTREE_EXPANDER_CIRCULAR:
- new_width += PM_SIZE + 1;
- break;
- }
-
- gtk_clist_set_column_width (clist, ctree->tree_column, new_width);
- }
-
- if (GTK_WIDGET_DRAWABLE (clist))
- CLIST_REFRESH (clist);
-}
-
-
-/***********************************************************
- * Tree sorting functions *
- ***********************************************************/
-
-
-static void
-tree_sort (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data)
-{
- GtkCTreeNode *list_start;
- GtkCTreeNode *cmp;
- GtkCTreeNode *work;
- GtkCList *clist;
-
- clist = GTK_CLIST (ctree);
-
- if (node)
- list_start = GTK_CTREE_ROW (node)->children;
- else
- list_start = GTK_CTREE_NODE (clist->row_list);
-
- while (list_start)
- {
- cmp = list_start;
- work = GTK_CTREE_ROW (cmp)->sibling;
- while (work)
- {
- if (clist->sort_type == GTK_SORT_ASCENDING)
- {
- if (clist->compare
- (clist, GTK_CTREE_ROW (work), GTK_CTREE_ROW (cmp)) < 0)
- cmp = work;
- }
- else
- {
- if (clist->compare
- (clist, GTK_CTREE_ROW (work), GTK_CTREE_ROW (cmp)) > 0)
- cmp = work;
- }
- work = GTK_CTREE_ROW (work)->sibling;
- }
- if (cmp == list_start)
- list_start = GTK_CTREE_ROW (cmp)->sibling;
- else
- {
- gtk_ctree_unlink (ctree, cmp, FALSE);
- gtk_ctree_link (ctree, cmp, node, list_start, FALSE);
- }
- }
-}
-
-void
-gtk_ctree_sort_recursive (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- GtkCTreeNode *focus_node = NULL;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- gtk_clist_freeze (clist);
-
- if (clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- if (!node || (node && gtk_ctree_is_viewable (ctree, node)))
- focus_node =
- GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row));
-
- gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_sort), NULL);
-
- if (!node)
- tree_sort (ctree, NULL, NULL);
-
- if (focus_node)
- {
- clist->focus_row = g_list_position (clist->row_list,(GList *)focus_node);
- clist->undo_anchor = clist->focus_row;
- }
-
- gtk_clist_thaw (clist);
-}
-
-static void
-real_sort_list (GtkCList *clist)
-{
- gtk_ctree_sort_recursive (GTK_CTREE (clist), NULL);
-}
-
-void
-gtk_ctree_sort_node (GtkCTree *ctree,
- GtkCTreeNode *node)
-{
- GtkCList *clist;
- GtkCTreeNode *focus_node = NULL;
-
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- clist = GTK_CLIST (ctree);
-
- gtk_clist_freeze (clist);
-
- if (clist->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
- }
-
- if (!node || (node && gtk_ctree_is_viewable (ctree, node)))
- focus_node = GTK_CTREE_NODE
- (g_list_nth (clist->row_list, clist->focus_row));
-
- tree_sort (ctree, node, NULL);
-
- if (focus_node)
- {
- clist->focus_row = g_list_position (clist->row_list,(GList *)focus_node);
- clist->undo_anchor = clist->focus_row;
- }
-
- gtk_clist_thaw (clist);
-}
-
-/************************************************************************/
-
-static void
-fake_unselect_all (GtkCList *clist,
- gint row)
-{
- GList *list;
- GList *focus_node = NULL;
-
- if (row >= 0 && (focus_node = g_list_nth (clist->row_list, row)))
- {
- if (GTK_CTREE_ROW (focus_node)->row.state == GTK_STATE_NORMAL &&
- GTK_CTREE_ROW (focus_node)->row.selectable)
- {
- GTK_CTREE_ROW (focus_node)->row.state = GTK_STATE_SELECTED;
-
- if (CLIST_UNFROZEN (clist) &&
- gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE)
- GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row,
- GTK_CLIST_ROW (focus_node));
- }
- }
-
- clist->undo_selection = clist->selection;
- clist->selection = NULL;
- clist->selection_end = NULL;
-
- for (list = clist->undo_selection; list; list = list->next)
- {
- if (list->data == focus_node)
- continue;
-
- GTK_CTREE_ROW ((GList *)(list->data))->row.state = GTK_STATE_NORMAL;
- tree_draw_node (GTK_CTREE (clist), GTK_CTREE_NODE (list->data));
- }
-}
-
-static GList *
-selection_find (GtkCList *clist,
- gint row_number,
- GList *row_list_element)
-{
- return g_list_find (clist->selection, row_list_element);
-}
-
-static void
-resync_selection (GtkCList *clist, GdkEvent *event)
-{
- GtkCTree *ctree;
- GList *list;
- GtkCTreeNode *node;
- gint i;
- gint e;
- gint row;
- gboolean unselect;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- if (clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- if (clist->anchor < 0 || clist->drag_pos < 0)
- return;
-
- ctree = GTK_CTREE (clist);
-
- clist->freeze_count++;
-
- i = MIN (clist->anchor, clist->drag_pos);
- e = MAX (clist->anchor, clist->drag_pos);
-
- if (clist->undo_selection)
- {
- list = clist->selection;
- clist->selection = clist->undo_selection;
- clist->selection_end = g_list_last (clist->selection);
- clist->undo_selection = list;
- list = clist->selection;
-
- while (list)
- {
- node = list->data;
- list = list->next;
-
- unselect = TRUE;
-
- if (gtk_ctree_is_viewable (ctree, node))
- {
- row = g_list_position (clist->row_list, (GList *)node);
- if (row >= i && row <= e)
- unselect = FALSE;
- }
- if (unselect && GTK_CTREE_ROW (node)->row.selectable)
- {
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_SELECTED;
- gtk_ctree_unselect (ctree, node);
- clist->undo_selection = g_list_prepend (clist->undo_selection,
- node);
- }
- }
- }
-
- if (clist->anchor < clist->drag_pos)
- {
- for (node = GTK_CTREE_NODE (g_list_nth (clist->row_list, i)); i <= e;
- i++, node = GTK_CTREE_NODE_NEXT (node))
- if (GTK_CTREE_ROW (node)->row.selectable)
- {
- if (g_list_find (clist->selection, node))
- {
- if (GTK_CTREE_ROW (node)->row.state == GTK_STATE_NORMAL)
- {
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_SELECTED;
- gtk_ctree_unselect (ctree, node);
- clist->undo_selection =
- g_list_prepend (clist->undo_selection, node);
- }
- }
- else if (GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED)
- {
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_NORMAL;
- clist->undo_unselection =
- g_list_prepend (clist->undo_unselection, node);
- }
- }
- }
- else
- {
- for (node = GTK_CTREE_NODE (g_list_nth (clist->row_list, e)); i <= e;
- e--, node = GTK_CTREE_NODE_PREV (node))
- if (GTK_CTREE_ROW (node)->row.selectable)
- {
- if (g_list_find (clist->selection, node))
- {
- if (GTK_CTREE_ROW (node)->row.state == GTK_STATE_NORMAL)
- {
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_SELECTED;
- gtk_ctree_unselect (ctree, node);
- clist->undo_selection =
- g_list_prepend (clist->undo_selection, node);
- }
- }
- else if (GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED)
- {
- GTK_CTREE_ROW (node)->row.state = GTK_STATE_NORMAL;
- clist->undo_unselection =
- g_list_prepend (clist->undo_unselection, node);
- }
- }
- }
-
- clist->undo_unselection = g_list_reverse (clist->undo_unselection);
- for (list = clist->undo_unselection; list; list = list->next)
- gtk_ctree_select (ctree, list->data);
-
- clist->anchor = -1;
- clist->drag_pos = -1;
-
- if (!CLIST_UNFROZEN (clist))
- clist->freeze_count--;
-}
-
-static void
-real_undo_selection (GtkCList *clist)
-{
- GtkCTree *ctree;
- GList *work;
-
- g_return_if_fail (GTK_IS_CTREE (clist));
-
- if (clist->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- if (!(clist->undo_selection || clist->undo_unselection))
- {
- gtk_clist_unselect_all (clist);
- return;
- }
-
- ctree = GTK_CTREE (clist);
-
- for (work = clist->undo_selection; work; work = work->next)
- if (GTK_CTREE_ROW (work->data)->row.selectable)
- gtk_ctree_select (ctree, GTK_CTREE_NODE (work->data));
-
- for (work = clist->undo_unselection; work; work = work->next)
- if (GTK_CTREE_ROW (work->data)->row.selectable)
- gtk_ctree_unselect (ctree, GTK_CTREE_NODE (work->data));
-
- if (gtk_widget_has_focus (GTK_WIDGET (clist)) && clist->focus_row != clist->undo_anchor)
- {
- clist->focus_row = clist->undo_anchor;
- gtk_widget_queue_draw (GTK_WIDGET (clist));
- }
- else
- clist->focus_row = clist->undo_anchor;
-
- clist->undo_anchor = -1;
-
- g_list_free (clist->undo_selection);
- g_list_free (clist->undo_unselection);
- clist->undo_selection = NULL;
- clist->undo_unselection = NULL;
-
- if (ROW_TOP_YPIXEL (clist, clist->focus_row) + clist->row_height >
- clist->clist_window_height)
- gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
- else if (ROW_TOP_YPIXEL (clist, clist->focus_row) < 0)
- gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
-
-}
-
-void
-gtk_ctree_set_drag_compare_func (GtkCTree *ctree,
- GtkCTreeCompareDragFunc cmp_func)
-{
- g_return_if_fail (GTK_IS_CTREE (ctree));
-
- ctree->drag_compare = cmp_func;
-}
-
-static gboolean
-check_drag (GtkCTree *ctree,
- GtkCTreeNode *drag_source,
- GtkCTreeNode *drag_target,
- GtkCListDragPos insert_pos)
-{
- g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE);
-
- if (drag_source && drag_source != drag_target &&
- (!GTK_CTREE_ROW (drag_source)->children ||
- !gtk_ctree_is_ancestor (ctree, drag_source, drag_target)))
- {
- switch (insert_pos)
- {
- case GTK_CLIST_DRAG_NONE:
- return FALSE;
- case GTK_CLIST_DRAG_AFTER:
- if (GTK_CTREE_ROW (drag_target)->sibling != drag_source)
- return (!ctree->drag_compare ||
- ctree->drag_compare (ctree,
- drag_source,
- GTK_CTREE_ROW (drag_target)->parent,
- GTK_CTREE_ROW (drag_target)->sibling));
- break;
- case GTK_CLIST_DRAG_BEFORE:
- if (GTK_CTREE_ROW (drag_source)->sibling != drag_target)
- return (!ctree->drag_compare ||
- ctree->drag_compare (ctree,
- drag_source,
- GTK_CTREE_ROW (drag_target)->parent,
- drag_target));
- break;
- case GTK_CLIST_DRAG_INTO:
- if (!GTK_CTREE_ROW (drag_target)->is_leaf &&
- GTK_CTREE_ROW (drag_target)->children != drag_source)
- return (!ctree->drag_compare ||
- ctree->drag_compare (ctree,
- drag_source,
- drag_target,
- GTK_CTREE_ROW (drag_target)->children));
- break;
- }
- }
- return FALSE;
-}
-
-
-
-/************************************/
-static void
-drag_dest_info_destroy (gpointer data)
-{
- GtkCListDestInfo *info = data;
-
- g_free (info);
-}
-
-static void
-drag_dest_cell (GtkCList *clist,
- gint x,
- gint y,
- GtkCListDestInfo *dest_info)
-{
- GtkWidget *widget;
-
- widget = GTK_WIDGET (clist);
-
- dest_info->insert_pos = GTK_CLIST_DRAG_NONE;
-
- y -= (GTK_CONTAINER (widget)->border_width +
- widget->style->ythickness + clist->column_title_area.height);
- dest_info->cell.row = ROW_FROM_YPIXEL (clist, y);
-
- if (dest_info->cell.row >= clist->rows)
- {
- dest_info->cell.row = clist->rows - 1;
- y = ROW_TOP_YPIXEL (clist, dest_info->cell.row) + clist->row_height;
- }
- if (dest_info->cell.row < -1)
- dest_info->cell.row = -1;
-
- x -= GTK_CONTAINER (widget)->border_width + widget->style->xthickness;
-
- dest_info->cell.column = COLUMN_FROM_XPIXEL (clist, x);
-
- if (dest_info->cell.row >= 0)
- {
- gint y_delta;
- gint h = 0;
-
- y_delta = y - ROW_TOP_YPIXEL (clist, dest_info->cell.row);
-
- if (GTK_CLIST_DRAW_DRAG_RECT(clist) &&
- !GTK_CTREE_ROW (g_list_nth (clist->row_list,
- dest_info->cell.row))->is_leaf)
- {
- dest_info->insert_pos = GTK_CLIST_DRAG_INTO;
- h = clist->row_height / 4;
- }
- else if (GTK_CLIST_DRAW_DRAG_LINE(clist))
- {
- dest_info->insert_pos = GTK_CLIST_DRAG_BEFORE;
- h = clist->row_height / 2;
- }
-
- if (GTK_CLIST_DRAW_DRAG_LINE(clist))
- {
- if (y_delta < h)
- dest_info->insert_pos = GTK_CLIST_DRAG_BEFORE;
- else if (clist->row_height - y_delta < h)
- dest_info->insert_pos = GTK_CLIST_DRAG_AFTER;
- }
- }
-}
-
-static void
-gtk_ctree_drag_begin (GtkWidget *widget,
- GdkDragContext *context)
-{
- GtkCList *clist;
- GtkCTree *ctree;
- gboolean use_icons;
-
- g_return_if_fail (GTK_IS_CTREE (widget));
- g_return_if_fail (context != NULL);
-
- clist = GTK_CLIST (widget);
- ctree = GTK_CTREE (widget);
-
- use_icons = GTK_CLIST_USE_DRAG_ICONS (clist);
- GTK_CLIST_UNSET_FLAG (clist, CLIST_USE_DRAG_ICONS);
- GTK_WIDGET_CLASS (parent_class)->drag_begin (widget, context);
-
- if (use_icons)
- {
- GtkCTreeNode *node;
-
- GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS);
- node = GTK_CTREE_NODE (g_list_nth (clist->row_list,
- clist->click_cell.row));
- if (node)
- {
- if (GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap)
- {
- gtk_drag_set_icon_pixmap
- (context,
- gtk_widget_get_colormap (widget),
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap,
- GTK_CELL_PIXTEXT
- (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask,
- -2, -2);
- return;
- }
- }
- gtk_drag_set_icon_default (context);
- }
-}
-
-static gint
-gtk_ctree_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time)
-{
- GtkCList *clist;
- GtkCTree *ctree;
- GtkCListDestInfo new_info;
- GtkCListDestInfo *dest_info;
-
- g_return_val_if_fail (GTK_IS_CTREE (widget), FALSE);
-
- clist = GTK_CLIST (widget);
- ctree = GTK_CTREE (widget);
-
- dest_info = g_dataset_get_data (context, "gtk-clist-drag-dest");
-
- if (!dest_info)
- {
- dest_info = g_new (GtkCListDestInfo, 1);
-
- dest_info->cell.row = -1;
- dest_info->cell.column = -1;
- dest_info->insert_pos = GTK_CLIST_DRAG_NONE;
-
- g_dataset_set_data_full (context, "gtk-clist-drag-dest", dest_info,
- drag_dest_info_destroy);
- }
-
- drag_dest_cell (clist, x, y, &new_info);
-
- if (GTK_CLIST_REORDERABLE (clist))
- {
- GList *list;
- GdkAtom atom = gdk_atom_intern_static_string ("gtk-clist-drag-reorder");
-
- list = context->targets;
- while (list)
- {
- if (atom == GDK_POINTER_TO_ATOM (list->data))
- break;
- list = list->next;
- }
-
- if (list)
- {
- GtkCTreeNode *drag_source;
- GtkCTreeNode *drag_target;
-
- drag_source = GTK_CTREE_NODE (g_list_nth (clist->row_list,
- clist->click_cell.row));
- drag_target = GTK_CTREE_NODE (g_list_nth (clist->row_list,
- new_info.cell.row));
-
- if (gtk_drag_get_source_widget (context) != widget ||
- !check_drag (ctree, drag_source, drag_target,
- new_info.insert_pos))
- {
- if (dest_info->cell.row < 0)
- {
- gdk_drag_status (context, GDK_ACTION_DEFAULT, time);
- return FALSE;
- }
- return TRUE;
- }
-
- if (new_info.cell.row != dest_info->cell.row ||
- (new_info.cell.row == dest_info->cell.row &&
- dest_info->insert_pos != new_info.insert_pos))
- {
- if (dest_info->cell.row >= 0)
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist,
- g_list_nth (clist->row_list, dest_info->cell.row)->data,
- dest_info->cell.row, dest_info->insert_pos);
-
- dest_info->insert_pos = new_info.insert_pos;
- dest_info->cell.row = new_info.cell.row;
- dest_info->cell.column = new_info.cell.column;
-
- GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight
- (clist,
- g_list_nth (clist->row_list, dest_info->cell.row)->data,
- dest_info->cell.row, dest_info->insert_pos);
-
- clist->drag_highlight_row = dest_info->cell.row;
- clist->drag_highlight_pos = dest_info->insert_pos;
-
- gdk_drag_status (context, context->suggested_action, time);
- }
- return TRUE;
- }
- }
-
- dest_info->insert_pos = new_info.insert_pos;
- dest_info->cell.row = new_info.cell.row;
- dest_info->cell.column = new_info.cell.column;
- return TRUE;
-}
-
-static void
-gtk_ctree_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint32 time)
-{
- GtkCTree *ctree;
- GtkCList *clist;
-
- g_return_if_fail (GTK_IS_CTREE (widget));
- g_return_if_fail (context != NULL);
- g_return_if_fail (selection_data != NULL);
-
- ctree = GTK_CTREE (widget);
- clist = GTK_CLIST (widget);
-
- if (GTK_CLIST_REORDERABLE (clist) &&
- gtk_drag_get_source_widget (context) == widget &&
- selection_data->target ==
- gdk_atom_intern_static_string ("gtk-clist-drag-reorder") &&
- selection_data->format == 8 &&
- selection_data->length == sizeof (GtkCListCellInfo))
- {
- GtkCListCellInfo *source_info;
-
- source_info = (GtkCListCellInfo *)(selection_data->data);
- if (source_info)
- {
- GtkCListDestInfo dest_info;
- GtkCTreeNode *source_node;
- GtkCTreeNode *dest_node;
-
- drag_dest_cell (clist, x, y, &dest_info);
-
- source_node = GTK_CTREE_NODE (g_list_nth (clist->row_list,
- source_info->row));
- dest_node = GTK_CTREE_NODE (g_list_nth (clist->row_list,
- dest_info.cell.row));
-
- if (!source_node || !dest_node)
- return;
-
- switch (dest_info.insert_pos)
- {
- case GTK_CLIST_DRAG_NONE:
- break;
- case GTK_CLIST_DRAG_INTO:
- if (check_drag (ctree, source_node, dest_node,
- dest_info.insert_pos))
- gtk_ctree_move (ctree, source_node, dest_node,
- GTK_CTREE_ROW (dest_node)->children);
- g_dataset_remove_data (context, "gtk-clist-drag-dest");
- break;
- case GTK_CLIST_DRAG_BEFORE:
- if (check_drag (ctree, source_node, dest_node,
- dest_info.insert_pos))
- gtk_ctree_move (ctree, source_node,
- GTK_CTREE_ROW (dest_node)->parent, dest_node);
- g_dataset_remove_data (context, "gtk-clist-drag-dest");
- break;
- case GTK_CLIST_DRAG_AFTER:
- if (check_drag (ctree, source_node, dest_node,
- dest_info.insert_pos))
- gtk_ctree_move (ctree, source_node,
- GTK_CTREE_ROW (dest_node)->parent,
- GTK_CTREE_ROW (dest_node)->sibling);
- g_dataset_remove_data (context, "gtk-clist-drag-dest");
- break;
- }
- }
- }
-}
-
-GType
-gtk_ctree_node_get_type (void)
-{
- static GType our_type = 0;
-
- if (our_type == 0)
- our_type = g_pointer_type_register_static ("GtkCTreeNode");
-
- return our_type;
-}
-
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkctree.h b/gtk/gtkctree.h
deleted file mode 100644
index a4aa83773b..0000000000
--- a/gtk/gtkctree.h
+++ /dev/null
@@ -1,445 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald
- * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
- *
- * GtkCTree widget for GTK+
- * Copyright (C) 1998 Lars Hamann and Stefan Jeske
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_CLIST_C__) || defined (__GTK_CTREE_C__)
-
-#ifndef __GTK_CTREE_H__
-#define __GTK_CTREE_H__
-
-#include <gtk/gtkclist.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_CTREE (gtk_ctree_get_type ())
-#define GTK_CTREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CTREE, GtkCTree))
-#define GTK_CTREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CTREE, GtkCTreeClass))
-#define GTK_IS_CTREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CTREE))
-#define GTK_IS_CTREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CTREE))
-#define GTK_CTREE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CTREE, GtkCTreeClass))
-
-#define GTK_CTREE_ROW(_node_) ((GtkCTreeRow *)(((GList *)(_node_))->data))
-#define GTK_CTREE_NODE(_node_) ((GtkCTreeNode *)((_node_)))
-#define GTK_CTREE_NODE_NEXT(_nnode_) ((GtkCTreeNode *)(((GList *)(_nnode_))->next))
-#define GTK_CTREE_NODE_PREV(_pnode_) ((GtkCTreeNode *)(((GList *)(_pnode_))->prev))
-#define GTK_CTREE_FUNC(_func_) ((GtkCTreeFunc)(_func_))
-
-#define GTK_TYPE_CTREE_NODE (gtk_ctree_node_get_type ())
-
-typedef enum
-{
- GTK_CTREE_POS_BEFORE,
- GTK_CTREE_POS_AS_CHILD,
- GTK_CTREE_POS_AFTER
-} GtkCTreePos;
-
-typedef enum
-{
- GTK_CTREE_LINES_NONE,
- GTK_CTREE_LINES_SOLID,
- GTK_CTREE_LINES_DOTTED,
- GTK_CTREE_LINES_TABBED
-} GtkCTreeLineStyle;
-
-typedef enum
-{
- GTK_CTREE_EXPANDER_NONE,
- GTK_CTREE_EXPANDER_SQUARE,
- GTK_CTREE_EXPANDER_TRIANGLE,
- GTK_CTREE_EXPANDER_CIRCULAR
-} GtkCTreeExpanderStyle;
-
-typedef enum
-{
- GTK_CTREE_EXPANSION_EXPAND,
- GTK_CTREE_EXPANSION_EXPAND_RECURSIVE,
- GTK_CTREE_EXPANSION_COLLAPSE,
- GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE,
- GTK_CTREE_EXPANSION_TOGGLE,
- GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE
-} GtkCTreeExpansionType;
-
-typedef struct _GtkCTree GtkCTree;
-typedef struct _GtkCTreeClass GtkCTreeClass;
-typedef struct _GtkCTreeRow GtkCTreeRow;
-typedef struct _GtkCTreeNode GtkCTreeNode;
-
-typedef void (*GtkCTreeFunc) (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-
-typedef gboolean (*GtkCTreeGNodeFunc) (GtkCTree *ctree,
- guint depth,
- GNode *gnode,
- GtkCTreeNode *cnode,
- gpointer data);
-
-typedef gboolean (*GtkCTreeCompareDragFunc) (GtkCTree *ctree,
- GtkCTreeNode *source_node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling);
-
-struct _GtkCTree
-{
- GtkCList clist;
-
- GdkGC *lines_gc;
-
- gint tree_indent;
- gint tree_spacing;
- gint tree_column;
-
- guint line_style : 2;
- guint expander_style : 2;
- guint show_stub : 1;
-
- GtkCTreeCompareDragFunc drag_compare;
-};
-
-struct _GtkCTreeClass
-{
- GtkCListClass parent_class;
-
- void (*tree_select_row) (GtkCTree *ctree,
- GtkCTreeNode *row,
- gint column);
- void (*tree_unselect_row) (GtkCTree *ctree,
- GtkCTreeNode *row,
- gint column);
- void (*tree_expand) (GtkCTree *ctree,
- GtkCTreeNode *node);
- void (*tree_collapse) (GtkCTree *ctree,
- GtkCTreeNode *node);
- void (*tree_move) (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling);
- void (*change_focus_row_expansion) (GtkCTree *ctree,
- GtkCTreeExpansionType action);
-};
-
-struct _GtkCTreeRow
-{
- GtkCListRow row;
-
- GtkCTreeNode *parent;
- GtkCTreeNode *sibling;
- GtkCTreeNode *children;
-
- GdkPixmap *pixmap_closed;
- GdkBitmap *mask_closed;
- GdkPixmap *pixmap_opened;
- GdkBitmap *mask_opened;
-
- guint16 level;
-
- guint is_leaf : 1;
- guint expanded : 1;
-};
-
-struct _GtkCTreeNode {
- GList list;
-};
-
-
-/***********************************************************
- * Creation, insertion, deletion *
- ***********************************************************/
-
-GType gtk_ctree_get_type (void) G_GNUC_CONST;
-GtkWidget * gtk_ctree_new_with_titles (gint columns,
- gint tree_column,
- gchar *titles[]);
-GtkWidget * gtk_ctree_new (gint columns,
- gint tree_column);
-GtkCTreeNode * gtk_ctree_insert_node (GtkCTree *ctree,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- gchar *text[],
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded);
-void gtk_ctree_remove_node (GtkCTree *ctree,
- GtkCTreeNode *node);
-GtkCTreeNode * gtk_ctree_insert_gnode (GtkCTree *ctree,
- GtkCTreeNode *parent,
- GtkCTreeNode *sibling,
- GNode *gnode,
- GtkCTreeGNodeFunc func,
- gpointer data);
-GNode * gtk_ctree_export_to_gnode (GtkCTree *ctree,
- GNode *parent,
- GNode *sibling,
- GtkCTreeNode *node,
- GtkCTreeGNodeFunc func,
- gpointer data);
-
-/***********************************************************
- * Generic recursive functions, querying / finding tree *
- * information *
- ***********************************************************/
-
-void gtk_ctree_post_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeFunc func,
- gpointer data);
-void gtk_ctree_post_recursive_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth,
- GtkCTreeFunc func,
- gpointer data);
-void gtk_ctree_pre_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeFunc func,
- gpointer data);
-void gtk_ctree_pre_recursive_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth,
- GtkCTreeFunc func,
- gpointer data);
-gboolean gtk_ctree_is_viewable (GtkCTree *ctree,
- GtkCTreeNode *node);
-GtkCTreeNode * gtk_ctree_last (GtkCTree *ctree,
- GtkCTreeNode *node);
-GtkCTreeNode * gtk_ctree_find_node_ptr (GtkCTree *ctree,
- GtkCTreeRow *ctree_row);
-GtkCTreeNode * gtk_ctree_node_nth (GtkCTree *ctree,
- guint row);
-gboolean gtk_ctree_find (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *child);
-gboolean gtk_ctree_is_ancestor (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *child);
-GtkCTreeNode * gtk_ctree_find_by_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-/* returns a GList of all GtkCTreeNodes with row->data == data. */
-GList * gtk_ctree_find_all_by_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-GtkCTreeNode * gtk_ctree_find_by_row_data_custom (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GCompareFunc func);
-/* returns a GList of all GtkCTreeNodes with row->data == data. */
-GList * gtk_ctree_find_all_by_row_data_custom (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GCompareFunc func);
-gboolean gtk_ctree_is_hot_spot (GtkCTree *ctree,
- gint x,
- gint y);
-
-/***********************************************************
- * Tree signals : move, expand, collapse, (un)select *
- ***********************************************************/
-
-void gtk_ctree_move (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkCTreeNode *new_parent,
- GtkCTreeNode *new_sibling);
-void gtk_ctree_expand (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_expand_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_expand_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth);
-void gtk_ctree_collapse (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_collapse_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_collapse_to_depth (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint depth);
-void gtk_ctree_toggle_expansion (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_toggle_expansion_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_select (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_select_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_unselect (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_unselect_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_real_select_recursive (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint state);
-
-/***********************************************************
- * Analogons of GtkCList functions *
- ***********************************************************/
-
-void gtk_ctree_node_set_text (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- const gchar *text);
-void gtk_ctree_node_set_pixmap (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-void gtk_ctree_node_set_pixtext (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap,
- GdkBitmap *mask);
-void gtk_ctree_set_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- const gchar *text,
- guint8 spacing,
- GdkPixmap *pixmap_closed,
- GdkBitmap *mask_closed,
- GdkPixmap *pixmap_opened,
- GdkBitmap *mask_opened,
- gboolean is_leaf,
- gboolean expanded);
-void gtk_ctree_node_set_shift (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gint vertical,
- gint horizontal);
-void gtk_ctree_node_set_selectable (GtkCTree *ctree,
- GtkCTreeNode *node,
- gboolean selectable);
-gboolean gtk_ctree_node_get_selectable (GtkCTree *ctree,
- GtkCTreeNode *node);
-GtkCellType gtk_ctree_node_get_cell_type (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column);
-gboolean gtk_ctree_node_get_text (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gchar **text);
-gboolean gtk_ctree_node_get_pixmap (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GdkPixmap **pixmap,
- GdkBitmap **mask);
-gboolean gtk_ctree_node_get_pixtext (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap,
- GdkBitmap **mask);
-gboolean gtk_ctree_get_node_info (GtkCTree *ctree,
- GtkCTreeNode *node,
- gchar **text,
- guint8 *spacing,
- GdkPixmap **pixmap_closed,
- GdkBitmap **mask_closed,
- GdkPixmap **pixmap_opened,
- GdkBitmap **mask_opened,
- gboolean *is_leaf,
- gboolean *expanded);
-void gtk_ctree_node_set_row_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- GtkStyle *style);
-GtkStyle * gtk_ctree_node_get_row_style (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_node_set_cell_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- GtkStyle *style);
-GtkStyle * gtk_ctree_node_get_cell_style (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column);
-void gtk_ctree_node_set_foreground (GtkCTree *ctree,
- GtkCTreeNode *node,
- const GdkColor *color);
-void gtk_ctree_node_set_background (GtkCTree *ctree,
- GtkCTreeNode *node,
- const GdkColor *color);
-void gtk_ctree_node_set_row_data (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data);
-void gtk_ctree_node_set_row_data_full (GtkCTree *ctree,
- GtkCTreeNode *node,
- gpointer data,
- GDestroyNotify destroy);
-gpointer gtk_ctree_node_get_row_data (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_node_moveto (GtkCTree *ctree,
- GtkCTreeNode *node,
- gint column,
- gfloat row_align,
- gfloat col_align);
-GtkVisibility gtk_ctree_node_is_visible (GtkCTree *ctree,
- GtkCTreeNode *node);
-
-/***********************************************************
- * GtkCTree specific functions *
- ***********************************************************/
-
-void gtk_ctree_set_indent (GtkCTree *ctree,
- gint indent);
-void gtk_ctree_set_spacing (GtkCTree *ctree,
- gint spacing);
-void gtk_ctree_set_show_stub (GtkCTree *ctree,
- gboolean show_stub);
-void gtk_ctree_set_line_style (GtkCTree *ctree,
- GtkCTreeLineStyle line_style);
-void gtk_ctree_set_expander_style (GtkCTree *ctree,
- GtkCTreeExpanderStyle expander_style);
-void gtk_ctree_set_drag_compare_func (GtkCTree *ctree,
- GtkCTreeCompareDragFunc cmp_func);
-
-/***********************************************************
- * Tree sorting functions *
- ***********************************************************/
-
-void gtk_ctree_sort_node (GtkCTree *ctree,
- GtkCTreeNode *node);
-void gtk_ctree_sort_recursive (GtkCTree *ctree,
- GtkCTreeNode *node);
-
-
-#define gtk_ctree_set_reorderable(t,r) gtk_clist_set_reorderable((GtkCList*) (t),(r))
-
-/* GType for the GtkCTreeNode. This is a boxed type, although it uses
- * no-op's for the copy and free routines. It is defined in order to
- * provide type information for the signal arguments
- */
-GType gtk_ctree_node_get_type (void) G_GNUC_CONST;
-
-G_END_DECLS
-
-#endif /* __GTK_CTREE_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkcurve.c b/gtk/gtkcurve.c
deleted file mode 100644
index e1304dbd52..0000000000
--- a/gtk/gtkcurve.c
+++ /dev/null
@@ -1,1039 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1997 David Mosberger
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "gtkcurve.h"
-#include "gtkdrawingarea.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkradiobutton.h"
-#include "gtktable.h"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-#define RADIUS 3 /* radius of the control points */
-#define MIN_DISTANCE 8 /* min distance between control points */
-
-#define GRAPH_MASK (GDK_EXPOSURE_MASK | \
- GDK_POINTER_MOTION_MASK | \
- GDK_POINTER_MOTION_HINT_MASK | \
- GDK_ENTER_NOTIFY_MASK | \
- GDK_BUTTON_PRESS_MASK | \
- GDK_BUTTON_RELEASE_MASK | \
- GDK_BUTTON1_MOTION_MASK)
-
-enum {
- PROP_0,
- PROP_CURVE_TYPE,
- PROP_MIN_X,
- PROP_MAX_X,
- PROP_MIN_Y,
- PROP_MAX_Y
-};
-
-static GtkDrawingAreaClass *parent_class = NULL;
-static guint curve_type_changed_signal = 0;
-
-
-/* forward declarations: */
-static void gtk_curve_class_init (GtkCurveClass *class);
-static void gtk_curve_init (GtkCurve *curve);
-static void gtk_curve_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_curve_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_curve_finalize (GObject *object);
-static gint gtk_curve_graph_events (GtkWidget *widget,
- GdkEvent *event,
- GtkCurve *c);
-static void gtk_curve_size_graph (GtkCurve *curve);
-
-GType
-gtk_curve_get_type (void)
-{
- static GType curve_type = 0;
-
- if (!curve_type)
- {
- const GTypeInfo curve_info =
- {
- sizeof (GtkCurveClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_curve_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GtkCurve),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gtk_curve_init,
- };
-
- curve_type = g_type_register_static (GTK_TYPE_DRAWING_AREA, I_("GtkCurve"),
- &curve_info, 0);
- }
- return curve_type;
-}
-
-static void
-gtk_curve_class_init (GtkCurveClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-
- parent_class = g_type_class_peek_parent (class);
-
- gobject_class->finalize = gtk_curve_finalize;
-
- gobject_class->set_property = gtk_curve_set_property;
- gobject_class->get_property = gtk_curve_get_property;
-
- g_object_class_install_property (gobject_class,
- PROP_CURVE_TYPE,
- g_param_spec_enum ("curve-type",
- P_("Curve type"),
- P_("Is this curve linear, spline interpolated, or free-form"),
- GTK_TYPE_CURVE_TYPE,
- GTK_CURVE_TYPE_SPLINE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_MIN_X,
- g_param_spec_float ("min-x",
- P_("Minimum X"),
- P_("Minimum possible value for X"),
- -G_MAXFLOAT,
- G_MAXFLOAT,
- 0.0,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_MAX_X,
- g_param_spec_float ("max-x",
- P_("Maximum X"),
- P_("Maximum possible X value"),
- -G_MAXFLOAT,
- G_MAXFLOAT,
- 1.0,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_MIN_Y,
- g_param_spec_float ("min-y",
- P_("Minimum Y"),
- P_("Minimum possible value for Y"),
- -G_MAXFLOAT,
- G_MAXFLOAT,
- 0.0,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_MAX_Y,
- g_param_spec_float ("max-y",
- P_("Maximum Y"),
- P_("Maximum possible value for Y"),
- -G_MAXFLOAT,
- G_MAXFLOAT,
- 1.0,
- GTK_PARAM_READWRITE));
-
- curve_type_changed_signal =
- g_signal_new (I_("curve-type-changed"),
- G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GtkCurveClass, curve_type_changed),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-}
-
-static void
-gtk_curve_init (GtkCurve *curve)
-{
- gint old_mask;
-
- curve->cursor_type = GDK_TOP_LEFT_ARROW;
- curve->pixmap = NULL;
- curve->curve_type = GTK_CURVE_TYPE_SPLINE;
- curve->height = 0;
- curve->grab_point = -1;
-
- curve->num_points = 0;
- curve->point = NULL;
-
- curve->num_ctlpoints = 0;
- curve->ctlpoint = NULL;
-
- curve->min_x = 0.0;
- curve->max_x = 1.0;
- curve->min_y = 0.0;
- curve->max_y = 1.0;
-
- old_mask = gtk_widget_get_events (GTK_WIDGET (curve));
- gtk_widget_set_events (GTK_WIDGET (curve), old_mask | GRAPH_MASK);
- g_signal_connect (curve, "event",
- G_CALLBACK (gtk_curve_graph_events), curve);
- gtk_curve_size_graph (curve);
-}
-
-static void
-gtk_curve_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkCurve *curve = GTK_CURVE (object);
-
- switch (prop_id)
- {
- case PROP_CURVE_TYPE:
- gtk_curve_set_curve_type (curve, g_value_get_enum (value));
- break;
- case PROP_MIN_X:
- gtk_curve_set_range (curve, g_value_get_float (value), curve->max_x,
- curve->min_y, curve->max_y);
- break;
- case PROP_MAX_X:
- gtk_curve_set_range (curve, curve->min_x, g_value_get_float (value),
- curve->min_y, curve->max_y);
- break;
- case PROP_MIN_Y:
- gtk_curve_set_range (curve, curve->min_x, curve->max_x,
- g_value_get_float (value), curve->max_y);
- break;
- case PROP_MAX_Y:
- gtk_curve_set_range (curve, curve->min_x, curve->max_x,
- curve->min_y, g_value_get_float (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_curve_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkCurve *curve = GTK_CURVE (object);
-
- switch (prop_id)
- {
- case PROP_CURVE_TYPE:
- g_value_set_enum (value, curve->curve_type);
- break;
- case PROP_MIN_X:
- g_value_set_float (value, curve->min_x);
- break;
- case PROP_MAX_X:
- g_value_set_float (value, curve->max_x);
- break;
- case PROP_MIN_Y:
- g_value_set_float (value, curve->min_y);
- break;
- case PROP_MAX_Y:
- g_value_set_float (value, curve->max_y);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static int
-project (gfloat value, gfloat min, gfloat max, int norm)
-{
- return (norm - 1) * ((value - min) / (max - min)) + 0.5;
-}
-
-static gfloat
-unproject (gint value, gfloat min, gfloat max, int norm)
-{
- return value / (gfloat) (norm - 1) * (max - min) + min;
-}
-
-/* Solve the tridiagonal equation system that determines the second
- derivatives for the interpolation points. (Based on Numerical
- Recipies 2nd Edition.) */
-static void
-spline_solve (int n, gfloat x[], gfloat y[], gfloat y2[])
-{
- gfloat p, sig, *u;
- gint i, k;
-
- u = g_malloc ((n - 1) * sizeof (u[0]));
-
- y2[0] = u[0] = 0.0; /* set lower boundary condition to "natural" */
-
- for (i = 1; i < n - 1; ++i)
- {
- sig = (x[i] - x[i - 1]) / (x[i + 1] - x[i - 1]);
- p = sig * y2[i - 1] + 2.0;
- y2[i] = (sig - 1.0) / p;
- u[i] = ((y[i + 1] - y[i])
- / (x[i + 1] - x[i]) - (y[i] - y[i - 1]) / (x[i] - x[i - 1]));
- u[i] = (6.0 * u[i] / (x[i + 1] - x[i - 1]) - sig * u[i - 1]) / p;
- }
-
- y2[n - 1] = 0.0;
- for (k = n - 2; k >= 0; --k)
- y2[k] = y2[k] * y2[k + 1] + u[k];
-
- g_free (u);
-}
-
-static gfloat
-spline_eval (int n, gfloat x[], gfloat y[], gfloat y2[], gfloat val)
-{
- gint k_lo, k_hi, k;
- gfloat h, b, a;
-
- /* do a binary search for the right interval: */
- k_lo = 0; k_hi = n - 1;
- while (k_hi - k_lo > 1)
- {
- k = (k_hi + k_lo) / 2;
- if (x[k] > val)
- k_hi = k;
- else
- k_lo = k;
- }
-
- h = x[k_hi] - x[k_lo];
- g_assert (h > 0.0);
-
- a = (x[k_hi] - val) / h;
- b = (val - x[k_lo]) / h;
- return a*y[k_lo] + b*y[k_hi] +
- ((a*a*a - a)*y2[k_lo] + (b*b*b - b)*y2[k_hi]) * (h*h)/6.0;
-}
-
-static void
-gtk_curve_interpolate (GtkCurve *c, gint width, gint height)
-{
- gfloat *vector;
- int i;
-
- vector = g_malloc (width * sizeof (vector[0]));
-
- gtk_curve_get_vector (c, width, vector);
-
- c->height = height;
- if (c->num_points != width)
- {
- c->num_points = width;
- g_free (c->point);
- c->point = g_malloc (c->num_points * sizeof (c->point[0]));
- }
-
- for (i = 0; i < width; ++i)
- {
- c->point[i].x = RADIUS + i;
- c->point[i].y = RADIUS + height
- - project (vector[i], c->min_y, c->max_y, height);
- }
-
- g_free (vector);
-}
-
-static void
-gtk_curve_draw (GtkCurve *c, gint width, gint height)
-{
- GtkStateType state;
- GtkStyle *style;
- gint i;
-
- if (!c->pixmap)
- return;
-
- if (c->height != height || c->num_points != width)
- gtk_curve_interpolate (c, width, height);
-
- state = GTK_STATE_NORMAL;
- if (!gtk_widget_is_sensitive (GTK_WIDGET (c)))
- state = GTK_STATE_INSENSITIVE;
-
- style = GTK_WIDGET (c)->style;
-
- /* clear the pixmap: */
- gtk_paint_flat_box (style, c->pixmap, GTK_STATE_NORMAL, GTK_SHADOW_NONE,
- NULL, GTK_WIDGET (c), "curve_bg",
- 0, 0, width + RADIUS * 2, height + RADIUS * 2);
- /* draw the grid lines: (XXX make more meaningful) */
- for (i = 0; i < 5; i++)
- {
- gdk_draw_line (c->pixmap, style->dark_gc[state],
- RADIUS, i * (height / 4.0) + RADIUS,
- width + RADIUS, i * (height / 4.0) + RADIUS);
- gdk_draw_line (c->pixmap, style->dark_gc[state],
- i * (width / 4.0) + RADIUS, RADIUS,
- i * (width / 4.0) + RADIUS, height + RADIUS);
- }
-
- gdk_draw_points (c->pixmap, style->fg_gc[state], c->point, c->num_points);
- if (c->curve_type != GTK_CURVE_TYPE_FREE)
- for (i = 0; i < c->num_ctlpoints; ++i)
- {
- gint x, y;
-
- if (c->ctlpoint[i][0] < c->min_x)
- continue;
-
- x = project (c->ctlpoint[i][0], c->min_x, c->max_x,
- width);
- y = height -
- project (c->ctlpoint[i][1], c->min_y, c->max_y,
- height);
-
- /* draw a bullet: */
- gdk_draw_arc (c->pixmap, style->fg_gc[state], TRUE, x, y,
- RADIUS * 2, RADIUS*2, 0, 360*64);
- }
- gdk_draw_drawable (GTK_WIDGET (c)->window, style->fg_gc[state], c->pixmap,
- 0, 0, 0, 0, width + RADIUS * 2, height + RADIUS * 2);
-}
-
-static gint
-gtk_curve_graph_events (GtkWidget *widget, GdkEvent *event, GtkCurve *c)
-{
- GdkCursorType new_type = c->cursor_type;
- gint i, src, dst, leftbound, rightbound;
- GdkEventMotion *mevent;
- GtkWidget *w;
- gint tx, ty;
- gint cx, x, y, width, height;
- gint closest_point = 0;
- gfloat rx, ry, min_x;
- guint distance;
- gint x1, x2, y1, y2;
- gint retval = FALSE;
-
- w = GTK_WIDGET (c);
- width = w->allocation.width - RADIUS * 2;
- height = w->allocation.height - RADIUS * 2;
-
- if ((width < 0) || (height < 0))
- return FALSE;
-
- /* get the pointer position */
- gdk_window_get_pointer (w->window, &tx, &ty, NULL);
- x = CLAMP ((tx - RADIUS), 0, width-1);
- y = CLAMP ((ty - RADIUS), 0, height-1);
-
- min_x = c->min_x;
-
- distance = ~0U;
- for (i = 0; i < c->num_ctlpoints; ++i)
- {
- cx = project (c->ctlpoint[i][0], min_x, c->max_x, width);
- if ((guint) abs (x - cx) < distance)
- {
- distance = abs (x - cx);
- closest_point = i;
- }
- }
-
- switch (event->type)
- {
- case GDK_CONFIGURE:
- if (c->pixmap)
- g_object_unref (c->pixmap);
- c->pixmap = NULL;
- /* fall through */
- case GDK_EXPOSE:
- if (!c->pixmap)
- c->pixmap = gdk_pixmap_new (w->window,
- w->allocation.width,
- w->allocation.height, -1);
- gtk_curve_draw (c, width, height);
- break;
-
- case GDK_BUTTON_PRESS:
- gtk_grab_add (widget);
-
- new_type = GDK_TCROSS;
-
- switch (c->curve_type)
- {
- case GTK_CURVE_TYPE_LINEAR:
- case GTK_CURVE_TYPE_SPLINE:
- if (distance > MIN_DISTANCE)
- {
- /* insert a new control point */
- if (c->num_ctlpoints > 0)
- {
- cx = project (c->ctlpoint[closest_point][0], min_x,
- c->max_x, width);
- if (x > cx)
- ++closest_point;
- }
- ++c->num_ctlpoints;
- c->ctlpoint =
- g_realloc (c->ctlpoint,
- c->num_ctlpoints * sizeof (*c->ctlpoint));
- for (i = c->num_ctlpoints - 1; i > closest_point; --i)
- memcpy (c->ctlpoint + i, c->ctlpoint + i - 1,
- sizeof (*c->ctlpoint));
- }
- c->grab_point = closest_point;
- c->ctlpoint[c->grab_point][0] =
- unproject (x, min_x, c->max_x, width);
- c->ctlpoint[c->grab_point][1] =
- unproject (height - y, c->min_y, c->max_y, height);
-
- gtk_curve_interpolate (c, width, height);
- break;
-
- case GTK_CURVE_TYPE_FREE:
- c->point[x].x = RADIUS + x;
- c->point[x].y = RADIUS + y;
- c->grab_point = x;
- c->last = y;
- break;
- }
- gtk_curve_draw (c, width, height);
- retval = TRUE;
- break;
-
- case GDK_BUTTON_RELEASE:
- gtk_grab_remove (widget);
-
- /* delete inactive points: */
- if (c->curve_type != GTK_CURVE_TYPE_FREE)
- {
- for (src = dst = 0; src < c->num_ctlpoints; ++src)
- {
- if (c->ctlpoint[src][0] >= min_x)
- {
- memcpy (c->ctlpoint + dst, c->ctlpoint + src,
- sizeof (*c->ctlpoint));
- ++dst;
- }
- }
- if (dst < src)
- {
- c->num_ctlpoints -= (src - dst);
- if (c->num_ctlpoints <= 0)
- {
- c->num_ctlpoints = 1;
- c->ctlpoint[0][0] = min_x;
- c->ctlpoint[0][1] = c->min_y;
- gtk_curve_interpolate (c, width, height);
- gtk_curve_draw (c, width, height);
- }
- c->ctlpoint =
- g_realloc (c->ctlpoint,
- c->num_ctlpoints * sizeof (*c->ctlpoint));
- }
- }
- new_type = GDK_FLEUR;
- c->grab_point = -1;
- retval = TRUE;
- break;
-
- case GDK_MOTION_NOTIFY:
- mevent = (GdkEventMotion *) event;
-
- switch (c->curve_type)
- {
- case GTK_CURVE_TYPE_LINEAR:
- case GTK_CURVE_TYPE_SPLINE:
- if (c->grab_point == -1)
- {
- /* if no point is grabbed... */
- if (distance <= MIN_DISTANCE)
- new_type = GDK_FLEUR;
- else
- new_type = GDK_TCROSS;
- }
- else
- {
- /* drag the grabbed point */
- new_type = GDK_TCROSS;
-
- leftbound = -MIN_DISTANCE;
- if (c->grab_point > 0)
- leftbound = project (c->ctlpoint[c->grab_point - 1][0],
- min_x, c->max_x, width);
-
- rightbound = width + RADIUS * 2 + MIN_DISTANCE;
- if (c->grab_point + 1 < c->num_ctlpoints)
- rightbound = project (c->ctlpoint[c->grab_point + 1][0],
- min_x, c->max_x, width);
-
- if (tx <= leftbound || tx >= rightbound
- || ty > height + RADIUS * 2 + MIN_DISTANCE
- || ty < -MIN_DISTANCE)
- c->ctlpoint[c->grab_point][0] = min_x - 1.0;
- else
- {
- rx = unproject (x, min_x, c->max_x, width);
- ry = unproject (height - y, c->min_y, c->max_y, height);
- c->ctlpoint[c->grab_point][0] = rx;
- c->ctlpoint[c->grab_point][1] = ry;
- }
- gtk_curve_interpolate (c, width, height);
- gtk_curve_draw (c, width, height);
- }
- break;
-
- case GTK_CURVE_TYPE_FREE:
- if (c->grab_point != -1)
- {
- if (c->grab_point > x)
- {
- x1 = x;
- x2 = c->grab_point;
- y1 = y;
- y2 = c->last;
- }
- else
- {
- x1 = c->grab_point;
- x2 = x;
- y1 = c->last;
- y2 = y;
- }
-
- if (x2 != x1)
- for (i = x1; i <= x2; i++)
- {
- c->point[i].x = RADIUS + i;
- c->point[i].y = RADIUS +
- (y1 + ((y2 - y1) * (i - x1)) / (x2 - x1));
- }
- else
- {
- c->point[x].x = RADIUS + x;
- c->point[x].y = RADIUS + y;
- }
- c->grab_point = x;
- c->last = y;
- gtk_curve_draw (c, width, height);
- }
- if (mevent->state & GDK_BUTTON1_MASK)
- new_type = GDK_TCROSS;
- else
- new_type = GDK_PENCIL;
- break;
- }
- if (new_type != (GdkCursorType) c->cursor_type)
- {
- GdkCursor *cursor;
-
- c->cursor_type = new_type;
-
- cursor = gdk_cursor_new_for_display (gtk_widget_get_display (w),
- c->cursor_type);
- gdk_window_set_cursor (w->window, cursor);
- gdk_cursor_unref (cursor);
- }
- retval = TRUE;
- break;
-
- default:
- break;
- }
-
- return retval;
-}
-
-void
-gtk_curve_set_curve_type (GtkCurve *c, GtkCurveType new_type)
-{
- gfloat rx, dx;
- gint x, i;
-
- if (new_type != c->curve_type)
- {
- gint width, height;
-
- width = GTK_WIDGET (c)->allocation.width - RADIUS * 2;
- height = GTK_WIDGET (c)->allocation.height - RADIUS * 2;
-
- if (new_type == GTK_CURVE_TYPE_FREE)
- {
- gtk_curve_interpolate (c, width, height);
- c->curve_type = new_type;
- }
- else if (c->curve_type == GTK_CURVE_TYPE_FREE)
- {
- g_free (c->ctlpoint);
- c->num_ctlpoints = 9;
- c->ctlpoint = g_malloc (c->num_ctlpoints * sizeof (*c->ctlpoint));
-
- rx = 0.0;
- dx = (width - 1) / (gfloat) (c->num_ctlpoints - 1);
-
- for (i = 0; i < c->num_ctlpoints; ++i, rx += dx)
- {
- x = (int) (rx + 0.5);
- c->ctlpoint[i][0] =
- unproject (x, c->min_x, c->max_x, width);
- c->ctlpoint[i][1] =
- unproject (RADIUS + height - c->point[x].y,
- c->min_y, c->max_y, height);
- }
- c->curve_type = new_type;
- gtk_curve_interpolate (c, width, height);
- }
- else
- {
- c->curve_type = new_type;
- gtk_curve_interpolate (c, width, height);
- }
- g_signal_emit (c, curve_type_changed_signal, 0);
- g_object_notify (G_OBJECT (c), "curve-type");
- gtk_curve_draw (c, width, height);
- }
-}
-
-static void
-gtk_curve_size_graph (GtkCurve *curve)
-{
- gint width, height;
- gfloat aspect;
- GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (curve));
-
- width = (curve->max_x - curve->min_x) + 1;
- height = (curve->max_y - curve->min_y) + 1;
- aspect = width / (gfloat) height;
- if (width > gdk_screen_get_width (screen) / 4)
- width = gdk_screen_get_width (screen) / 4;
- if (height > gdk_screen_get_height (screen) / 4)
- height = gdk_screen_get_height (screen) / 4;
-
- if (aspect < 1.0)
- width = height * aspect;
- else
- height = width / aspect;
-
- gtk_widget_set_size_request (GTK_WIDGET (curve),
- width + RADIUS * 2,
- height + RADIUS * 2);
-}
-
-static void
-gtk_curve_reset_vector (GtkCurve *curve)
-{
- g_free (curve->ctlpoint);
-
- curve->num_ctlpoints = 2;
- curve->ctlpoint = g_malloc (2 * sizeof (curve->ctlpoint[0]));
- curve->ctlpoint[0][0] = curve->min_x;
- curve->ctlpoint[0][1] = curve->min_y;
- curve->ctlpoint[1][0] = curve->max_x;
- curve->ctlpoint[1][1] = curve->max_y;
-
- if (curve->pixmap)
- {
- gint width, height;
-
- width = GTK_WIDGET (curve)->allocation.width - RADIUS * 2;
- height = GTK_WIDGET (curve)->allocation.height - RADIUS * 2;
-
- if (curve->curve_type == GTK_CURVE_TYPE_FREE)
- {
- curve->curve_type = GTK_CURVE_TYPE_LINEAR;
- gtk_curve_interpolate (curve, width, height);
- curve->curve_type = GTK_CURVE_TYPE_FREE;
- }
- else
- gtk_curve_interpolate (curve, width, height);
- gtk_curve_draw (curve, width, height);
- }
-}
-
-void
-gtk_curve_reset (GtkCurve *c)
-{
- GtkCurveType old_type;
-
- old_type = c->curve_type;
- c->curve_type = GTK_CURVE_TYPE_SPLINE;
- gtk_curve_reset_vector (c);
-
- if (old_type != GTK_CURVE_TYPE_SPLINE)
- {
- g_signal_emit (c, curve_type_changed_signal, 0);
- g_object_notify (G_OBJECT (c), "curve-type");
- }
-}
-
-void
-gtk_curve_set_gamma (GtkCurve *c, gfloat gamma)
-{
- gfloat x, one_over_gamma, height;
- GtkCurveType old_type;
- gint i;
-
- if (c->num_points < 2)
- return;
-
- old_type = c->curve_type;
- c->curve_type = GTK_CURVE_TYPE_FREE;
-
- if (gamma <= 0)
- one_over_gamma = 1.0;
- else
- one_over_gamma = 1.0 / gamma;
- height = c->height;
- for (i = 0; i < c->num_points; ++i)
- {
- x = (gfloat) i / (c->num_points - 1);
- c->point[i].x = RADIUS + i;
- c->point[i].y =
- RADIUS + (height * (1.0 - pow (x, one_over_gamma)) + 0.5);
- }
-
- if (old_type != GTK_CURVE_TYPE_FREE)
- g_signal_emit (c, curve_type_changed_signal, 0);
-
- gtk_curve_draw (c, c->num_points, c->height);
-}
-
-void
-gtk_curve_set_range (GtkCurve *curve,
- gfloat min_x,
- gfloat max_x,
- gfloat min_y,
- gfloat max_y)
-{
- g_object_freeze_notify (G_OBJECT (curve));
- if (curve->min_x != min_x) {
- curve->min_x = min_x;
- g_object_notify (G_OBJECT (curve), "min-x");
- }
- if (curve->max_x != max_x) {
- curve->max_x = max_x;
- g_object_notify (G_OBJECT (curve), "max-x");
- }
- if (curve->min_y != min_y) {
- curve->min_y = min_y;
- g_object_notify (G_OBJECT (curve), "min-y");
- }
- if (curve->max_y != max_y) {
- curve->max_y = max_y;
- g_object_notify (G_OBJECT (curve), "max-y");
- }
- g_object_thaw_notify (G_OBJECT (curve));
-
- gtk_curve_size_graph (curve);
- gtk_curve_reset_vector (curve);
-}
-
-void
-gtk_curve_set_vector (GtkCurve *c, int veclen, gfloat vector[])
-{
- GtkCurveType old_type;
- gfloat rx, dx, ry;
- gint i, height;
- GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (c));
-
- old_type = c->curve_type;
- c->curve_type = GTK_CURVE_TYPE_FREE;
-
- if (c->point)
- height = GTK_WIDGET (c)->allocation.height - RADIUS * 2;
- else
- {
- height = (c->max_y - c->min_y);
- if (height > gdk_screen_get_height (screen) / 4)
- height = gdk_screen_get_height (screen) / 4;
-
- c->height = height;
- c->num_points = veclen;
- c->point = g_malloc (c->num_points * sizeof (c->point[0]));
- }
- rx = 0;
- dx = (veclen - 1.0) / (c->num_points - 1.0);
-
- for (i = 0; i < c->num_points; ++i, rx += dx)
- {
- ry = vector[(int) (rx + 0.5)];
- if (ry > c->max_y) ry = c->max_y;
- if (ry < c->min_y) ry = c->min_y;
- c->point[i].x = RADIUS + i;
- c->point[i].y =
- RADIUS + height - project (ry, c->min_y, c->max_y, height);
- }
- if (old_type != GTK_CURVE_TYPE_FREE)
- {
- g_signal_emit (c, curve_type_changed_signal, 0);
- g_object_notify (G_OBJECT (c), "curve-type");
- }
-
- gtk_curve_draw (c, c->num_points, height);
-}
-
-void
-gtk_curve_get_vector (GtkCurve *c, int veclen, gfloat vector[])
-{
- gfloat rx, ry, dx, dy, min_x, delta_x, *mem, *xv, *yv, *y2v, prev;
- gint dst, i, x, next, num_active_ctlpoints = 0, first_active = -1;
-
- min_x = c->min_x;
-
- if (c->curve_type != GTK_CURVE_TYPE_FREE)
- {
- /* count active points: */
- prev = min_x - 1.0;
- for (i = num_active_ctlpoints = 0; i < c->num_ctlpoints; ++i)
- if (c->ctlpoint[i][0] > prev)
- {
- if (first_active < 0)
- first_active = i;
- prev = c->ctlpoint[i][0];
- ++num_active_ctlpoints;
- }
-
- /* handle degenerate case: */
- if (num_active_ctlpoints < 2)
- {
- if (num_active_ctlpoints > 0)
- ry = c->ctlpoint[first_active][1];
- else
- ry = c->min_y;
- if (ry < c->min_y) ry = c->min_y;
- if (ry > c->max_y) ry = c->max_y;
- for (x = 0; x < veclen; ++x)
- vector[x] = ry;
- return;
- }
- }
-
- switch (c->curve_type)
- {
- case GTK_CURVE_TYPE_SPLINE:
- mem = g_malloc (3 * num_active_ctlpoints * sizeof (gfloat));
- xv = mem;
- yv = mem + num_active_ctlpoints;
- y2v = mem + 2*num_active_ctlpoints;
-
- prev = min_x - 1.0;
- for (i = dst = 0; i < c->num_ctlpoints; ++i)
- if (c->ctlpoint[i][0] > prev)
- {
- prev = c->ctlpoint[i][0];
- xv[dst] = c->ctlpoint[i][0];
- yv[dst] = c->ctlpoint[i][1];
- ++dst;
- }
-
- spline_solve (num_active_ctlpoints, xv, yv, y2v);
-
- rx = min_x;
- dx = (c->max_x - min_x) / (veclen - 1);
- for (x = 0; x < veclen; ++x, rx += dx)
- {
- ry = spline_eval (num_active_ctlpoints, xv, yv, y2v, rx);
- if (ry < c->min_y) ry = c->min_y;
- if (ry > c->max_y) ry = c->max_y;
- vector[x] = ry;
- }
-
- g_free (mem);
- break;
-
- case GTK_CURVE_TYPE_LINEAR:
- dx = (c->max_x - min_x) / (veclen - 1);
- rx = min_x;
- ry = c->min_y;
- dy = 0.0;
- i = first_active;
- for (x = 0; x < veclen; ++x, rx += dx)
- {
- if (rx >= c->ctlpoint[i][0])
- {
- if (rx > c->ctlpoint[i][0])
- ry = c->min_y;
- dy = 0.0;
- next = i + 1;
- while (next < c->num_ctlpoints
- && c->ctlpoint[next][0] <= c->ctlpoint[i][0])
- ++next;
- if (next < c->num_ctlpoints)
- {
- delta_x = c->ctlpoint[next][0] - c->ctlpoint[i][0];
- dy = ((c->ctlpoint[next][1] - c->ctlpoint[i][1])
- / delta_x);
- dy *= dx;
- ry = c->ctlpoint[i][1];
- i = next;
- }
- }
- vector[x] = ry;
- ry += dy;
- }
- break;
-
- case GTK_CURVE_TYPE_FREE:
- if (c->point)
- {
- rx = 0.0;
- dx = c->num_points / (double) veclen;
- for (x = 0; x < veclen; ++x, rx += dx)
- vector[x] = unproject (RADIUS + c->height - c->point[(int) rx].y,
- c->min_y, c->max_y,
- c->height);
- }
- else
- memset (vector, 0, veclen * sizeof (vector[0]));
- break;
- }
-}
-
-GtkWidget*
-gtk_curve_new (void)
-{
- return g_object_new (GTK_TYPE_CURVE, NULL);
-}
-
-static void
-gtk_curve_finalize (GObject *object)
-{
- GtkCurve *curve;
-
- g_return_if_fail (GTK_IS_CURVE (object));
-
- curve = GTK_CURVE (object);
- if (curve->pixmap)
- g_object_unref (curve->pixmap);
- g_free (curve->point);
- g_free (curve->ctlpoint);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-#define __GTK_CURVE_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkcurve.h b/gtk/gtkcurve.h
deleted file mode 100644
index 68ee716edb..0000000000
--- a/gtk/gtkcurve.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_CURVE_H__
-#define __GTK_CURVE_H__
-
-
-#include <gtk/gtkdrawingarea.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_CURVE (gtk_curve_get_type ())
-#define GTK_CURVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CURVE, GtkCurve))
-#define GTK_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CURVE, GtkCurveClass))
-#define GTK_IS_CURVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CURVE))
-#define GTK_IS_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CURVE))
-#define GTK_CURVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CURVE, GtkCurveClass))
-
-
-typedef struct _GtkCurve GtkCurve;
-typedef struct _GtkCurveClass GtkCurveClass;
-
-
-struct _GtkCurve
-{
- GtkDrawingArea graph;
-
- gint cursor_type;
- gfloat min_x;
- gfloat max_x;
- gfloat min_y;
- gfloat max_y;
- GdkPixmap *pixmap;
- GtkCurveType curve_type;
- gint height; /* (cached) graph height in pixels */
- gint grab_point; /* point currently grabbed */
- gint last;
-
- /* (cached) curve points: */
- gint num_points;
- GdkPoint *point;
-
- /* control points: */
- gint num_ctlpoints; /* number of control points */
- gfloat (*ctlpoint)[2]; /* array of control points */
-};
-
-struct _GtkCurveClass
-{
- GtkDrawingAreaClass parent_class;
-
- void (* curve_type_changed) (GtkCurve *curve);
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-
-GType gtk_curve_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_curve_new (void);
-void gtk_curve_reset (GtkCurve *curve);
-void gtk_curve_set_gamma (GtkCurve *curve, gfloat gamma_);
-void gtk_curve_set_range (GtkCurve *curve,
- gfloat min_x, gfloat max_x,
- gfloat min_y, gfloat max_y);
-void gtk_curve_get_vector (GtkCurve *curve,
- int veclen, gfloat vector[]);
-void gtk_curve_set_vector (GtkCurve *curve,
- int veclen, gfloat vector[]);
-void gtk_curve_set_curve_type (GtkCurve *curve, GtkCurveType type);
-
-
-G_END_DECLS
-
-#endif /* __GTK_CURVE_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkdebug.h b/gtk/gtkdebug.h
index 3798bc4ad9..4e656a2ef1 100644
--- a/gtk/gtkdebug.h
+++ b/gtk/gtkdebug.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkdialog.h b/gtk/gtkdialog.h
index 18a18961c8..b1a89f0072 100644
--- a/gtk/gtkdialog.h
+++ b/gtk/gtkdialog.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
index 244015faf5..9a4ee30892 100644
--- a/gtk/gtkdnd-quartz.c
+++ b/gtk/gtkdnd-quartz.c
@@ -1820,16 +1820,6 @@ gtk_drag_set_icon_default (GdkDragContext *context)
gtk_drag_set_icon_stock (context, GTK_STOCK_DND, -2, -2);
}
-void
-gtk_drag_set_default_icon (GdkColormap *colormap,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint hot_x,
- gint hot_y)
-{
- g_warning ("gtk_drag_set_default_icon is not supported on Mac OS X.");
-}
-
static void
gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
{
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 75a750c4f7..0c73e18e45 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -3406,53 +3406,6 @@ gtk_drag_set_icon_default (GdkDragContext *context)
default_icon_hot_y);
}
-/**
- * gtk_drag_set_default_icon:
- * @colormap: the colormap of the icon
- * @pixmap: the image data for the icon
- * @mask: (allow-none): the transparency mask for an image, or %NULL
- * @hot_x: The X offset within @widget of the hotspot.
- * @hot_y: The Y offset within @widget of the hotspot.
- *
- * Changes the default drag icon. GTK+ retains references for the
- * arguments, and will release them when they are no longer needed.
- *
- * Deprecated: Change the default drag icon via the stock system by
- * changing the stock pixbuf for #GTK_STOCK_DND instead.
- **/
-void
-gtk_drag_set_default_icon (GdkColormap *colormap,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint hot_x,
- gint hot_y)
-{
- g_return_if_fail (GDK_IS_COLORMAP (colormap));
- g_return_if_fail (GDK_IS_PIXMAP (pixmap));
- g_return_if_fail (!mask || GDK_IS_PIXMAP (mask));
-
- if (default_icon_colormap)
- g_object_unref (default_icon_colormap);
- if (default_icon_pixmap)
- g_object_unref (default_icon_pixmap);
- if (default_icon_mask)
- g_object_unref (default_icon_mask);
-
- default_icon_colormap = colormap;
- g_object_ref (colormap);
-
- default_icon_pixmap = pixmap;
- g_object_ref (pixmap);
-
- default_icon_mask = mask;
- if (mask)
- g_object_ref (mask);
-
- default_icon_hot_x = hot_x;
- default_icon_hot_y = hot_y;
-}
-
-
/*************************************************************
* _gtk_drag_source_handle_event:
* Called from widget event handling code on Drag events
diff --git a/gtk/gtkdnd.h b/gtk/gtkdnd.h
index 19af311411..e26b2fa85d 100644
--- a/gtk/gtkdnd.h
+++ b/gtk/gtkdnd.h
@@ -25,7 +25,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -175,14 +175,6 @@ void _gtk_drag_source_handle_event (GtkWidget *widget,
void _gtk_drag_dest_handle_event (GtkWidget *toplevel,
GdkEvent *event);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_drag_set_default_icon (GdkColormap *colormap,
- GdkPixmap *pixmap,
- GdkBitmap *mask,
- gint hot_x,
- gint hot_y);
-#endif /* !GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_DND_H__ */
diff --git a/gtk/gtkdrawingarea.c b/gtk/gtkdrawingarea.c
index fa7d8b44b6..0ac5952f2d 100644
--- a/gtk/gtkdrawingarea.c
+++ b/gtk/gtkdrawingarea.c
@@ -59,19 +59,6 @@ gtk_drawing_area_new (void)
return g_object_new (GTK_TYPE_DRAWING_AREA, NULL);
}
-void
-gtk_drawing_area_size (GtkDrawingArea *darea,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_DRAWING_AREA (darea));
-
- GTK_WIDGET (darea)->requisition.width = width;
- GTK_WIDGET (darea)->requisition.height = height;
-
- gtk_widget_queue_resize (GTK_WIDGET (darea));
-}
-
static void
gtk_drawing_area_realize (GtkWidget *widget)
{
diff --git a/gtk/gtkdrawingarea.h b/gtk/gtkdrawingarea.h
index 3984940140..07283bbfb6 100644
--- a/gtk/gtkdrawingarea.h
+++ b/gtk/gtkdrawingarea.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -70,13 +70,6 @@ struct _GtkDrawingAreaClass
GType gtk_drawing_area_get_type (void) G_GNUC_CONST;
GtkWidget* gtk_drawing_area_new (void);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_drawing_area_size (GtkDrawingArea *darea,
- gint width,
- gint height);
-#endif /* GTK_DISABLE_DEPRECATED */
-
-
G_END_DECLS
#endif /* __GTK_DRAWING_AREA_H__ */
diff --git a/gtk/gtkeditable.h b/gtk/gtkeditable.h
index 914d41cb2b..fbbc847111 100644
--- a/gtk/gtkeditable.h
+++ b/gtk/gtkeditable.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 4eae62ca54..4a93531276 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -6640,32 +6640,6 @@ gtk_entry_new_with_buffer (GtkEntryBuffer *buffer)
return g_object_new (GTK_TYPE_ENTRY, "buffer", buffer, NULL);
}
-/**
- * gtk_entry_new_with_max_length:
- * @max: the maximum length of the entry, or 0 for no maximum.
- * (other than the maximum length of entries.) The value passed in will
- * be clamped to the range 0-65536.
- *
- * Creates a new #GtkEntry widget with the given maximum length.
- *
- * Return value: a new #GtkEntry
- *
- * Deprecated: 2.0: Use gtk_entry_set_max_length() instead.
- **/
-GtkWidget*
-gtk_entry_new_with_max_length (gint max)
-{
- GtkEntry *entry;
-
- max = CLAMP (max, 0, GTK_ENTRY_BUFFER_MAX_SIZE);
-
- entry = g_object_new (GTK_TYPE_ENTRY, NULL);
- gtk_entry_buffer_set_max_length (get_buffer (entry), max);
-
- return GTK_WIDGET (entry);
-}
-
-
static GtkEntryBuffer*
get_buffer (GtkEntry *entry)
{
@@ -6834,75 +6808,6 @@ gtk_entry_set_text (GtkEntry *entry,
}
/**
- * gtk_entry_append_text:
- * @entry: a #GtkEntry
- * @text: the text to append
- *
- * Appends the given text to the contents of the widget.
- *
- * Deprecated: 2.0: Use gtk_editable_insert_text() instead.
- */
-void
-gtk_entry_append_text (GtkEntry *entry,
- const gchar *text)
-{
- GtkEntryPrivate *priv;
- gint tmp_pos;
-
- g_return_if_fail (GTK_IS_ENTRY (entry));
- g_return_if_fail (text != NULL);
- priv = GTK_ENTRY_GET_PRIVATE (entry);
-
- tmp_pos = gtk_entry_buffer_get_length (get_buffer (entry));
- gtk_editable_insert_text (GTK_EDITABLE (entry), text, -1, &tmp_pos);
-}
-
-/**
- * gtk_entry_prepend_text:
- * @entry: a #GtkEntry
- * @text: the text to prepend
- *
- * Prepends the given text to the contents of the widget.
- *
- * Deprecated: 2.0: Use gtk_editable_insert_text() instead.
- */
-void
-gtk_entry_prepend_text (GtkEntry *entry,
- const gchar *text)
-{
- gint tmp_pos;
-
- g_return_if_fail (GTK_IS_ENTRY (entry));
- g_return_if_fail (text != NULL);
-
- tmp_pos = 0;
- gtk_editable_insert_text (GTK_EDITABLE (entry), text, -1, &tmp_pos);
-}
-
-/**
- * gtk_entry_set_position:
- * @entry: a #GtkEntry
- * @position: the position of the cursor. The cursor is displayed
- * before the character with the given (base 0) index in the widget.
- * The value must be less than or equal to the number of characters
- * in the widget. A value of -1 indicates that the position should
- * be set after the last character in the entry. Note that this
- * position is in characters, not in bytes.
- *
- * Sets the cursor position in an entry to the given value.
- *
- * Deprecated: 2.0: Use gtk_editable_set_position() instead.
- */
-void
-gtk_entry_set_position (GtkEntry *entry,
- gint position)
-{
- g_return_if_fail (GTK_IS_ENTRY (entry));
-
- gtk_editable_set_position (GTK_EDITABLE (entry), position);
-}
-
-/**
* gtk_entry_set_visibility:
* @entry: a #GtkEntry
* @visible: %TRUE if the contents of the entry are displayed
@@ -7043,26 +6948,6 @@ gtk_entry_unset_invisible_char (GtkEntry *entry)
}
/**
- * gtk_entry_set_editable:
- * @entry: a #GtkEntry
- * @editable: %TRUE if the user is allowed to edit the text
- * in the widget
- *
- * Determines if the user can edit the text in the editable
- * widget or not.
- *
- * Deprecated: 2.0: Use gtk_editable_set_editable() instead.
- */
-void
-gtk_entry_set_editable (GtkEntry *entry,
- gboolean editable)
-{
- g_return_if_fail (GTK_IS_ENTRY (entry));
-
- gtk_editable_set_editable (GTK_EDITABLE (entry), editable);
-}
-
-/**
* gtk_entry_set_overwrite_mode:
* @entry: a #GtkEntry
* @overwrite: new value
@@ -7129,28 +7014,6 @@ gtk_entry_get_text (GtkEntry *entry)
}
/**
- * gtk_entry_select_region:
- * @entry: a #GtkEntry
- * @start: the starting position
- * @end: the end position
- *
- * Selects a region of text. The characters that are selected are
- * those characters at positions from @start_pos up to, but not
- * including @end_pos. If @end_pos is negative, then the the characters
- * selected will be those characters from @start_pos to the end of
- * the text.
- *
- * Deprecated: 2.0: Use gtk_editable_select_region() instead.
- */
-void
-gtk_entry_select_region (GtkEntry *entry,
- gint start,
- gint end)
-{
- gtk_editable_select_region (GTK_EDITABLE (entry), start, end);
-}
-
-/**
* gtk_entry_set_max_length:
* @entry: a #GtkEntry
* @max: the maximum length of the entry, or 0 for no maximum.
diff --git a/gtk/gtkentry.h b/gtk/gtkentry.h
index 9bbba0b2cd..9bf5f85ff5 100644
--- a/gtk/gtkentry.h
+++ b/gtk/gtkentry.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -302,8 +302,7 @@ void gtk_entry_set_icon_drag_source (GtkEntry *
GtkTargetList *target_list,
GdkDragAction actions);
gint gtk_entry_get_current_icon_drag_source (GtkEntry *entry);
-
-GdkWindow * gtk_entry_get_icon_window (GtkEntry *entry,
+GdkWindow* gtk_entry_get_icon_window (GtkEntry *entry,
GtkEntryIconPosition icon_pos);
gboolean gtk_entry_im_context_filter_keypress (GtkEntry *entry,
@@ -311,24 +310,6 @@ gboolean gtk_entry_im_context_filter_keypress (GtkEntry *
void gtk_entry_reset_im_context (GtkEntry *entry);
-/* Deprecated compatibility functions
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget* gtk_entry_new_with_max_length (gint max);
-void gtk_entry_append_text (GtkEntry *entry,
- const gchar *text);
-void gtk_entry_prepend_text (GtkEntry *entry,
- const gchar *text);
-void gtk_entry_set_position (GtkEntry *entry,
- gint position);
-void gtk_entry_select_region (GtkEntry *entry,
- gint start,
- gint end);
-void gtk_entry_set_editable (GtkEntry *entry,
- gboolean editable);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_ENTRY_H__ */
diff --git a/gtk/gtkentrybuffer.h b/gtk/gtkentrybuffer.h
index 20556cb9e8..51725b9720 100644
--- a/gtk/gtkentrybuffer.h
+++ b/gtk/gtkentrybuffer.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkentrycompletion.h b/gtk/gtkentrycompletion.h
index f0f05aa430..016b25e764 100644
--- a/gtk/gtkentrycompletion.h
+++ b/gtk/gtkentrycompletion.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h
index 7c577c70b7..2bb021e7a8 100644
--- a/gtk/gtkenums.h
+++ b/gtk/gtkenums.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -94,16 +94,6 @@ typedef enum
GTK_BUTTONBOX_CENTER
} GtkButtonBoxStyle;
-#ifndef GTK_DISABLE_DEPRECATED
-/* Curve types */
-typedef enum
-{
- GTK_CURVE_TYPE_LINEAR, /* linear interpolation */
- GTK_CURVE_TYPE_SPLINE, /* spline interpolation */
- GTK_CURVE_TYPE_FREE /* free form curve */
-} GtkCurveType;
-#endif
-
typedef enum
{
GTK_DELETE_CHARS,
@@ -158,17 +148,6 @@ typedef enum
GTK_SENSITIVITY_OFF
} GtkSensitivityType;
-#ifndef GTK_DISABLE_DEPRECATED
-/* side types */
-typedef enum
-{
- GTK_SIDE_TOP,
- GTK_SIDE_BOTTOM,
- GTK_SIDE_LEFT,
- GTK_SIDE_RIGHT
-} GtkSideType;
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Reading directions for text */
typedef enum
{
@@ -186,19 +165,6 @@ typedef enum
GTK_JUSTIFY_FILL
} GtkJustification;
-#ifndef GTK_DISABLE_DEPRECATED
-/* GtkPatternSpec match types */
-typedef enum
-{
- GTK_MATCH_ALL, /* "*A?A*" */
- GTK_MATCH_ALL_TAIL, /* "*A?AA" */
- GTK_MATCH_HEAD, /* "AAAA*" */
- GTK_MATCH_TAIL, /* "*AAAA" */
- GTK_MATCH_EXACT, /* "AAAAA" */
- GTK_MATCH_LAST
-} GtkMatchType;
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Menu keyboard movement types */
typedef enum
{
@@ -317,14 +283,6 @@ typedef enum
GTK_POS_BOTTOM
} GtkPositionType;
-#ifndef GTK_DISABLE_DEPRECATED
-typedef enum
-{
- GTK_PREVIEW_COLOR,
- GTK_PREVIEW_GRAYSCALE
-} GtkPreviewType;
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Style for buttons */
typedef enum
{
@@ -341,19 +299,6 @@ typedef enum
GTK_RESIZE_IMMEDIATE /* Perform the resizes now */
} GtkResizeMode;
-#ifndef GTK_DISABLE_DEPRECATED
-/* signal run types */
-typedef enum /*< flags >*/
-{
- GTK_RUN_FIRST = G_SIGNAL_RUN_FIRST,
- GTK_RUN_LAST = G_SIGNAL_RUN_LAST,
- GTK_RUN_BOTH = (GTK_RUN_FIRST | GTK_RUN_LAST),
- GTK_RUN_NO_RECURSE = G_SIGNAL_NO_RECURSE,
- GTK_RUN_ACTION = G_SIGNAL_ACTION,
- GTK_RUN_NO_HOOKS = G_SIGNAL_NO_HOOKS
-} GtkSignalRunType;
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* scrolling types */
typedef enum
{
diff --git a/gtk/gtkeventbox.h b/gtk/gtkeventbox.h
index c8e9d9cd56..079ff48e30 100644
--- a/gtk/gtkeventbox.h
+++ b/gtk/gtkeventbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkexpander.h b/gtk/gtkexpander.h
index dc07a6ce71..11f91750d2 100644
--- a/gtk/gtkexpander.h
+++ b/gtk/gtkexpander.h
@@ -21,7 +21,7 @@
* Mark McLoughlin <mark@skynet.ie>
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkfilechooser.h b/gtk/gtkfilechooser.h
index 21ba7ee5f7..bcc8734d8a 100644
--- a/gtk/gtkfilechooser.h
+++ b/gtk/gtkfilechooser.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkfilechooserbutton.c b/gtk/gtkfilechooserbutton.c
index b7227a0bec..439e3ded68 100644
--- a/gtk/gtkfilechooserbutton.c
+++ b/gtk/gtkfilechooserbutton.c
@@ -820,10 +820,6 @@ gtk_file_chooser_button_set_property (GObject *object,
fs_bookmarks_changed_cb (priv->fs, button);
break;
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
- /* Ignore property */
- break;
-
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
g_warning ("%s: Choosers of type `%s` do not support selecting multiple files.",
G_STRFUNC, G_OBJECT_TYPE_NAME (object));
@@ -856,7 +852,6 @@ gtk_file_chooser_button_get_property (GObject *object,
case PROP_TITLE:
case GTK_FILE_CHOOSER_PROP_ACTION:
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
case GTK_FILE_CHOOSER_PROP_FILTER:
case GTK_FILE_CHOOSER_PROP_LOCAL_ONLY:
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET:
@@ -2739,33 +2734,6 @@ gtk_file_chooser_button_new (const gchar *title,
}
/**
- * gtk_file_chooser_button_new_with_backend:
- * @title: the title of the browse dialog.
- * @action: the open mode for the widget.
- * @backend: the name of the #GtkFileSystem backend to use.
- *
- * Creates a new file-selecting button widget using @backend.
- *
- * Returns: a new button widget.
- *
- * Since: 2.6
- * Deprecated: 2.14: Use gtk_file_chooser_button_new() instead.
- **/
-GtkWidget *
-gtk_file_chooser_button_new_with_backend (const gchar *title,
- GtkFileChooserAction action,
- const gchar *backend)
-{
- g_return_val_if_fail (action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL);
-
- return g_object_new (GTK_TYPE_FILE_CHOOSER_BUTTON,
- "action", action,
- "title", (title ? title : _(DEFAULT_TITLE)),
- NULL);
-}
-
-/**
* gtk_file_chooser_button_new_with_dialog:
* @dialog: the widget to use as dialog
*
diff --git a/gtk/gtkfilechooserbutton.h b/gtk/gtkfilechooserbutton.h
index b57209c84c..f6a5bd58c5 100644
--- a/gtk/gtkfilechooserbutton.h
+++ b/gtk/gtkfilechooserbutton.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -69,13 +69,6 @@ struct _GtkFileChooserButtonClass
GType gtk_file_chooser_button_get_type (void) G_GNUC_CONST;
GtkWidget * gtk_file_chooser_button_new (const gchar *title,
GtkFileChooserAction action);
-
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget * gtk_file_chooser_button_new_with_backend (const gchar *title,
- GtkFileChooserAction action,
- const gchar *backend);
-#endif /* GTK_DISABLE_DEPRECATED */
-
GtkWidget * gtk_file_chooser_button_new_with_dialog (GtkWidget *dialog);
G_CONST_RETURN gchar *gtk_file_chooser_button_get_title (GtkFileChooserButton *button);
void gtk_file_chooser_button_set_title (GtkFileChooserButton *button,
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 429e8c4df0..114e37109d 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -5440,10 +5440,6 @@ gtk_file_chooser_default_set_property (GObject *object,
}
break;
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
- /* Ignore property */
- break;
-
case GTK_FILE_CHOOSER_PROP_FILTER:
set_current_filter (impl, g_value_get_object (value));
break;
diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c
index 43a11ce037..327b865d6e 100644
--- a/gtk/gtkfilechooserdialog.c
+++ b/gtk/gtkfilechooserdialog.c
@@ -308,10 +308,6 @@ gtk_file_chooser_dialog_set_property (GObject *object,
switch (prop_id)
{
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
- g_free (priv->file_system);
- priv->file_system = g_value_dup_string (value);
- break;
default:
g_object_set_property (G_OBJECT (priv->widget), pspec->name, value);
break;
@@ -468,44 +464,5 @@ gtk_file_chooser_dialog_new (const gchar *title,
return result;
}
-/**
- * gtk_file_chooser_dialog_new_with_backend:
- * @title: (allow-none): Title of the dialog, or %NULL
- * @parent: (allow-none): Transient parent of the dialog, or %NULL
- * @action: Open or save mode for the dialog
- * @backend: The name of the specific filesystem backend to use.
- * @first_button_text: (allow-none): stock ID or text to go in the first button, or %NULL
- * @Varargs: response ID for the first button, then additional (button, id) pairs, ending with %NULL
- *
- * Creates a new #GtkFileChooserDialog with a specified backend. This is
- * especially useful if you use gtk_file_chooser_set_local_only() to allow
- * non-local files and you use a more expressive vfs, such as gnome-vfs,
- * to load files.
- *
- * Return value: a new #GtkFileChooserDialog
- *
- * Since: 2.4
- * Deprecated: 2.14: Use gtk_file_chooser_dialog_new() instead.
- **/
-GtkWidget *
-gtk_file_chooser_dialog_new_with_backend (const gchar *title,
- GtkWindow *parent,
- GtkFileChooserAction action,
- const gchar *backend,
- const gchar *first_button_text,
- ...)
-{
- GtkWidget *result;
- va_list varargs;
-
- va_start (varargs, first_button_text);
- result = gtk_file_chooser_dialog_new_valist (title, parent, action,
- backend, first_button_text,
- varargs);
- va_end (varargs);
-
- return result;
-}
-
#define __GTK_FILE_CHOOSER_DIALOG_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtkfilechooserdialog.h b/gtk/gtkfilechooserdialog.h
index d79f6f89a7..10ee0639c9 100644
--- a/gtk/gtkfilechooserdialog.h
+++ b/gtk/gtkfilechooserdialog.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -60,15 +60,6 @@ GtkWidget *gtk_file_chooser_dialog_new (const gchar *title
const gchar *first_button_text,
...) G_GNUC_NULL_TERMINATED;
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget *gtk_file_chooser_dialog_new_with_backend (const gchar *title,
- GtkWindow *parent,
- GtkFileChooserAction action,
- const gchar *backend,
- const gchar *first_button_text,
- ...) G_GNUC_NULL_TERMINATED;
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_FILE_CHOOSER_DIALOG_H__ */
diff --git a/gtk/gtkfilechooserutils.c b/gtk/gtkfilechooserutils.c
index 69c71d1116..1f0847bf9d 100644
--- a/gtk/gtkfilechooserutils.c
+++ b/gtk/gtkfilechooserutils.c
@@ -91,9 +91,6 @@ _gtk_file_chooser_install_properties (GObjectClass *klass)
GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET,
"extra-widget");
g_object_class_override_property (klass,
- GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND,
- "file-system-backend");
- g_object_class_override_property (klass,
GTK_FILE_CHOOSER_PROP_FILTER,
"filter");
g_object_class_override_property (klass,
diff --git a/gtk/gtkfilechooserutils.h b/gtk/gtkfilechooserutils.h
index a590cccd16..2aff40639a 100644
--- a/gtk/gtkfilechooserutils.h
+++ b/gtk/gtkfilechooserutils.h
@@ -31,7 +31,7 @@ G_BEGIN_DECLS
typedef enum {
GTK_FILE_CHOOSER_PROP_FIRST = 0x1000,
GTK_FILE_CHOOSER_PROP_ACTION = GTK_FILE_CHOOSER_PROP_FIRST,
- GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND,
+ /* GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND, */
GTK_FILE_CHOOSER_PROP_FILTER,
GTK_FILE_CHOOSER_PROP_LOCAL_ONLY,
GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET,
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index d69d8542b2..ca37b17936 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -126,10 +126,6 @@ gtk_file_chooser_widget_set_property (GObject *object,
switch (prop_id)
{
- case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
- g_free (priv->file_system);
- priv->file_system = g_value_dup_string (value);
- break;
default:
g_object_set_property (G_OBJECT (priv->impl), pspec->name, value);
break;
@@ -167,30 +163,5 @@ gtk_file_chooser_widget_new (GtkFileChooserAction action)
NULL);
}
-/**
- * gtk_file_chooser_widget_new_with_backend:
- * @action: Open or save mode for the widget
- * @backend: The name of the specific filesystem backend to use.
- *
- * Creates a new #GtkFileChooserWidget with a specified backend. This is
- * especially useful if you use gtk_file_chooser_set_local_only() to allow
- * non-local files. This is a file chooser widget that can be embedded in
- * custom windows and it is the same widget that is used by
- * #GtkFileChooserDialog.
- *
- * Return value: a new #GtkFileChooserWidget
- *
- * Since: 2.4
- * Deprecated: 2.14: Use gtk_file_chooser_widget_new() instead.
- **/
-GtkWidget *
-gtk_file_chooser_widget_new_with_backend (GtkFileChooserAction action,
- const gchar *backend)
-{
- return g_object_new (GTK_TYPE_FILE_CHOOSER_WIDGET,
- "action", action,
- NULL);
-}
-
#define __GTK_FILE_CHOOSER_WIDGET_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtkfilechooserwidget.h b/gtk/gtkfilechooserwidget.h
index 333531f573..fbc04c9d6e 100644
--- a/gtk/gtkfilechooserwidget.h
+++ b/gtk/gtkfilechooserwidget.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -56,12 +56,6 @@ struct _GtkFileChooserWidgetClass
GType gtk_file_chooser_widget_get_type (void) G_GNUC_CONST;
GtkWidget *gtk_file_chooser_widget_new (GtkFileChooserAction action);
-
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget *gtk_file_chooser_widget_new_with_backend (GtkFileChooserAction action,
- const gchar *backend);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_FILE_CHOOSER_WIDGET_H__ */
diff --git a/gtk/gtkfilefilter.h b/gtk/gtkfilefilter.h
index dde1fa931a..7a848e51a5 100644
--- a/gtk/gtkfilefilter.h
+++ b/gtk/gtkfilefilter.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkfilesel.c b/gtk/gtkfilesel.c
deleted file mode 100644
index 465b722a51..0000000000
--- a/gtk/gtkfilesel.c
+++ /dev/null
@@ -1,3999 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <errno.h>
-#ifdef HAVE_PWD_H
-#include <pwd.h>
-#endif
-
-#include <glib.h> /* Include early to get G_OS_WIN32 etc */
-#include <glib/gstdio.h>
-
-#if defined(G_PLATFORM_WIN32)
-#include <ctype.h>
-#define STRICT
-#include <windows.h>
-#undef STRICT
-#endif /* G_PLATFORM_WIN32 */
-
-#include "gdk/gdkkeysyms.h"
-
-#undef GTK_DISABLE_DEPRECATED /* GtkOptionMenu */
-
-#include "gtkbutton.h"
-#include "gtkcellrenderertext.h"
-#include "gtkentry.h"
-#include "gtkfilesel.h"
-#include "gtkhbox.h"
-#include "gtkhbbox.h"
-#include "gtkintl.h"
-#include "gtklabel.h"
-#include "gtkliststore.h"
-#include "gtkmain.h"
-#include "gtkprivate.h"
-#include "gtkscrolledwindow.h"
-#include "gtkstock.h"
-#include "gtktreeselection.h"
-#include "gtktreeview.h"
-#include "gtkvbox.h"
-#include "gtkmenu.h"
-#include "gtkmenuitem.h"
-#include "gtkdialog.h"
-#include "gtkmessagedialog.h"
-#include "gtkdnd.h"
-#include "gtkeventbox.h"
-#include "gtkoptionmenu.h"
-
-#define WANT_HPANED 1
-#include "gtkhpaned.h"
-
-#include "gtkalias.h"
-
-#ifdef G_OS_WIN32
-#include <direct.h>
-#include <io.h>
-#ifndef S_ISDIR
-#define S_ISDIR(mode) ((mode)&_S_IFDIR)
-#endif
-#endif /* G_OS_WIN32 */
-
-#ifdef G_WITH_CYGWIN
-#include <sys/cygwin.h> /* For cygwin_conv_to_posix_path */
-#endif
-
-#define DIR_LIST_WIDTH 180
-#define DIR_LIST_HEIGHT 180
-#define FILE_LIST_WIDTH 180
-#define FILE_LIST_HEIGHT 180
-
-/* The Hurd doesn't define either PATH_MAX or MAXPATHLEN, so we put this
- * in here, since the rest of the code in the file does require some
- * fixed maximum.
- */
-#ifndef MAXPATHLEN
-# ifdef PATH_MAX
-# define MAXPATHLEN PATH_MAX
-# else
-# define MAXPATHLEN 2048
-# endif
-#endif
-
-/* I've put this here so it doesn't get confused with the
- * file completion interface */
-typedef struct _HistoryCallbackArg HistoryCallbackArg;
-
-struct _HistoryCallbackArg
-{
- gchar *directory;
- GtkWidget *menu_item;
-};
-
-
-typedef struct _CompletionState CompletionState;
-typedef struct _CompletionDir CompletionDir;
-typedef struct _CompletionDirSent CompletionDirSent;
-typedef struct _CompletionDirEntry CompletionDirEntry;
-typedef struct _CompletionUserDir CompletionUserDir;
-typedef struct _PossibleCompletion PossibleCompletion;
-
-/* Non-external file completion decls and structures */
-
-/* A contant telling PRCS how many directories to cache. Its actually
- * kept in a list, so the geometry isn't important. */
-#define CMPL_DIRECTORY_CACHE_SIZE 10
-
-/* A constant used to determine whether a substring was an exact
- * match by first_diff_index()
- */
-#define PATTERN_MATCH -1
-#define CMPL_ERRNO_TOO_LONG ((1<<16)-1)
-#define CMPL_ERRNO_DID_NOT_CONVERT ((1<<16)-2)
-
-/* This structure contains all the useful information about a directory
- * for the purposes of filename completion. These structures are cached
- * in the CompletionState struct. CompletionDir's are reference counted.
- */
-struct _CompletionDirSent
-{
-#ifndef G_PLATFORM_WIN32
- ino_t inode;
- time_t mtime;
- dev_t device;
-#endif
-
- gint entry_count;
- struct _CompletionDirEntry *entries;
-};
-
-struct _CompletionDir
-{
- CompletionDirSent *sent;
-
- gchar *fullname;
- gint fullname_len;
-
- struct _CompletionDir *cmpl_parent;
- gint cmpl_index;
- gchar *cmpl_text;
-};
-
-/* This structure contains pairs of directory entry names with a flag saying
- * whether or not they are a valid directory. NOTE: This information is used
- * to provide the caller with information about whether to update its completions
- * or try to open a file. Since directories are cached by the directory mtime,
- * a symlink which points to an invalid file (which will not be a directory),
- * will not be reevaluated if that file is created, unless the containing
- * directory is touched. I consider this case to be worth ignoring (josh).
- */
-struct _CompletionDirEntry
-{
- gboolean is_dir;
- gchar *entry_name;
- gchar *sort_key;
-};
-
-struct _CompletionUserDir
-{
- gchar *login;
- gchar *homedir;
-};
-
-struct _PossibleCompletion
-{
- /* accessible fields, all are accessed externally by functions
- * declared above
- */
- gchar *text;
- gint is_a_completion;
- gboolean is_directory;
-
- /* Private fields
- */
- gint text_alloc;
-};
-
-struct _CompletionState
-{
- gint last_valid_char;
- gchar *updated_text;
- gint updated_text_len;
- gint updated_text_alloc;
- gboolean re_complete;
-
- gchar *user_dir_name_buffer;
- gint user_directories_len;
-
- gchar *last_completion_text;
-
- gint user_completion_index; /* if >= 0, currently completing ~user */
-
- struct _CompletionDir *completion_dir; /* directory completing from */
- struct _CompletionDir *active_completion_dir;
-
- struct _PossibleCompletion the_completion;
-
- struct _CompletionDir *reference_dir; /* initial directory */
-
- GList* directory_storage;
- GList* directory_sent_storage;
-
- struct _CompletionUserDir *user_directories;
-};
-
-enum {
- PROP_0,
- PROP_SHOW_FILEOPS,
- PROP_FILENAME,
- PROP_SELECT_MULTIPLE
-};
-
-enum {
- DIR_COLUMN
-};
-
-enum {
- FILE_COLUMN
-};
-
-/* File completion functions which would be external, were they used
- * outside of this file.
- */
-
-static CompletionState* cmpl_init_state (void);
-static void cmpl_free_state (CompletionState *cmpl_state);
-static gint cmpl_state_okay (CompletionState* cmpl_state);
-static const gchar* cmpl_strerror (gint);
-
-static PossibleCompletion* cmpl_completion_matches(gchar *text_to_complete,
- gchar **remaining_text,
- CompletionState *cmpl_state);
-
-/* Returns a name for consideration, possibly a completion, this name
- * will be invalid after the next call to cmpl_next_completion.
- */
-static char* cmpl_this_completion (PossibleCompletion*);
-
-/* True if this completion matches the given text. Otherwise, this
- * output can be used to have a list of non-completions.
- */
-static gint cmpl_is_a_completion (PossibleCompletion*);
-
-/* True if the completion is a directory
- */
-static gboolean cmpl_is_directory (PossibleCompletion*);
-
-/* Obtains the next completion, or NULL
- */
-static PossibleCompletion* cmpl_next_completion (CompletionState*);
-
-/* Updating completions: the return value of cmpl_updated_text() will
- * be text_to_complete completed as much as possible after the most
- * recent call to cmpl_completion_matches. For the present
- * application, this is the suggested replacement for the user's input
- * string. You must CALL THIS AFTER ALL cmpl_text_completions have
- * been received.
- */
-static gchar* cmpl_updated_text (CompletionState* cmpl_state);
-
-/* After updating, to see if the completion was a directory, call
- * this. If it was, you should consider re-calling completion_matches.
- */
-static gboolean cmpl_updated_dir (CompletionState* cmpl_state);
-
-/* Current location: if using file completion, return the current
- * directory, from which file completion begins. More specifically,
- * the cwd concatenated with all exact completions up to the last
- * directory delimiter('/').
- */
-static gchar* cmpl_reference_position (CompletionState* cmpl_state);
-
-#if 0
-/* This doesn't work currently and would require changes
- * to fnmatch.c to get working.
- */
-/* backing up: if cmpl_completion_matches returns NULL, you may query
- * the index of the last completable character into cmpl_updated_text.
- */
-static gint cmpl_last_valid_char (CompletionState* cmpl_state);
-#endif
-
-/* When the user selects a non-directory, call cmpl_completion_fullname
- * to get the full name of the selected file.
- */
-static gchar* cmpl_completion_fullname (const gchar*, CompletionState* cmpl_state);
-
-
-/* Directory operations. */
-static CompletionDir* open_ref_dir (gchar* text_to_complete,
- gchar** remaining_text,
- CompletionState* cmpl_state);
-#ifndef G_PLATFORM_WIN32
-static gboolean check_dir (gchar *dir_name,
- struct stat *result,
- gboolean *stat_subdirs);
-#endif
-static CompletionDir* open_dir (gchar* dir_name,
- CompletionState* cmpl_state);
-#ifdef HAVE_PWD_H
-static CompletionDir* open_user_dir (const gchar* text_to_complete,
- CompletionState *cmpl_state);
-#endif
-static CompletionDir* open_relative_dir (gchar* dir_name, CompletionDir* dir,
- CompletionState *cmpl_state);
-static CompletionDirSent* open_new_dir (gchar* dir_name,
- struct stat* sbuf,
- gboolean stat_subdirs);
-static gint correct_dir_fullname (CompletionDir* cmpl_dir);
-static gint correct_parent (CompletionDir* cmpl_dir,
- struct stat *sbuf);
-#ifndef G_PLATFORM_WIN32
-static gchar* find_parent_dir_fullname (gchar* dirname);
-#endif
-static CompletionDir* attach_dir (CompletionDirSent* sent,
- gchar* dir_name,
- CompletionState *cmpl_state);
-static void free_dir_sent (CompletionDirSent* sent);
-static void free_dir (CompletionDir *dir);
-static void prune_memory_usage(CompletionState *cmpl_state);
-
-/* Completion operations */
-#ifdef HAVE_PWD_H
-static PossibleCompletion* attempt_homedir_completion(gchar* text_to_complete,
- CompletionState *cmpl_state);
-#endif
-static PossibleCompletion* attempt_file_completion(CompletionState *cmpl_state);
-static CompletionDir* find_completion_dir(gchar* text_to_complete,
- gchar** remaining_text,
- CompletionState* cmpl_state);
-static PossibleCompletion* append_completion_text(gchar* text,
- CompletionState* cmpl_state);
-#ifdef HAVE_PWD_H
-static gint get_pwdb(CompletionState* cmpl_state);
-static gint compare_user_dir(const void* a, const void* b);
-#endif
-static gint first_diff_index(gchar* pat, gchar* text);
-static gint compare_cmpl_dir(const void* a, const void* b);
-static void update_cmpl(PossibleCompletion* poss,
- CompletionState* cmpl_state);
-
-static void gtk_file_selection_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_file_selection_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_file_selection_finalize (GObject *object);
-static void gtk_file_selection_destroy (GtkObject *object);
-static void gtk_file_selection_map (GtkWidget *widget);
-static gint gtk_file_selection_key_press (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data);
-static gint gtk_file_selection_insert_text (GtkWidget *widget,
- const gchar *new_text,
- gint new_text_length,
- gint *position,
- gpointer user_data);
-static void gtk_file_selection_update_fileops (GtkFileSelection *filesel);
-
-static void gtk_file_selection_file_activate (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer user_data);
-static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
- gpointer user_data);
-static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer user_data);
-
-static void gtk_file_selection_populate (GtkFileSelection *fs,
- gchar *rel_path,
- gboolean try_complete,
- gboolean reset_entry);
-static void gtk_file_selection_abort (GtkFileSelection *fs);
-
-static void gtk_file_selection_update_history_menu (GtkFileSelection *fs,
- gchar *current_dir);
-
-static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
-static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
-static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
-
-static void free_selected_names (GPtrArray *names);
-
-#ifndef G_PLATFORM_WIN32
-
-#define compare_utf8_filenames(a, b) strcmp(a, b)
-#define compare_sys_filenames(a, b) strcmp(a, b)
-
-#else
-
-static gint
-compare_utf8_filenames (const gchar *a,
- const gchar *b)
-{
- gchar *a_folded, *b_folded;
- gint retval;
-
- a_folded = g_utf8_strdown (a, -1);
- b_folded = g_utf8_strdown (b, -1);
-
- retval = strcmp (a_folded, b_folded);
-
- g_free (a_folded);
- g_free (b_folded);
-
- return retval;
-}
-
-static gint
-compare_sys_filenames (const gchar *a,
- const gchar *b)
-{
- gchar *a_utf8, *b_utf8;
- gint retval;
-
- a_utf8 = g_filename_to_utf8 (a, -1, NULL, NULL, NULL);
- b_utf8 = g_filename_to_utf8 (b, -1, NULL, NULL, NULL);
-
- retval = compare_utf8_filenames (a_utf8, b_utf8);
-
- g_free (a_utf8);
- g_free (b_utf8);
-
- return retval;
-}
-
-#endif
-
-/* Saves errno when something cmpl does fails. */
-static gint cmpl_errno;
-
-#ifdef G_WITH_CYGWIN
-/*
- * Take the path currently in the file selection
- * entry field and translate as necessary from
- * a Win32 style to Cygwin style path. For
- * instance translate:
- * x:\somepath\file.jpg
- * to:
- * /cygdrive/x/somepath/file.jpg
- *
- * Replace the path in the selection text field.
- * Return a boolean value concerning whether a
- * translation had to be made.
- */
-static int
-translate_win32_path (GtkFileSelection *filesel)
-{
- int updated = 0;
- const gchar *path;
- gchar newPath[MAX_PATH];
-
- /*
- * Retrieve the current path
- */
- path = gtk_entry_get_text (GTK_ENTRY (filesel->selection_entry));
-
- cygwin_conv_to_posix_path (path, newPath);
- updated = (strcmp (path, newPath) != 0);
-
- if (updated)
- gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), newPath);
-
- return updated;
-}
-#endif
-
-G_DEFINE_TYPE (GtkFileSelection, gtk_file_selection, GTK_TYPE_DIALOG)
-
-static void
-gtk_file_selection_class_init (GtkFileSelectionClass *class)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- gobject_class = (GObjectClass*) class;
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
-
- gobject_class->finalize = gtk_file_selection_finalize;
- gobject_class->set_property = gtk_file_selection_set_property;
- gobject_class->get_property = gtk_file_selection_get_property;
-
- g_object_class_install_property (gobject_class,
- PROP_FILENAME,
- g_param_spec_string ("filename",
- P_("Filename"),
- P_("The currently selected filename"),
- NULL,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_SHOW_FILEOPS,
- g_param_spec_boolean ("show-fileops",
- P_("Show file operations"),
- P_("Whether buttons for creating/manipulating files should be displayed"),
- TRUE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_SELECT_MULTIPLE,
- g_param_spec_boolean ("select-multiple",
- P_("Select Multiple"),
- P_("Whether to allow multiple files to be selected"),
- FALSE,
- GTK_PARAM_READWRITE));
- object_class->destroy = gtk_file_selection_destroy;
- widget_class->map = gtk_file_selection_map;
-}
-
-static void gtk_file_selection_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkFileSelection *filesel;
-
- filesel = GTK_FILE_SELECTION (object);
-
- switch (prop_id)
- {
- case PROP_FILENAME:
- gtk_file_selection_set_filename (filesel,
- g_value_get_string (value));
- break;
- case PROP_SHOW_FILEOPS:
- if (g_value_get_boolean (value))
- gtk_file_selection_show_fileop_buttons (filesel);
- else
- gtk_file_selection_hide_fileop_buttons (filesel);
- break;
- case PROP_SELECT_MULTIPLE:
- gtk_file_selection_set_select_multiple (filesel, g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void gtk_file_selection_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkFileSelection *filesel;
-
- filesel = GTK_FILE_SELECTION (object);
-
- switch (prop_id)
- {
- case PROP_FILENAME:
- g_value_set_string (value,
- gtk_file_selection_get_filename(filesel));
- break;
-
- case PROP_SHOW_FILEOPS:
- /* This is a little bit hacky, but doing otherwise would require
- * adding a field to the object.
- */
- g_value_set_boolean (value, (filesel->fileop_c_dir &&
- filesel->fileop_del_file &&
- filesel->fileop_ren_file));
- break;
- case PROP_SELECT_MULTIPLE:
- g_value_set_boolean (value, gtk_file_selection_get_select_multiple (filesel));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-grab_default (GtkWidget *widget)
-{
- gtk_widget_grab_default (widget);
- return FALSE;
-}
-
-static void
-gtk_file_selection_init (GtkFileSelection *filesel)
-{
- GtkWidget *entry_vbox;
- GtkWidget *label;
- GtkWidget *list_hbox, *list_container;
- GtkWidget *pulldown_hbox;
- GtkWidget *scrolled_win;
- GtkWidget *eventbox;
- GtkWidget *spacer;
- GtkDialog *dialog;
-
- GtkListStore *model;
- GtkTreeViewColumn *column;
-
- gtk_widget_push_composite_child ();
-
- dialog = GTK_DIALOG (filesel);
-
- filesel->cmpl_state = cmpl_init_state ();
-
- /* The dialog-sized vertical box */
- filesel->main_vbox = dialog->vbox;
- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
-
- /* The horizontal box containing create, rename etc. buttons */
- filesel->button_area = gtk_hbutton_box_new ();
- gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
- FALSE, FALSE, 0);
- gtk_widget_show (filesel->button_area);
-
- gtk_file_selection_show_fileop_buttons (filesel);
-
- /* hbox for pulldown menu */
- pulldown_hbox = gtk_hbox_new (TRUE, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
- gtk_widget_show (pulldown_hbox);
-
- /* Pulldown menu */
- filesel->history_pulldown = gtk_option_menu_new ();
- gtk_widget_show (filesel->history_pulldown);
- gtk_box_pack_start (GTK_BOX (pulldown_hbox), filesel->history_pulldown,
- FALSE, FALSE, 0);
-
- /* The horizontal box containing the directory and file listboxes */
-
- spacer = gtk_hbox_new (FALSE, 0);
- gtk_widget_set_size_request (spacer, -1, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), spacer, FALSE, FALSE, 0);
- gtk_widget_show (spacer);
-
- list_hbox = gtk_hbox_new (FALSE, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), list_hbox, TRUE, TRUE, 0);
- gtk_widget_show (list_hbox);
- if (WANT_HPANED)
- list_container = g_object_new (GTK_TYPE_HPANED,
- "visible", TRUE,
- "parent", list_hbox,
- "border_width", 0,
- NULL);
- else
- list_container = list_hbox;
-
- spacer = gtk_hbox_new (FALSE, 0);
- gtk_widget_set_size_request (spacer, -1, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), spacer, FALSE, FALSE, 0);
- gtk_widget_show (spacer);
-
- /* The directories list */
-
- model = gtk_list_store_new (1, G_TYPE_STRING);
- filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
- g_object_unref (model);
-
- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
- gtk_cell_renderer_text_new (),
- "text", DIR_COLUMN,
- NULL);
- label = gtk_label_new_with_mnemonic (_("Fol_ders"));
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
- gtk_widget_show (label);
- gtk_tree_view_column_set_widget (column, label);
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
-
- gtk_widget_set_size_request (filesel->dir_list,
- DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
- g_signal_connect (filesel->dir_list, "row-activated",
- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
-
- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
- if (GTK_IS_PANED (list_container))
- gtk_paned_pack1 (GTK_PANED (list_container), scrolled_win, TRUE, TRUE);
- else
- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
- gtk_widget_show (filesel->dir_list);
- gtk_widget_show (scrolled_win);
-
- /* The files list */
- model = gtk_list_store_new (1, G_TYPE_STRING);
- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
- g_object_unref (model);
-
- column = gtk_tree_view_column_new_with_attributes (_("Files"),
- gtk_cell_renderer_text_new (),
- "text", FILE_COLUMN,
- NULL);
- label = gtk_label_new_with_mnemonic (_("_Files"));
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
- gtk_widget_show (label);
- gtk_tree_view_column_set_widget (column, label);
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
-
- gtk_widget_set_size_request (filesel->file_list,
- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
- g_signal_connect (filesel->file_list, "row-activated",
- G_CALLBACK (gtk_file_selection_file_activate), filesel);
- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
- G_CALLBACK (gtk_file_selection_file_changed), filesel);
-
- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
- gtk_widget_show (filesel->file_list);
- gtk_widget_show (scrolled_win);
-
- /* action area for packing buttons into. */
- filesel->action_area = gtk_hbox_new (TRUE, 0);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
- FALSE, FALSE, 0);
- gtk_widget_show (filesel->action_area);
-
- /* The OK/Cancel button area */
-
- /* The Cancel button */
- filesel->cancel_button = gtk_dialog_add_button (dialog,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL);
- /* The OK button */
- filesel->ok_button = gtk_dialog_add_button (dialog,
- GTK_STOCK_OK,
- GTK_RESPONSE_OK);
-
- gtk_dialog_set_alternative_button_order (dialog,
- GTK_RESPONSE_OK,
- GTK_RESPONSE_CANCEL,
- -1);
-
- gtk_widget_grab_default (filesel->ok_button);
-
- /* The selection entry widget */
- entry_vbox = gtk_vbox_new (FALSE, 2);
- gtk_box_pack_end (GTK_BOX (filesel->main_vbox), entry_vbox, FALSE, FALSE, 2);
- gtk_widget_show (entry_vbox);
-
- eventbox = gtk_event_box_new ();
- filesel->selection_text = label = gtk_label_new ("");
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_container_add (GTK_CONTAINER (eventbox), label);
- gtk_box_pack_start (GTK_BOX (entry_vbox), eventbox, FALSE, FALSE, 0);
- gtk_widget_show (label);
- gtk_widget_show (eventbox);
-
- filesel->selection_entry = gtk_entry_new ();
- g_signal_connect (filesel->selection_entry, "key-press-event",
- G_CALLBACK (gtk_file_selection_key_press), filesel);
- g_signal_connect (filesel->selection_entry, "insert-text",
- G_CALLBACK (gtk_file_selection_insert_text), NULL);
- g_signal_connect_swapped (filesel->selection_entry, "changed",
- G_CALLBACK (gtk_file_selection_update_fileops), filesel);
- g_signal_connect_swapped (filesel->selection_entry, "focus-in-event",
- G_CALLBACK (grab_default),
- filesel->ok_button);
- g_signal_connect_swapped (filesel->selection_entry, "activate",
- G_CALLBACK (gtk_button_clicked),
- filesel->ok_button);
-
- gtk_box_pack_start (GTK_BOX (entry_vbox), filesel->selection_entry, TRUE, TRUE, 0);
- gtk_widget_show (filesel->selection_entry);
-
- gtk_label_set_mnemonic_widget (GTK_LABEL (filesel->selection_text),
- filesel->selection_entry);
-
- if (!cmpl_state_okay (filesel->cmpl_state))
- {
- gchar err_buf[256];
-
- g_snprintf (err_buf, sizeof (err_buf), _("Folder unreadable: %s"), cmpl_strerror (cmpl_errno));
-
- gtk_label_set_text (GTK_LABEL (filesel->selection_text), err_buf);
- }
- else
- {
- gtk_file_selection_populate (filesel, "", FALSE, TRUE);
- }
-
- gtk_widget_grab_focus (filesel->selection_entry);
-
- gtk_widget_pop_composite_child ();
-}
-
-static void
-dnd_really_drop (GtkWidget *dialog, gint response_id, GtkFileSelection *fs)
-{
- gchar *filename;
-
- if (response_id == GTK_RESPONSE_YES)
- {
- filename = g_object_get_data (G_OBJECT (dialog), "gtk-fs-dnd-filename");
-
- gtk_file_selection_set_filename (fs, filename);
- }
-
- gtk_widget_destroy (dialog);
-}
-
-static void
-filenames_dropped (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time)
-{
- char **uris = NULL;
- char *filename = NULL;
- char *hostname;
- const char *this_hostname;
- GError *error = NULL;
-
- uris = gtk_selection_data_get_uris (selection_data);
- if (!uris || !uris[0])
- {
- g_strfreev (uris);
- return;
- }
-
- filename = g_filename_from_uri (uris[0], &hostname, &error);
- g_strfreev (uris);
-
- if (!filename)
- {
- g_warning ("Error getting dropped filename: %s\n",
- error->message);
- g_error_free (error);
- return;
- }
-
- this_hostname = g_get_host_name ();
-
- if ((hostname == NULL) ||
- (strcmp (hostname, this_hostname) == 0) ||
- (strcmp (hostname, "localhost") == 0))
- gtk_file_selection_set_filename (GTK_FILE_SELECTION (widget),
- filename);
- else
- {
- GtkWidget *dialog;
- gchar *filename_utf8;
-
- /* Conversion back to UTF-8 should always succeed for the result
- * of g_filename_from_uri()
- */
- filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
- g_assert (filename_utf8);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (widget),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO,
- _("The file \"%s\" resides on another machine (called %s) and may not be available to this program.\n"
- "Are you sure that you want to select it?"), filename_utf8, hostname);
- g_free (filename_utf8);
-
- g_object_set_data_full (G_OBJECT (dialog), I_("gtk-fs-dnd-filename"), g_strdup (filename), g_free);
-
- g_signal_connect_data (dialog, "response",
- (GCallback) dnd_really_drop,
- widget, NULL, 0);
-
- gtk_widget_show (dialog);
- }
-
- g_free (hostname);
- g_free (filename);
-}
-
-static void
-filenames_drag_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- GtkFileSelection *filesel)
-{
- const gchar *file;
- gchar *filename_utf8;
-
- file = gtk_file_selection_get_filename (filesel);
- if (!file)
- return;
-
- if (gtk_targets_include_uri (&selection_data->target, 1))
- {
- gchar *file_uri;
- const char *hostname;
- GError *error;
- char *uris[2];
-
- hostname = g_get_host_name ();
-
- error = NULL;
- file_uri = g_filename_to_uri (file, hostname, &error);
- if (!file_uri)
- {
- g_warning ("Error getting filename: %s\n",
- error->message);
- g_error_free (error);
- return;
- }
-
- uris[0] = file_uri;
- uris[1] = NULL;
- gtk_selection_data_set_uris (selection_data, uris);
- g_free (file_uri);
-
- return;
- }
-
- filename_utf8 = g_filename_to_utf8 (file, -1, NULL, NULL, NULL);
- if (!filename_utf8)
- return;
-
- gtk_selection_data_set_text (selection_data, filename_utf8, -1);
- g_free (filename_utf8);
-}
-
-static void
-file_selection_setup_dnd (GtkFileSelection *filesel)
-{
- GtkWidget *eventbox;
-
- gtk_drag_dest_set (GTK_WIDGET (filesel),
- GTK_DEST_DEFAULT_ALL,
- NULL, 0,
- GDK_ACTION_COPY);
- gtk_drag_dest_add_uri_targets (GTK_WIDGET (filesel));
-
- g_signal_connect (filesel, "drag-data-received",
- G_CALLBACK (filenames_dropped), NULL);
-
- eventbox = gtk_widget_get_parent (filesel->selection_text);
- gtk_drag_source_set (eventbox,
- GDK_BUTTON1_MASK,
- NULL, 0,
- GDK_ACTION_COPY);
- gtk_drag_source_add_uri_targets (eventbox);
- gtk_drag_source_add_text_targets (eventbox);
-
- g_signal_connect (eventbox, "drag-data-get",
- G_CALLBACK (filenames_drag_get), filesel);
-}
-
-GtkWidget*
-gtk_file_selection_new (const gchar *title)
-{
- GtkFileSelection *filesel;
-
- filesel = g_object_new (GTK_TYPE_FILE_SELECTION, NULL);
- gtk_window_set_title (GTK_WINDOW (filesel), title);
- gtk_dialog_set_has_separator (GTK_DIALOG (filesel), FALSE);
-
- file_selection_setup_dnd (filesel);
-
- return GTK_WIDGET (filesel);
-}
-
-void
-gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel)
-{
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
-
- /* delete, create directory, and rename */
- if (!filesel->fileop_c_dir)
- {
- filesel->fileop_c_dir = gtk_button_new_with_mnemonic (_("_New Folder"));
- g_signal_connect (filesel->fileop_c_dir, "clicked",
- G_CALLBACK (gtk_file_selection_create_dir),
- filesel);
- gtk_box_pack_start (GTK_BOX (filesel->button_area),
- filesel->fileop_c_dir, TRUE, TRUE, 0);
- gtk_widget_show (filesel->fileop_c_dir);
- }
-
- if (!filesel->fileop_del_file)
- {
- filesel->fileop_del_file = gtk_button_new_with_mnemonic (_("De_lete File"));
- g_signal_connect (filesel->fileop_del_file, "clicked",
- G_CALLBACK (gtk_file_selection_delete_file),
- filesel);
- gtk_box_pack_start (GTK_BOX (filesel->button_area),
- filesel->fileop_del_file, TRUE, TRUE, 0);
- gtk_widget_show (filesel->fileop_del_file);
- }
-
- if (!filesel->fileop_ren_file)
- {
- filesel->fileop_ren_file = gtk_button_new_with_mnemonic (_("_Rename File"));
- g_signal_connect (filesel->fileop_ren_file, "clicked",
- G_CALLBACK (gtk_file_selection_rename_file),
- filesel);
- gtk_box_pack_start (GTK_BOX (filesel->button_area),
- filesel->fileop_ren_file, TRUE, TRUE, 0);
- gtk_widget_show (filesel->fileop_ren_file);
- }
-
- gtk_file_selection_update_fileops (filesel);
-
- g_object_notify (G_OBJECT (filesel), "show-fileops");
-}
-
-void
-gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel)
-{
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
-
- if (filesel->fileop_ren_file)
- {
- gtk_widget_destroy (filesel->fileop_ren_file);
- filesel->fileop_ren_file = NULL;
- }
-
- if (filesel->fileop_del_file)
- {
- gtk_widget_destroy (filesel->fileop_del_file);
- filesel->fileop_del_file = NULL;
- }
-
- if (filesel->fileop_c_dir)
- {
- gtk_widget_destroy (filesel->fileop_c_dir);
- filesel->fileop_c_dir = NULL;
- }
- g_object_notify (G_OBJECT (filesel), "show-fileops");
-}
-
-
-
-/**
- * gtk_file_selection_set_filename:
- * @filesel: a #GtkFileSelection.
- * @filename: a string to set as the default file name.
- *
- * Sets a default path for the file requestor. If @filename includes a
- * directory path, then the requestor will open with that path as its
- * current working directory.
- *
- * This has the consequence that in order to open the requestor with a
- * working directory and an empty filename, @filename must have a trailing
- * directory separator.
- *
- * The encoding of @filename is preferred GLib file name encoding, which
- * may not be UTF-8. See g_filename_from_utf8().
- **/
-void
-gtk_file_selection_set_filename (GtkFileSelection *filesel,
- const gchar *filename)
-{
- gchar *buf;
- const char *name, *last_slash;
- char *filename_utf8;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
- g_return_if_fail (filename != NULL);
-
- filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
- g_return_if_fail (filename_utf8 != NULL);
-
- last_slash = strrchr (filename_utf8, G_DIR_SEPARATOR);
-
- if (!last_slash)
- {
- buf = g_strdup ("");
- name = filename_utf8;
- }
- else
- {
- buf = g_strdup (filename_utf8);
- buf[last_slash - filename_utf8 + 1] = 0;
- name = last_slash + 1;
- }
-
- gtk_file_selection_populate (filesel, buf, FALSE, TRUE);
-
- if (filesel->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
- g_free (buf);
- g_object_notify (G_OBJECT (filesel), "filename");
-
- g_free (filename_utf8);
-}
-
-/**
- * gtk_file_selection_get_filename:
- * @filesel: a #GtkFileSelection
- *
- * This function returns the selected filename in the GLib file name
- * encoding. To convert to UTF-8, call g_filename_to_utf8(). The
- * returned string points to a statically allocated buffer and should
- * be copied if you plan to keep it around.
- *
- * If no file is selected then the selected directory path is returned.
- *
- * Return value: currently-selected filename in the on-disk encoding.
- **/
-G_CONST_RETURN gchar*
-gtk_file_selection_get_filename (GtkFileSelection *filesel)
-{
- static const gchar nothing[2] = "";
- static GString *something;
- char *sys_filename;
- const char *text;
-
- g_return_val_if_fail (GTK_IS_FILE_SELECTION (filesel), nothing);
-
-#ifdef G_WITH_CYGWIN
- translate_win32_path (filesel);
-#endif
- text = gtk_entry_get_text (GTK_ENTRY (filesel->selection_entry));
- if (text)
- {
- gchar *fullname = cmpl_completion_fullname (text, filesel->cmpl_state);
- sys_filename = g_filename_from_utf8 (fullname, -1, NULL, NULL, NULL);
- g_free (fullname);
- if (!sys_filename)
- return nothing;
- if (!something)
- something = g_string_new (sys_filename);
- else
- g_string_assign (something, sys_filename);
- g_free (sys_filename);
-
- return something->str;
- }
-
- return nothing;
-}
-
-void
-gtk_file_selection_complete (GtkFileSelection *filesel,
- const gchar *pattern)
-{
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
- g_return_if_fail (pattern != NULL);
-
- if (filesel->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
- gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE, TRUE);
-}
-
-static void
-gtk_file_selection_destroy (GtkObject *object)
-{
- GtkFileSelection *filesel;
- GList *list;
- HistoryCallbackArg *callback_arg;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (object));
-
- filesel = GTK_FILE_SELECTION (object);
-
- if (filesel->fileop_dialog)
- {
- gtk_widget_destroy (filesel->fileop_dialog);
- filesel->fileop_dialog = NULL;
- }
-
- if (filesel->history_list)
- {
- list = filesel->history_list;
- while (list)
- {
- callback_arg = list->data;
- g_free (callback_arg->directory);
- g_free (callback_arg);
- list = list->next;
- }
- g_list_free (filesel->history_list);
- filesel->history_list = NULL;
- }
-
- if (filesel->cmpl_state)
- {
- cmpl_free_state (filesel->cmpl_state);
- filesel->cmpl_state = NULL;
- }
-
- if (filesel->selected_names)
- {
- free_selected_names (filesel->selected_names);
- filesel->selected_names = NULL;
- }
-
- if (filesel->last_selected)
- {
- g_free (filesel->last_selected);
- filesel->last_selected = NULL;
- }
-
- GTK_OBJECT_CLASS (gtk_file_selection_parent_class)->destroy (object);
-}
-
-static void
-gtk_file_selection_map (GtkWidget *widget)
-{
- GtkFileSelection *filesel = GTK_FILE_SELECTION (widget);
-
- /* Refresh the contents */
- gtk_file_selection_populate (filesel, "", FALSE, FALSE);
-
- GTK_WIDGET_CLASS (gtk_file_selection_parent_class)->map (widget);
-}
-
-static void
-gtk_file_selection_finalize (GObject *object)
-{
- GtkFileSelection *filesel = GTK_FILE_SELECTION (object);
-
- g_free (filesel->fileop_file);
-
- G_OBJECT_CLASS (gtk_file_selection_parent_class)->finalize (object);
-}
-
-/* Begin file operations callbacks */
-
-static void
-gtk_file_selection_fileop_error (GtkFileSelection *fs,
- gchar *error_message)
-{
- GtkWidget *dialog;
-
- g_return_if_fail (error_message != NULL);
-
- /* main dialog */
- dialog = gtk_message_dialog_new (GTK_WINDOW (fs),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- "%s", error_message);
-
- /* yes, we free it */
- g_free (error_message);
-
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-
- g_signal_connect_swapped (dialog, "response",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
-
- gtk_widget_show (dialog);
-}
-
-static void
-gtk_file_selection_fileop_destroy (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- fs->fileop_dialog = NULL;
-}
-
-static gboolean
-entry_is_empty (GtkEntry *entry)
-{
- const gchar *text = gtk_entry_get_text (entry);
-
- return *text == '\0';
-}
-
-static void
-gtk_file_selection_fileop_entry_changed (GtkEntry *entry,
- GtkWidget *button)
-{
- gtk_widget_set_sensitive (button, !entry_is_empty (entry));
-}
-
-static void
-gtk_file_selection_create_dir_confirmed (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- const gchar *dirname;
- gchar *path;
- gchar *full_path;
- gchar *sys_full_path;
- gchar *buf;
- GError *error = NULL;
- CompletionState *cmpl_state;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- dirname = gtk_entry_get_text (GTK_ENTRY (fs->fileop_entry));
- cmpl_state = (CompletionState*) fs->cmpl_state;
- path = cmpl_reference_position (cmpl_state);
-
- full_path = g_strconcat (path, G_DIR_SEPARATOR_S, dirname, NULL);
- sys_full_path = g_filename_from_utf8 (full_path, -1, NULL, NULL, &error);
- if (error)
- {
- if (g_error_matches (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE))
- buf = g_strdup_printf (_("The folder name \"%s\" contains symbols that are not allowed in filenames"), dirname);
- else
- buf = g_strdup_printf (_("Error creating folder '%s': %s"),
- dirname, error->message);
- gtk_file_selection_fileop_error (fs, buf);
- g_error_free (error);
- goto out;
- }
-
- if (g_mkdir (sys_full_path, 0777) < 0)
- {
- int errsv = errno;
-
- buf = g_strdup_printf (_("Error creating folder '%s': %s"),
- dirname, g_strerror (errsv));
- gtk_file_selection_fileop_error (fs, buf);
- }
-
- out:
- g_free (full_path);
- g_free (sys_full_path);
-
- gtk_widget_destroy (fs->fileop_dialog);
- gtk_file_selection_populate (fs, "", FALSE, FALSE);
-}
-
-static void
-gtk_file_selection_create_dir (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- GtkWidget *label;
- GtkWidget *dialog;
- GtkWidget *vbox;
- GtkWidget *button;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- if (fs->fileop_dialog)
- return;
-
- /* main dialog */
- dialog = gtk_dialog_new ();
- fs->fileop_dialog = dialog;
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (gtk_file_selection_fileop_destroy),
- fs);
- gtk_window_set_title (GTK_WINDOW (dialog), _("New Folder"));
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (fs));
-
- /* If file dialog is grabbed, grab option dialog */
- /* When option dialog is closed, file dialog will be grabbed again */
- if (GTK_WINDOW (fs)->modal)
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox,
- FALSE, FALSE, 0);
- gtk_widget_show( vbox);
-
- label = gtk_label_new_with_mnemonic (_("_Folder name:"));
- gtk_misc_set_alignment(GTK_MISC (label), 0.0, 0.0);
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 5);
- gtk_widget_show (label);
-
- /* The directory entry widget */
- fs->fileop_entry = gtk_entry_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), fs->fileop_entry);
- gtk_box_pack_start (GTK_BOX (vbox), fs->fileop_entry,
- TRUE, TRUE, 5);
- gtk_widget_set_can_default (fs->fileop_entry, TRUE);
- gtk_entry_set_activates_default (GTK_ENTRY (fs->fileop_entry), TRUE);
- gtk_widget_show (fs->fileop_entry);
-
- /* buttons */
- button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
- g_signal_connect_swapped (button, "clicked",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
-
- gtk_widget_grab_focus (fs->fileop_entry);
-
- button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- _("C_reate"), GTK_RESPONSE_OK);
- gtk_widget_set_sensitive (button, FALSE);
- g_signal_connect (button, "clicked",
- G_CALLBACK (gtk_file_selection_create_dir_confirmed),
- fs);
- g_signal_connect (fs->fileop_entry, "changed",
- G_CALLBACK (gtk_file_selection_fileop_entry_changed),
- button);
-
- gtk_widget_grab_default (button);
-
- gtk_widget_show (dialog);
-}
-
-static void
-gtk_file_selection_delete_file_response (GtkDialog *dialog,
- gint response_id,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- CompletionState *cmpl_state;
- gchar *path;
- gchar *full_path;
- gchar *sys_full_path;
- GError *error = NULL;
- gchar *buf;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- if (response_id != GTK_RESPONSE_OK)
- {
- gtk_widget_destroy (GTK_WIDGET (dialog));
- return;
- }
-
- cmpl_state = (CompletionState*) fs->cmpl_state;
- path = cmpl_reference_position (cmpl_state);
-
- full_path = g_strconcat (path, G_DIR_SEPARATOR_S, fs->fileop_file, NULL);
- sys_full_path = g_filename_from_utf8 (full_path, -1, NULL, NULL, &error);
- if (error)
- {
- if (g_error_matches (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE))
- buf = g_strdup_printf (_("The filename \"%s\" contains symbols that are not allowed in filenames"),
- fs->fileop_file);
- else
- buf = g_strdup_printf (_("Error deleting file '%s': %s"),
- fs->fileop_file, error->message);
-
- gtk_file_selection_fileop_error (fs, buf);
- g_error_free (error);
- goto out;
- }
-
- if (g_unlink (sys_full_path) < 0)
- {
- int errsv = errno;
-
- buf = g_strdup_printf (_("Error deleting file '%s': %s"),
- fs->fileop_file, g_strerror (errsv));
- gtk_file_selection_fileop_error (fs, buf);
- }
-
- out:
- g_free (full_path);
- g_free (sys_full_path);
-
- gtk_widget_destroy (fs->fileop_dialog);
- gtk_file_selection_populate (fs, "", FALSE, TRUE);
-}
-
-static void
-gtk_file_selection_delete_file (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- GtkWidget *dialog;
- const gchar *filename;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- if (fs->fileop_dialog)
- return;
-
-#ifdef G_WITH_CYGWIN
- translate_win32_path (fs);
-#endif
-
- filename = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
- if (strlen (filename) < 1)
- return;
-
- g_free (fs->fileop_file);
- fs->fileop_file = g_strdup (filename);
-
- /* main dialog */
- fs->fileop_dialog = dialog =
- gtk_message_dialog_new (GTK_WINDOW (fs),
- GTK_WINDOW (fs)->modal ? GTK_DIALOG_MODAL : 0,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE,
- _("Really delete file \"%s\"?"), filename);
-
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (gtk_file_selection_fileop_destroy),
- fs);
- gtk_window_set_title (GTK_WINDOW (dialog), _("Delete File"));
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
-
- /* buttons */
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_DELETE, GTK_RESPONSE_OK,
- NULL);
-
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (gtk_file_selection_delete_file_response),
- fs);
-
- gtk_widget_show (dialog);
-}
-
-static void
-gtk_file_selection_rename_file_confirmed (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- gchar *buf;
- const gchar *file;
- gchar *path;
- gchar *new_filename;
- gchar *old_filename;
- gchar *sys_new_filename;
- gchar *sys_old_filename;
- CompletionState *cmpl_state;
- GError *error = NULL;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- file = gtk_entry_get_text (GTK_ENTRY (fs->fileop_entry));
- cmpl_state = (CompletionState*) fs->cmpl_state;
- path = cmpl_reference_position (cmpl_state);
-
- new_filename = g_strconcat (path, G_DIR_SEPARATOR_S, file, NULL);
- old_filename = g_strconcat (path, G_DIR_SEPARATOR_S, fs->fileop_file, NULL);
-
- sys_new_filename = g_filename_from_utf8 (new_filename, -1, NULL, NULL, &error);
- if (error)
- {
- if (g_error_matches (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE))
- buf = g_strdup_printf (_("The filename \"%s\" contains symbols that are not allowed in filenames"), new_filename);
- else
- buf = g_strdup_printf (_("Error renaming file to \"%s\": %s"),
- new_filename, error->message);
- gtk_file_selection_fileop_error (fs, buf);
- g_error_free (error);
- goto out1;
- }
-
- sys_old_filename = g_filename_from_utf8 (old_filename, -1, NULL, NULL, &error);
- if (error)
- {
- if (g_error_matches (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE))
- buf = g_strdup_printf (_("The filename \"%s\" contains symbols that are not allowed in filenames"), old_filename);
- else
- buf = g_strdup_printf (_("Error renaming file \"%s\": %s"),
- old_filename, error->message);
- gtk_file_selection_fileop_error (fs, buf);
- g_error_free (error);
- goto out2;
- }
-
- if (g_rename (sys_old_filename, sys_new_filename) < 0)
- {
- int errsv = errno;
-
- buf = g_strdup_printf (_("Error renaming file \"%s\" to \"%s\": %s"),
- sys_old_filename, sys_new_filename,
- g_strerror (errsv));
- gtk_file_selection_fileop_error (fs, buf);
- goto out2;
- }
-
- gtk_file_selection_populate (fs, "", FALSE, FALSE);
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), file);
-
- out2:
- g_free (sys_old_filename);
-
- out1:
- g_free (new_filename);
- g_free (old_filename);
- g_free (sys_new_filename);
-
- gtk_widget_destroy (fs->fileop_dialog);
-}
-
-static void
-gtk_file_selection_rename_file (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- GtkWidget *label;
- GtkWidget *dialog;
- GtkWidget *vbox;
- GtkWidget *button;
- gchar *buf;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- if (fs->fileop_dialog)
- return;
-
- g_free (fs->fileop_file);
- fs->fileop_file = g_strdup (gtk_entry_get_text (GTK_ENTRY (fs->selection_entry)));
- if (strlen (fs->fileop_file) < 1)
- return;
-
- /* main dialog */
- fs->fileop_dialog = dialog = gtk_dialog_new ();
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (gtk_file_selection_fileop_destroy),
- fs);
- gtk_window_set_title (GTK_WINDOW (dialog), _("Rename File"));
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (fs));
-
- /* If file dialog is grabbed, grab option dialog */
- /* When option dialog closed, file dialog will be grabbed again */
- if (GTK_WINDOW (fs)->modal)
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox,
- FALSE, FALSE, 0);
- gtk_widget_show(vbox);
-
- buf = g_strdup_printf (_("Rename file \"%s\" to:"), fs->fileop_file);
- label = gtk_label_new (buf);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 5);
- gtk_widget_show (label);
- g_free (buf);
-
- /* New filename entry */
- fs->fileop_entry = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (vbox), fs->fileop_entry,
- TRUE, TRUE, 5);
- gtk_widget_set_can_default (fs->fileop_entry, TRUE);
- gtk_entry_set_activates_default (GTK_ENTRY (fs->fileop_entry), TRUE);
- gtk_widget_show (fs->fileop_entry);
-
- gtk_entry_set_text (GTK_ENTRY (fs->fileop_entry), fs->fileop_file);
- gtk_editable_select_region (GTK_EDITABLE (fs->fileop_entry),
- 0, strlen (fs->fileop_file));
-
- /* buttons */
- button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
- g_signal_connect_swapped (button, "clicked",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
-
- gtk_widget_grab_focus (fs->fileop_entry);
-
- button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- _("_Rename"), GTK_RESPONSE_OK);
- g_signal_connect (button, "clicked",
- G_CALLBACK (gtk_file_selection_rename_file_confirmed),
- fs);
- g_signal_connect (fs->fileop_entry, "changed",
- G_CALLBACK (gtk_file_selection_fileop_entry_changed),
- button);
-
- gtk_widget_grab_default (button);
-
- gtk_widget_show (dialog);
-}
-
-static gint
-gtk_file_selection_insert_text (GtkWidget *widget,
- const gchar *new_text,
- gint new_text_length,
- gint *position,
- gpointer user_data)
-{
- gchar *filename;
-
- filename = g_filename_from_utf8 (new_text, new_text_length, NULL, NULL, NULL);
-
- if (!filename)
- {
- gdk_display_beep (gtk_widget_get_display (widget));
- g_signal_stop_emission_by_name (widget, "insert-text");
- return FALSE;
- }
-
- g_free (filename);
-
- return TRUE;
-}
-
-static void
-gtk_file_selection_update_fileops (GtkFileSelection *fs)
-{
- gboolean sensitive;
-
- if (!fs->selection_entry)
- return;
-
- sensitive = !entry_is_empty (GTK_ENTRY (fs->selection_entry));
-
- if (fs->fileop_del_file)
- gtk_widget_set_sensitive (fs->fileop_del_file, sensitive);
-
- if (fs->fileop_ren_file)
- gtk_widget_set_sensitive (fs->fileop_ren_file, sensitive);
-}
-
-static gint
-gtk_file_selection_key_press (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data)
-{
- GtkFileSelection *fs;
- char *text;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- if ((event->keyval == GDK_Tab || event->keyval == GDK_KP_Tab) &&
- (event->state & gtk_accelerator_get_default_mod_mask ()) == 0)
- {
- fs = GTK_FILE_SELECTION (user_data);
-#ifdef G_WITH_CYGWIN
- translate_win32_path (fs);
-#endif
- text = g_strdup (gtk_entry_get_text (GTK_ENTRY (fs->selection_entry)));
-
- gtk_file_selection_populate (fs, text, TRUE, TRUE);
-
- g_free (text);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-gtk_file_selection_history_callback (GtkWidget *widget,
- gpointer data)
-{
- GtkFileSelection *fs = data;
- HistoryCallbackArg *callback_arg;
- GList *list;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- list = fs->history_list;
-
- while (list) {
- callback_arg = list->data;
-
- if (callback_arg->menu_item == widget)
- {
- gtk_file_selection_populate (fs, callback_arg->directory, FALSE, FALSE);
- break;
- }
-
- list = list->next;
- }
-}
-
-static void
-gtk_file_selection_update_history_menu (GtkFileSelection *fs,
- gchar *current_directory)
-{
- HistoryCallbackArg *callback_arg;
- GtkWidget *menu_item;
- GList *list;
- gchar *current_dir;
- gint dir_len;
- gint i;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
- g_return_if_fail (current_directory != NULL);
-
- list = fs->history_list;
-
- if (fs->history_menu)
- {
- while (list) {
- callback_arg = list->data;
- g_free (callback_arg->directory);
- g_free (callback_arg);
- list = list->next;
- }
- g_list_free (fs->history_list);
- fs->history_list = NULL;
-
- gtk_widget_destroy (fs->history_menu);
- }
-
- fs->history_menu = gtk_menu_new ();
-
- current_dir = g_strdup (current_directory);
-
- dir_len = strlen (current_dir);
-
- for (i = dir_len; i >= 0; i--)
- {
- /* the i == dir_len is to catch the full path for the first
- * entry. */
- if ( (current_dir[i] == G_DIR_SEPARATOR) || (i == dir_len))
- {
- /* another small hack to catch the full path */
- if (i != dir_len)
- current_dir[i + 1] = '\0';
-#ifdef G_WITH_CYGWIN
- if (!strcmp (current_dir, "//"))
- continue;
-#endif
- menu_item = gtk_menu_item_new_with_label (current_dir);
-
- callback_arg = g_new (HistoryCallbackArg, 1);
- callback_arg->menu_item = menu_item;
-
- /* since the autocompletion gets confused if you don't
- * supply a trailing '/' on a dir entry, set the full
- * (current) path to "" which just refreshes the filesel */
- if (dir_len == i)
- {
- callback_arg->directory = g_strdup ("");
- }
- else
- {
- callback_arg->directory = g_strdup (current_dir);
- }
-
- fs->history_list = g_list_append (fs->history_list, callback_arg);
-
- g_signal_connect (menu_item, "activate",
- G_CALLBACK (gtk_file_selection_history_callback),
- fs);
- gtk_menu_shell_append (GTK_MENU_SHELL (fs->history_menu), menu_item);
- gtk_widget_show (menu_item);
- }
- }
-
- gtk_option_menu_set_menu (GTK_OPTION_MENU (fs->history_pulldown),
- fs->history_menu);
- g_free (current_dir);
-}
-
-static gchar *
-get_real_filename (gchar *filename,
- gboolean free_old)
-{
-#ifdef G_WITH_CYGWIN
- /* Check to see if the selection was a drive selector */
- if (isalpha (filename[0]) && (filename[1] == ':'))
- {
- gchar temp_filename[MAX_PATH];
- int len;
-
- cygwin_conv_to_posix_path (filename, temp_filename);
-
- /* we need trailing '/'. */
- len = strlen (temp_filename);
- if (len > 0 && temp_filename[len-1] != '/')
- {
- temp_filename[len] = '/';
- temp_filename[len+1] = '\0';
- }
-
- if (free_old)
- g_free (filename);
-
- return g_strdup (temp_filename);
- }
-#endif /* G_WITH_CYGWIN */
- return filename;
-}
-
-static void
-gtk_file_selection_file_activate (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer user_data)
-{
- GtkFileSelection *fs = GTK_FILE_SELECTION (user_data);
- GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
- GtkTreeIter iter;
- gchar *filename;
-
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter, FILE_COLUMN, &filename, -1);
- filename = get_real_filename (filename, TRUE);
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
- gtk_button_clicked (GTK_BUTTON (fs->ok_button));
-
- g_free (filename);
-}
-
-static void
-gtk_file_selection_dir_activate (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer user_data)
-{
- GtkFileSelection *fs = GTK_FILE_SELECTION (user_data);
- GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
- GtkTreeIter iter;
- gchar *filename;
-
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter, DIR_COLUMN, &filename, -1);
- filename = get_real_filename (filename, TRUE);
- gtk_file_selection_populate (fs, filename, FALSE, FALSE);
- g_free (filename);
-}
-
-#ifdef G_PLATFORM_WIN32
-
-static void
-win32_gtk_add_drives_to_dir_list (GtkListStore *model)
-{
- gchar *textPtr;
- gchar buffer[128];
- char formatBuffer[128];
- GtkTreeIter iter;
-
- /* Get the drives string */
- GetLogicalDriveStrings (sizeof (buffer), buffer);
-
- /* Add the drives as necessary */
- textPtr = buffer;
- while (*textPtr != '\0')
- {
- /* Ignore floppies (?) */
- if (GetDriveType (textPtr) != DRIVE_REMOVABLE)
- {
- /* Build the actual displayable string */
- g_snprintf (formatBuffer, sizeof (formatBuffer), "%c:\\", toupper (textPtr[0]));
-
- /* Add to the list */
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, DIR_COLUMN, formatBuffer, -1);
- }
- textPtr += (strlen (textPtr) + 1);
- }
-}
-#endif
-
-static gchar *
-escape_underscores (const gchar *str)
-{
- GString *result = g_string_new (NULL);
- while (*str)
- {
- if (*str == '_')
- g_string_append_c (result, '_');
-
- g_string_append_c (result, *str);
- str++;
- }
-
- return g_string_free (result, FALSE);
-}
-
-static void
-gtk_file_selection_populate (GtkFileSelection *fs,
- gchar *rel_path,
- gboolean try_complete,
- gboolean reset_entry)
-{
- CompletionState *cmpl_state;
- PossibleCompletion* poss;
- GtkTreeIter iter;
- GtkListStore *dir_model;
- GtkListStore *file_model;
- gchar* filename;
- gchar* rem_path = rel_path;
- gchar* sel_text;
- gint did_recurse = FALSE;
- gint possible_count = 0;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
- cmpl_state = (CompletionState*) fs->cmpl_state;
- poss = cmpl_completion_matches (rel_path, &rem_path, cmpl_state);
-
- if (!cmpl_state_okay (cmpl_state))
- {
- /* Something went wrong. */
- gtk_file_selection_abort (fs);
- return;
- }
-
- g_assert (cmpl_state->reference_dir);
-
- dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
-
- gtk_list_store_clear (dir_model);
- gtk_list_store_clear (file_model);
-
- /* Set the dir list to include ./ and ../ */
- gtk_list_store_append (dir_model, &iter);
- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, "." G_DIR_SEPARATOR_S, -1);
- gtk_list_store_append (dir_model, &iter);
- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, ".." G_DIR_SEPARATOR_S, -1);
-
- while (poss)
- {
- if (cmpl_is_a_completion (poss))
- {
- possible_count += 1;
-
- filename = cmpl_this_completion (poss);
-
- if (cmpl_is_directory (poss))
- {
- if (strcmp (filename, "." G_DIR_SEPARATOR_S) != 0 &&
- strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
- {
- gtk_list_store_append (dir_model, &iter);
- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
- }
- }
- else
- {
- gtk_list_store_append (file_model, &iter);
- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
- }
- }
-
- poss = cmpl_next_completion (cmpl_state);
- }
-
-#ifdef G_PLATFORM_WIN32
- /* For Windows, add drives as potential selections */
- win32_gtk_add_drives_to_dir_list (dir_model);
-#endif
-
- /* File lists are set. */
-
- g_assert (cmpl_state->reference_dir);
-
- if (try_complete)
- {
-
- /* User is trying to complete filenames, so advance the user's input
- * string to the updated_text, which is the common leading substring
- * of all possible completions, and if its a directory attempt
- * attempt completions in it. */
-
- if (cmpl_updated_text (cmpl_state)[0])
- {
-
- if (cmpl_updated_dir (cmpl_state))
- {
- gchar* dir_name = g_strdup (cmpl_updated_text (cmpl_state));
-
- did_recurse = TRUE;
-
- gtk_file_selection_populate (fs, dir_name, TRUE, TRUE);
-
- g_free (dir_name);
- }
- else
- {
- if (fs->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry),
- cmpl_updated_text (cmpl_state));
- }
- }
- else
- {
- if (fs->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), rem_path);
- }
- }
- else if (reset_entry)
- {
- if (fs->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
- }
-
- if (!did_recurse)
- {
- if (fs->selection_entry && try_complete)
- gtk_editable_set_position (GTK_EDITABLE (fs->selection_entry), -1);
-
- if (fs->selection_entry)
- {
- char *escaped = escape_underscores (cmpl_reference_position (cmpl_state));
- sel_text = g_strconcat (_("_Selection: "), escaped, NULL);
- g_free (escaped);
-
- gtk_label_set_text_with_mnemonic (GTK_LABEL (fs->selection_text), sel_text);
- g_free (sel_text);
- }
-
- if (fs->history_pulldown)
- {
- gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
- }
-
- }
-}
-
-static void
-gtk_file_selection_abort (GtkFileSelection *fs)
-{
- gchar err_buf[256];
-
- g_snprintf (err_buf, sizeof (err_buf), _("Folder unreadable: %s"), cmpl_strerror (cmpl_errno));
-
- /* BEEP gdk_beep(); */
-
- if (fs->selection_entry)
- gtk_label_set_text (GTK_LABEL (fs->selection_text), err_buf);
-}
-
-/**
- * gtk_file_selection_set_select_multiple:
- * @filesel: a #GtkFileSelection
- * @select_multiple: whether or not the user is allowed to select multiple
- * files in the file list.
- *
- * Sets whether the user is allowed to select multiple files in the file list.
- * Use gtk_file_selection_get_selections () to get the list of selected files.
- **/
-void
-gtk_file_selection_set_select_multiple (GtkFileSelection *filesel,
- gboolean select_multiple)
-{
- GtkTreeSelection *sel;
- GtkSelectionMode mode;
-
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
-
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list));
-
- mode = select_multiple ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE;
-
- if (mode != gtk_tree_selection_get_mode (sel))
- {
- gtk_tree_selection_set_mode (sel, mode);
-
- g_object_notify (G_OBJECT (filesel), "select-multiple");
- }
-}
-
-/**
- * gtk_file_selection_get_select_multiple:
- * @filesel: a #GtkFileSelection
- *
- * Determines whether or not the user is allowed to select multiple files in
- * the file list. See gtk_file_selection_set_select_multiple().
- *
- * Return value: %TRUE if the user is allowed to select multiple files in the
- * file list
- **/
-gboolean
-gtk_file_selection_get_select_multiple (GtkFileSelection *filesel)
-{
- GtkTreeSelection *sel;
-
- g_return_val_if_fail (GTK_IS_FILE_SELECTION (filesel), FALSE);
-
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list));
- return (gtk_tree_selection_get_mode (sel) == GTK_SELECTION_MULTIPLE);
-}
-
-static void
-multiple_changed_foreach (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data)
-{
- GPtrArray *names = data;
- gchar *filename;
-
- gtk_tree_model_get (model, iter, FILE_COLUMN, &filename, -1);
-
- g_ptr_array_add (names, filename);
-}
-
-static void
-free_selected_names (GPtrArray *names)
-{
- gint i;
-
- for (i = 0; i < names->len; i++)
- g_free (g_ptr_array_index (names, i));
-
- g_ptr_array_free (names, TRUE);
-}
-
-static void
-gtk_file_selection_file_changed (GtkTreeSelection *selection,
- gpointer user_data)
-{
- GtkFileSelection *fs = GTK_FILE_SELECTION (user_data);
- GPtrArray *new_names;
- gchar *filename;
- const gchar *entry;
- gint index = -1;
-
- new_names = g_ptr_array_sized_new (8);
-
- gtk_tree_selection_selected_foreach (selection,
- multiple_changed_foreach,
- new_names);
-
- /* nothing selected */
- if (new_names->len == 0)
- {
- g_ptr_array_free (new_names, TRUE);
-
- if (fs->selected_names != NULL)
- {
- free_selected_names (fs->selected_names);
- fs->selected_names = NULL;
- }
-
- goto maybe_clear_entry;
- }
-
- if (new_names->len != 1)
- {
- GPtrArray *old_names = fs->selected_names;
-
- if (old_names != NULL)
- {
- /* A common case is selecting a range of files from top to bottom,
- * so quickly check for that to avoid looping over the entire list
- */
- if (compare_utf8_filenames (g_ptr_array_index (old_names, old_names->len - 1),
- g_ptr_array_index (new_names, new_names->len - 1)) != 0)
- index = new_names->len - 1;
- else
- {
- gint i = 0, j = 0, cmp;
-
- /* do a quick diff, stopping at the first file not in the
- * old list
- */
- while (i < old_names->len && j < new_names->len)
- {
- cmp = compare_utf8_filenames (g_ptr_array_index (old_names, i),
- g_ptr_array_index (new_names, j));
- if (cmp < 0)
- {
- i++;
- }
- else if (cmp == 0)
- {
- i++;
- j++;
- }
- else if (cmp > 0)
- {
- index = j;
- break;
- }
- }
-
- /* we ran off the end of the old list */
- if (index == -1 && i < new_names->len)
- index = j;
- }
- }
- else
- {
- /* A phantom anchor still exists at the point where the last item
- * was selected, which is used for subsequent range selections.
- * So search up from there.
- */
- if (fs->last_selected &&
- compare_utf8_filenames (fs->last_selected,
- g_ptr_array_index (new_names, 0)) == 0)
- index = new_names->len - 1;
- else
- index = 0;
- }
- }
- else
- index = 0;
-
- if (fs->selected_names != NULL)
- free_selected_names (fs->selected_names);
-
- fs->selected_names = new_names;
-
- if (index != -1)
- {
- g_free (fs->last_selected);
-
- fs->last_selected = g_strdup (g_ptr_array_index (new_names, index));
- filename = get_real_filename (fs->last_selected, FALSE);
-
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-
- if (filename != fs->last_selected)
- g_free (filename);
-
- return;
- }
-
-maybe_clear_entry:
-
- entry = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
- if ((entry != NULL) && (fs->last_selected != NULL) &&
- (compare_utf8_filenames (entry, fs->last_selected) == 0))
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
-}
-
-/**
- * gtk_file_selection_get_selections:
- * @filesel: a #GtkFileSelection
- *
- * Retrieves the list of file selections the user has made in the dialog box.
- * This function is intended for use when the user can select multiple files
- * in the file list.
- *
- * The filenames are in the GLib file name encoding. To convert to
- * UTF-8, call g_filename_to_utf8() on each string.
- *
- * Return value: a newly-allocated %NULL-terminated array of strings. Use
- * g_strfreev() to free it.
- **/
-gchar **
-gtk_file_selection_get_selections (GtkFileSelection *filesel)
-{
- GPtrArray *names;
- gchar **selections;
- gchar *filename, *dirname;
- gchar *current, *buf;
- gint i, count;
- gboolean unselected_entry;
-
- g_return_val_if_fail (GTK_IS_FILE_SELECTION (filesel), NULL);
-
- filename = g_strdup (gtk_file_selection_get_filename (filesel));
-
- if (strlen (filename) == 0)
- {
- g_free (filename);
- return NULL;
- }
-
- names = filesel->selected_names;
-
- if (names != NULL)
- selections = g_new (gchar *, names->len + 2);
- else
- selections = g_new (gchar *, 2);
-
- count = 0;
- unselected_entry = TRUE;
-
- if (names != NULL)
- {
- dirname = g_path_get_dirname (filename);
-
- if ((names->len >= 1) &&
- (strcmp (gtk_entry_get_text (GTK_ENTRY (filesel->selection_entry)), "") == 0))
- { /* multiple files are selected and last selection was removed via ctrl click */
- g_free (dirname);
- dirname = g_strdup (filename); /* as gtk_file_selection_get_filename returns dir
- if no file is selected */
- unselected_entry = FALSE;
- }
-
- for (i = 0; i < names->len; i++)
- {
- buf = g_filename_from_utf8 (g_ptr_array_index (names, i), -1,
- NULL, NULL, NULL);
- current = g_build_filename (dirname, buf, NULL);
- g_free (buf);
-
- selections[count++] = current;
-
- if (unselected_entry && compare_sys_filenames (current, filename) == 0)
- unselected_entry = FALSE;
- }
-
- g_free (dirname);
- }
-
- if (unselected_entry)
- selections[count++] = filename;
- else
- g_free (filename);
-
- selections[count] = NULL;
-
- return selections;
-}
-
-/**********************************************************************/
-/* External Interface */
-/**********************************************************************/
-
-/* The four completion state selectors
- */
-static gchar*
-cmpl_updated_text (CompletionState *cmpl_state)
-{
- return cmpl_state->updated_text;
-}
-
-static gboolean
-cmpl_updated_dir (CompletionState *cmpl_state)
-{
- return cmpl_state->re_complete;
-}
-
-static gchar*
-cmpl_reference_position (CompletionState *cmpl_state)
-{
- return cmpl_state->reference_dir->fullname;
-}
-
-#if 0
-/* This doesn't work currently and would require changes
- * to fnmatch.c to get working.
- */
-static gint
-cmpl_last_valid_char (CompletionState *cmpl_state)
-{
- return cmpl_state->last_valid_char;
-}
-#endif
-
-static gchar*
-cmpl_completion_fullname (const gchar *text,
- CompletionState *cmpl_state)
-{
- if (!cmpl_state_okay (cmpl_state))
- {
- return g_strdup ("");
- }
- else if (g_path_is_absolute (text))
- {
- return g_strdup (text);
- }
-#ifdef HAVE_PWD_H
- else if (text[0] == '~')
- {
- CompletionDir* dir;
- char* slash;
-
- dir = open_user_dir (text, cmpl_state);
-
- if (dir)
- {
- slash = strchr (text, G_DIR_SEPARATOR);
-
- /* slash may be NULL, that works too */
- return g_strconcat (dir->fullname, slash, NULL);
- }
- }
-#endif
-
- return g_build_filename (cmpl_state->reference_dir->fullname,
- text,
- NULL);
-}
-
-/* The three completion selectors
- */
-static gchar*
-cmpl_this_completion (PossibleCompletion* pc)
-{
- return pc->text;
-}
-
-static gboolean
-cmpl_is_directory (PossibleCompletion* pc)
-{
- return pc->is_directory;
-}
-
-static gint
-cmpl_is_a_completion (PossibleCompletion* pc)
-{
- return pc->is_a_completion;
-}
-
-/**********************************************************************/
-/* Construction, deletion */
-/**********************************************************************/
-
-/* Get the nearest parent of the current directory for which
- * we can convert the filename into UTF-8. With paranoia.
- * Returns "." when all goes wrong.
- */
-static gchar *
-get_current_dir_utf8 (void)
-{
- gchar *dir = g_get_current_dir ();
- gchar *dir_utf8 = NULL;
-
- while (TRUE)
- {
- gchar *last_slash;
-
- dir_utf8 = g_filename_to_utf8 (dir, -1, NULL, NULL, NULL);
- if (dir_utf8)
- break;
-
- last_slash = strrchr (dir, G_DIR_SEPARATOR);
- if (!last_slash) /* g_get_current_dir() wasn't absolute! */
- break;
-
- if (last_slash + 1 == g_path_skip_root (dir)) /* Parent directory is a root directory */
- {
- if (last_slash[1] == '\0') /* Root misencoded! */
- break;
- else
- last_slash[1] = '\0';
- }
- else
- last_slash[0] = '\0';
-
- g_assert (last_slash);
- }
-
- g_free (dir);
-
- return dir_utf8 ? dir_utf8 : g_strdup (".");
-}
-
-static CompletionState*
-cmpl_init_state (void)
-{
- gchar *utf8_cwd;
- CompletionState *new_state;
- gint tries = 0;
-
- new_state = g_new (CompletionState, 1);
-
- utf8_cwd = get_current_dir_utf8 ();
-
-tryagain:
- tries++;
- new_state->reference_dir = NULL;
- new_state->completion_dir = NULL;
- new_state->active_completion_dir = NULL;
- new_state->directory_storage = NULL;
- new_state->directory_sent_storage = NULL;
- new_state->last_valid_char = 0;
- new_state->updated_text = g_new (gchar, MAXPATHLEN);
- new_state->updated_text_alloc = MAXPATHLEN;
- new_state->the_completion.text = g_new (gchar, MAXPATHLEN);
- new_state->the_completion.text_alloc = MAXPATHLEN;
- new_state->user_dir_name_buffer = NULL;
- new_state->user_directories = NULL;
-
- new_state->reference_dir = open_dir (utf8_cwd, new_state);
-
- if (!new_state->reference_dir)
- {
- /* Directories changing from underneath us, grumble */
- strcpy (utf8_cwd, G_DIR_SEPARATOR_S);
- if (tries < 2)
- goto tryagain;
- }
-
- g_free (utf8_cwd);
- return new_state;
-}
-
-static void
-cmpl_free_dir_list (GList* dp0)
-{
- GList *dp = dp0;
-
- while (dp)
- {
- free_dir (dp->data);
- dp = dp->next;
- }
-
- g_list_free (dp0);
-}
-
-static void
-cmpl_free_dir_sent_list (GList* dp0)
-{
- GList *dp = dp0;
-
- while (dp)
- {
- free_dir_sent (dp->data);
- dp = dp->next;
- }
-
- g_list_free (dp0);
-}
-
-static void
-cmpl_free_state (CompletionState* cmpl_state)
-{
- g_return_if_fail (cmpl_state != NULL);
-
- cmpl_free_dir_list (cmpl_state->directory_storage);
- cmpl_free_dir_sent_list (cmpl_state->directory_sent_storage);
-
- g_free (cmpl_state->user_dir_name_buffer);
- g_free (cmpl_state->user_directories);
- g_free (cmpl_state->the_completion.text);
- g_free (cmpl_state->updated_text);
-
- g_free (cmpl_state);
-}
-
-static void
-free_dir (CompletionDir* dir)
-{
- g_free (dir->cmpl_text);
- g_free (dir->fullname);
- g_free (dir);
-}
-
-static void
-free_dir_sent (CompletionDirSent* sent)
-{
- gint i;
- for (i = 0; i < sent->entry_count; i++)
- {
- g_free (sent->entries[i].entry_name);
- g_free (sent->entries[i].sort_key);
- }
- g_free (sent->entries);
- g_free (sent);
-}
-
-static void
-prune_memory_usage (CompletionState *cmpl_state)
-{
- GList* cdsl = cmpl_state->directory_sent_storage;
- GList* cdl = cmpl_state->directory_storage;
- GList* cdl0 = cdl;
- gint len = 0;
-
- for (; cdsl && len < CMPL_DIRECTORY_CACHE_SIZE; len += 1)
- cdsl = cdsl->next;
-
- if (cdsl)
- {
- cmpl_free_dir_sent_list (cdsl->next);
- cdsl->next = NULL;
- }
-
- cmpl_state->directory_storage = NULL;
- while (cdl)
- {
- if (cdl->data == cmpl_state->reference_dir)
- cmpl_state->directory_storage = g_list_prepend (NULL, cdl->data);
- else
- free_dir (cdl->data);
- cdl = cdl->next;
- }
-
- g_list_free (cdl0);
-}
-
-/**********************************************************************/
-/* The main entrances. */
-/**********************************************************************/
-
-static PossibleCompletion*
-cmpl_completion_matches (gchar *text_to_complete,
- gchar **remaining_text,
- CompletionState *cmpl_state)
-{
-#ifdef HAVE_PWD_H
- gchar* first_slash;
-#endif
- PossibleCompletion *poss;
-
- prune_memory_usage (cmpl_state);
-
- g_assert (text_to_complete != NULL);
-
- cmpl_state->user_completion_index = -1;
- cmpl_state->last_completion_text = text_to_complete;
- cmpl_state->the_completion.text[0] = 0;
- cmpl_state->last_valid_char = 0;
- cmpl_state->updated_text_len = -1;
- cmpl_state->updated_text[0] = 0;
- cmpl_state->re_complete = FALSE;
-
-#ifdef HAVE_PWD_H
- first_slash = strchr (text_to_complete, G_DIR_SEPARATOR);
-
- if (text_to_complete[0] == '~' && !first_slash)
- {
- /* Text starts with ~ and there is no slash, show all the
- * home directory completions.
- */
- poss = attempt_homedir_completion (text_to_complete, cmpl_state);
-
- update_cmpl (poss, cmpl_state);
-
- return poss;
- }
-#endif
- cmpl_state->reference_dir =
- open_ref_dir (text_to_complete, remaining_text, cmpl_state);
-
- if (!cmpl_state->reference_dir)
- return NULL;
-
- cmpl_state->completion_dir =
- find_completion_dir (*remaining_text, remaining_text, cmpl_state);
-
- cmpl_state->last_valid_char = *remaining_text - text_to_complete;
-
- if (!cmpl_state->completion_dir)
- return NULL;
-
- cmpl_state->completion_dir->cmpl_index = -1;
- cmpl_state->completion_dir->cmpl_parent = NULL;
- cmpl_state->completion_dir->cmpl_text = g_strdup (*remaining_text);
-
- cmpl_state->active_completion_dir = cmpl_state->completion_dir;
-
- cmpl_state->reference_dir = cmpl_state->completion_dir;
-
- poss = attempt_file_completion (cmpl_state);
-
- update_cmpl (poss, cmpl_state);
-
- return poss;
-}
-
-static PossibleCompletion*
-cmpl_next_completion (CompletionState* cmpl_state)
-{
- PossibleCompletion* poss = NULL;
-
- cmpl_state->the_completion.text[0] = 0;
-
-#ifdef HAVE_PWD_H
- if (cmpl_state->user_completion_index >= 0)
- poss = attempt_homedir_completion (cmpl_state->last_completion_text, cmpl_state);
- else
- poss = attempt_file_completion (cmpl_state);
-#else
- poss = attempt_file_completion (cmpl_state);
-#endif
-
- update_cmpl (poss, cmpl_state);
-
- return poss;
-}
-
-/**********************************************************************/
-/* Directory Operations */
-/**********************************************************************/
-
-/* Open the directory where completion will begin from, if possible. */
-static CompletionDir*
-open_ref_dir (gchar *text_to_complete,
- gchar **remaining_text,
- CompletionState *cmpl_state)
-{
- gchar* first_slash;
- CompletionDir *new_dir;
-
- first_slash = strchr (text_to_complete, G_DIR_SEPARATOR);
-
-#ifdef G_WITH_CYGWIN
- if (text_to_complete[0] == '/' && text_to_complete[1] == '/')
- {
- char root_dir[5];
- g_snprintf (root_dir, sizeof (root_dir), "//%c", text_to_complete[2]);
-
- new_dir = open_dir (root_dir, cmpl_state);
-
- if (new_dir) {
- *remaining_text = text_to_complete + 4;
- }
- }
-#else
- if (FALSE)
- ;
-#endif
-#ifdef HAVE_PWD_H
- else if (text_to_complete[0] == '~')
- {
- new_dir = open_user_dir (text_to_complete, cmpl_state);
-
- if (new_dir)
- {
- if (first_slash)
- *remaining_text = first_slash + 1;
- else
- *remaining_text = text_to_complete + strlen (text_to_complete);
- }
- else
- {
- return NULL;
- }
- }
-#endif
- else if (g_path_is_absolute (text_to_complete) || !cmpl_state->reference_dir)
- {
- gchar *tmp = g_strdup (text_to_complete);
- gchar *p;
-
- p = tmp;
- while (*p && *p != '*' && *p != '?')
- p++;
-
- *p = '\0';
- p = strrchr (tmp, G_DIR_SEPARATOR);
- if (p)
- {
- if (p + 1 == g_path_skip_root (tmp))
- p++;
-
- *p = '\0';
- new_dir = open_dir (tmp, cmpl_state);
-
- if (new_dir)
- *remaining_text = text_to_complete +
- ((p == g_path_skip_root (tmp)) ? (p - tmp) : (p + 1 - tmp));
- }
- else
- {
- /* If no possible candidates, use the cwd */
- gchar *utf8_curdir = get_current_dir_utf8 ();
-
- new_dir = open_dir (utf8_curdir, cmpl_state);
-
- if (new_dir)
- *remaining_text = text_to_complete;
-
- g_free (utf8_curdir);
- }
-
- g_free (tmp);
- }
- else
- {
- *remaining_text = text_to_complete;
-
- new_dir = open_dir (cmpl_state->reference_dir->fullname, cmpl_state);
- }
-
- if (new_dir)
- {
- new_dir->cmpl_index = -1;
- new_dir->cmpl_parent = NULL;
- }
-
- return new_dir;
-}
-
-#ifdef HAVE_PWD_H
-
-/* open a directory by user name */
-static CompletionDir*
-open_user_dir (const gchar *text_to_complete,
- CompletionState *cmpl_state)
-{
- CompletionDir *result;
- gchar *first_slash;
- gint cmp_len;
-
- g_assert (text_to_complete && text_to_complete[0] == '~');
-
- first_slash = strchr (text_to_complete, G_DIR_SEPARATOR);
-
- if (first_slash)
- cmp_len = first_slash - text_to_complete - 1;
- else
- cmp_len = strlen (text_to_complete + 1);
-
- if (!cmp_len)
- {
- /* ~/ */
- const gchar *homedir = g_get_home_dir ();
- gchar *utf8_homedir = g_filename_to_utf8 (homedir, -1, NULL, NULL, NULL);
-
- if (utf8_homedir)
- result = open_dir (utf8_homedir, cmpl_state);
- else
- result = NULL;
-
- g_free (utf8_homedir);
- }
- else
- {
- /* ~user/ */
- gchar* copy = g_new (char, cmp_len + 1);
- gchar *utf8_dir;
- struct passwd *pwd;
-
- strncpy (copy, text_to_complete + 1, cmp_len);
- copy[cmp_len] = 0;
- pwd = getpwnam (copy);
- g_free (copy);
- if (!pwd)
- {
- cmpl_errno = errno;
- return NULL;
- }
- utf8_dir = g_filename_to_utf8 (pwd->pw_dir, -1, NULL, NULL, NULL);
- result = open_dir (utf8_dir, cmpl_state);
- g_free (utf8_dir);
- }
- return result;
-}
-
-#endif
-
-/* open a directory relative to the current relative directory */
-static CompletionDir*
-open_relative_dir (gchar *dir_name,
- CompletionDir *dir,
- CompletionState *cmpl_state)
-{
- CompletionDir *result;
- GString *path;
-
- path = g_string_sized_new (dir->fullname_len + strlen (dir_name) + 10);
- g_string_assign (path, dir->fullname);
-
- if (dir->fullname_len > 1
- && path->str[dir->fullname_len - 1] != G_DIR_SEPARATOR)
- g_string_append_c (path, G_DIR_SEPARATOR);
- g_string_append (path, dir_name);
-
- result = open_dir (path->str, cmpl_state);
-
- g_string_free (path, TRUE);
-
- return result;
-}
-
-/* after the cache lookup fails, really open a new directory */
-static CompletionDirSent*
-open_new_dir (gchar *dir_name,
- struct stat *sbuf,
- gboolean stat_subdirs)
-{
- CompletionDirSent *sent;
- GDir *directory;
- const char *dirent;
- GError *error = NULL;
- gint entry_count = 0;
- gint n_entries = 0;
- gint i;
- struct stat ent_sbuf;
- GString *path;
- gchar *sys_dir_name;
-
- sent = g_new (CompletionDirSent, 1);
-#ifndef G_PLATFORM_WIN32
- sent->mtime = sbuf->st_mtime;
- sent->inode = sbuf->st_ino;
- sent->device = sbuf->st_dev;
-#endif
- path = g_string_sized_new (2*MAXPATHLEN + 10);
-
- sys_dir_name = g_filename_from_utf8 (dir_name, -1, NULL, NULL, NULL);
- if (!sys_dir_name)
- {
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- g_free (sent);
- return NULL;
- }
-
- directory = g_dir_open (sys_dir_name, 0, &error);
- if (!directory)
- {
- cmpl_errno = error->code; /* ??? */
- g_free (sys_dir_name);
- g_free (sent);
- return NULL;
- }
-
- while ((dirent = g_dir_read_name (directory)) != NULL)
- entry_count++;
- entry_count += 2; /* For ".",".." */
-
- sent->entries = g_new (CompletionDirEntry, entry_count);
- sent->entry_count = entry_count;
-
- g_dir_rewind (directory);
-
- for (i = 0; i < entry_count; i += 1)
- {
- GError *error = NULL;
-
- if (i == 0)
- dirent = ".";
- else if (i == 1)
- dirent = "..";
- else
- {
- dirent = g_dir_read_name (directory);
- if (!dirent) /* Directory changed */
- break;
- }
-
- sent->entries[n_entries].entry_name = g_filename_to_utf8 (dirent, -1, NULL, NULL, &error);
- if (sent->entries[n_entries].entry_name == NULL
- || !g_utf8_validate (sent->entries[n_entries].entry_name, -1, NULL))
- {
- gchar *escaped_str = g_strescape (dirent, NULL);
- g_message (_("The filename \"%s\" couldn't be converted to UTF-8. "
- "(try setting the environment variable G_FILENAME_ENCODING): %s"),
- escaped_str,
- error->message ? error->message : _("Invalid UTF-8"));
- g_free (escaped_str);
- g_clear_error (&error);
- continue;
- }
- g_clear_error (&error);
-
- sent->entries[n_entries].sort_key = g_utf8_collate_key (sent->entries[n_entries].entry_name, -1);
-
- g_string_assign (path, sys_dir_name);
- if (path->str[path->len-1] != G_DIR_SEPARATOR)
- {
- g_string_append_c (path, G_DIR_SEPARATOR);
- }
- g_string_append (path, dirent);
-
- if (stat_subdirs)
- {
- /* Here we know path->str is a "system charset" string */
- if (g_stat (path->str, &ent_sbuf) >= 0 && S_ISDIR (ent_sbuf.st_mode))
- sent->entries[n_entries].is_dir = TRUE;
- else
- /* stat may fail, and we don't mind, since it could be a
- * dangling symlink. */
- sent->entries[n_entries].is_dir = FALSE;
- }
- else
- sent->entries[n_entries].is_dir = 1;
-
- n_entries++;
- }
- sent->entry_count = n_entries;
-
- g_free (sys_dir_name);
- g_string_free (path, TRUE);
- qsort (sent->entries, sent->entry_count, sizeof (CompletionDirEntry), compare_cmpl_dir);
-
- g_dir_close (directory);
-
- return sent;
-}
-
-#ifndef G_PLATFORM_WIN32
-
-static gboolean
-check_dir (gchar *dir_name,
- struct stat *result,
- gboolean *stat_subdirs)
-{
- /* A list of directories that we know only contain other directories.
- * Trying to stat every file in these directories would be very
- * expensive.
- */
-
- static struct {
- const gchar name[5];
- gboolean present;
- struct stat statbuf;
- } no_stat_dirs[] = {
- { "/afs", FALSE, { 0 } },
- { "/net", FALSE, { 0 } }
- };
-
- static const gint n_no_stat_dirs = G_N_ELEMENTS (no_stat_dirs);
- static gboolean initialized = FALSE;
- gchar *sys_dir_name;
- gint i;
-
- if (!initialized)
- {
- initialized = TRUE;
- for (i = 0; i < n_no_stat_dirs; i++)
- {
- if (g_stat (no_stat_dirs[i].name, &no_stat_dirs[i].statbuf) == 0)
- no_stat_dirs[i].present = TRUE;
- }
- }
-
- sys_dir_name = g_filename_from_utf8 (dir_name, -1, NULL, NULL, NULL);
- if (!sys_dir_name)
- {
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- return FALSE;
- }
-
- if (g_stat (sys_dir_name, result) < 0)
- {
- g_free (sys_dir_name);
- cmpl_errno = errno;
- return FALSE;
- }
- g_free (sys_dir_name);
-
- *stat_subdirs = TRUE;
- for (i = 0; i < n_no_stat_dirs; i++)
- {
- if (no_stat_dirs[i].present &&
- (no_stat_dirs[i].statbuf.st_dev == result->st_dev) &&
- (no_stat_dirs[i].statbuf.st_ino == result->st_ino))
- {
- *stat_subdirs = FALSE;
- break;
- }
- }
-
- return TRUE;
-}
-
-#endif
-
-/* open a directory by absolute pathname */
-static CompletionDir*
-open_dir (gchar *dir_name,
- CompletionState *cmpl_state)
-{
-#ifndef G_PLATFORM_WIN32
- struct stat sbuf;
- gboolean stat_subdirs;
- GList* cdsl;
-#endif
- CompletionDirSent *sent;
-
-#ifndef G_PLATFORM_WIN32
- if (!check_dir (dir_name, &sbuf, &stat_subdirs))
- return NULL;
-
- cdsl = cmpl_state->directory_sent_storage;
-
- while (cdsl)
- {
- sent = cdsl->data;
-
- if (sent->inode == sbuf.st_ino &&
- sent->mtime == sbuf.st_mtime &&
- sent->device == sbuf.st_dev)
- return attach_dir (sent, dir_name, cmpl_state);
-
- cdsl = cdsl->next;
- }
-
- sent = open_new_dir (dir_name, &sbuf, stat_subdirs);
-#else
- sent = open_new_dir (dir_name, NULL, TRUE);
-#endif
-
- if (sent)
- {
- cmpl_state->directory_sent_storage =
- g_list_prepend (cmpl_state->directory_sent_storage, sent);
-
- return attach_dir (sent, dir_name, cmpl_state);
- }
-
- return NULL;
-}
-
-static CompletionDir*
-attach_dir (CompletionDirSent *sent,
- gchar *dir_name,
- CompletionState *cmpl_state)
-{
- CompletionDir* new_dir;
-
- new_dir = g_new (CompletionDir, 1);
-
- cmpl_state->directory_storage =
- g_list_prepend (cmpl_state->directory_storage, new_dir);
-
- new_dir->sent = sent;
- new_dir->fullname = g_strdup (dir_name);
- new_dir->fullname_len = strlen (dir_name);
- new_dir->cmpl_text = NULL;
-
- return new_dir;
-}
-
-static gint
-correct_dir_fullname (CompletionDir* cmpl_dir)
-{
- gint length = strlen (cmpl_dir->fullname);
- gchar *first_slash = strchr (cmpl_dir->fullname, G_DIR_SEPARATOR);
- gchar *sys_filename;
- struct stat sbuf;
-
- /* Does it end with /. (\.) ? */
- if (length >= 2 &&
- strcmp (cmpl_dir->fullname + length - 2, G_DIR_SEPARATOR_S ".") == 0)
- {
- /* Is it just the root directory (on a drive) ? */
- if (cmpl_dir->fullname + length - 2 == first_slash)
- {
- cmpl_dir->fullname[length - 1] = 0;
- cmpl_dir->fullname_len = length - 1;
- return TRUE;
- }
- else
- {
- cmpl_dir->fullname[length - 2] = 0;
- }
- }
-
- /* Ends with /./ (\.\)? */
- else if (length >= 3 &&
- strcmp (cmpl_dir->fullname + length - 3,
- G_DIR_SEPARATOR_S "." G_DIR_SEPARATOR_S) == 0)
- cmpl_dir->fullname[length - 2] = 0;
-
- /* Ends with /.. (\..) ? */
- else if (length >= 3 &&
- strcmp (cmpl_dir->fullname + length - 3,
- G_DIR_SEPARATOR_S "..") == 0)
- {
- /* Is it just /.. (X:\..)? */
- if (cmpl_dir->fullname + length - 3 == first_slash)
- {
- cmpl_dir->fullname[length - 2] = 0;
- cmpl_dir->fullname_len = length - 2;
- return TRUE;
- }
-
- sys_filename = g_filename_from_utf8 (cmpl_dir->fullname, -1, NULL, NULL, NULL);
- if (!sys_filename)
- {
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- return FALSE;
- }
-
- if (g_stat (sys_filename, &sbuf) < 0)
- {
- g_free (sys_filename);
- cmpl_errno = errno;
- return FALSE;
- }
- g_free (sys_filename);
-
- cmpl_dir->fullname[length - 3] = 0;
-
- if (!correct_parent (cmpl_dir, &sbuf))
- return FALSE;
- }
-
- /* Ends with /../ (\..\)? */
- else if (length >= 4 &&
- strcmp (cmpl_dir->fullname + length - 4,
- G_DIR_SEPARATOR_S ".." G_DIR_SEPARATOR_S) == 0)
- {
- /* Is it just /../ (X:\..\)? */
- if (cmpl_dir->fullname + length - 4 == first_slash)
- {
- cmpl_dir->fullname[length - 3] = 0;
- cmpl_dir->fullname_len = length - 3;
- return TRUE;
- }
-
- sys_filename = g_filename_from_utf8 (cmpl_dir->fullname, -1, NULL, NULL, NULL);
- if (!sys_filename)
- {
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- return FALSE;
- }
-
- if (g_stat (sys_filename, &sbuf) < 0)
- {
- g_free (sys_filename);
- cmpl_errno = errno;
- return FALSE;
- }
- g_free (sys_filename);
-
- cmpl_dir->fullname[length - 4] = 0;
-
- if (!correct_parent (cmpl_dir, &sbuf))
- return FALSE;
- }
-
- cmpl_dir->fullname_len = strlen (cmpl_dir->fullname);
-
- return TRUE;
-}
-
-static gint
-correct_parent (CompletionDir *cmpl_dir,
- struct stat *sbuf)
-{
- struct stat parbuf;
- gchar *last_slash;
- gchar *first_slash;
-#ifndef G_PLATFORM_WIN32
- gchar *new_name;
-#endif
- gchar *sys_filename;
- gchar c = 0;
-
- last_slash = strrchr (cmpl_dir->fullname, G_DIR_SEPARATOR);
- g_assert (last_slash);
- first_slash = strchr (cmpl_dir->fullname, G_DIR_SEPARATOR);
-
- /* Clever (?) way to check for top-level directory that works also on
- * Win32, where there is a drive letter and colon prefixed...
- */
- if (last_slash != first_slash)
- {
- last_slash[0] = 0;
- }
- else
- {
- c = last_slash[1];
- last_slash[1] = 0;
- }
-
- sys_filename = g_filename_from_utf8 (cmpl_dir->fullname, -1, NULL, NULL, NULL);
- if (!sys_filename)
- {
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- if (!c)
- last_slash[0] = G_DIR_SEPARATOR;
- return FALSE;
- }
-
- if (g_stat (sys_filename, &parbuf) < 0)
- {
- g_free (sys_filename);
- cmpl_errno = errno;
- if (!c)
- last_slash[0] = G_DIR_SEPARATOR;
- return FALSE;
- }
- g_free (sys_filename);
-
-#ifndef G_PLATFORM_WIN32 /* No inode numbers on Win32 */
- if (parbuf.st_ino == sbuf->st_ino && parbuf.st_dev == sbuf->st_dev)
- /* it wasn't a link */
- return TRUE;
-
- if (c)
- last_slash[1] = c;
- else
- last_slash[0] = G_DIR_SEPARATOR;
-
- /* it was a link, have to figure it out the hard way */
-
- new_name = find_parent_dir_fullname (cmpl_dir->fullname);
-
- if (!new_name)
- return FALSE;
-
- g_free (cmpl_dir->fullname);
-
- cmpl_dir->fullname = new_name;
-#endif
-
- return TRUE;
-}
-
-#ifndef G_PLATFORM_WIN32
-
-static gchar*
-find_parent_dir_fullname (gchar* dirname)
-{
- gchar *sys_orig_dir;
- gchar *result;
- gchar *sys_cwd;
- gchar *sys_dirname;
-
- sys_orig_dir = g_get_current_dir ();
- sys_dirname = g_filename_from_utf8 (dirname, -1, NULL, NULL, NULL);
- if (!sys_dirname)
- {
- g_free (sys_orig_dir);
- cmpl_errno = CMPL_ERRNO_DID_NOT_CONVERT;
- return NULL;
- }
-
- if (chdir (sys_dirname) != 0 || chdir ("..") != 0)
- {
- int ignored;
-
- cmpl_errno = errno;
- ignored = g_chdir (sys_orig_dir);
- g_free (sys_dirname);
- g_free (sys_orig_dir);
- return NULL;
- }
- g_free (sys_dirname);
-
- sys_cwd = g_get_current_dir ();
- result = g_filename_to_utf8 (sys_cwd, -1, NULL, NULL, NULL);
- g_free (sys_cwd);
-
- if (chdir (sys_orig_dir) != 0)
- {
- cmpl_errno = errno;
- g_free (sys_orig_dir);
- return NULL;
- }
-
- g_free (sys_orig_dir);
- return result;
-}
-
-#endif
-
-/**********************************************************************/
-/* Completion Operations */
-/**********************************************************************/
-
-#ifdef HAVE_PWD_H
-
-static PossibleCompletion*
-attempt_homedir_completion (gchar *text_to_complete,
- CompletionState *cmpl_state)
-{
- gint index;
-
- if (!cmpl_state->user_dir_name_buffer &&
- !get_pwdb (cmpl_state))
- return NULL;
-
- cmpl_state->user_completion_index += 1;
-
- while (cmpl_state->user_completion_index < cmpl_state->user_directories_len)
- {
- index = first_diff_index (text_to_complete + 1,
- cmpl_state->user_directories
- [cmpl_state->user_completion_index].login);
-
- switch (index)
- {
- case PATTERN_MATCH:
- break;
- default:
- if (cmpl_state->last_valid_char < (index + 1))
- cmpl_state->last_valid_char = index + 1;
- cmpl_state->user_completion_index += 1;
- continue;
- }
-
- cmpl_state->the_completion.is_a_completion = 1;
- cmpl_state->the_completion.is_directory = TRUE;
-
- append_completion_text ("~", cmpl_state);
-
- append_completion_text (cmpl_state->
- user_directories[cmpl_state->user_completion_index].login,
- cmpl_state);
-
- return append_completion_text (G_DIR_SEPARATOR_S, cmpl_state);
- }
-
- if (text_to_complete[1]
- || cmpl_state->user_completion_index > cmpl_state->user_directories_len)
- {
- cmpl_state->user_completion_index = -1;
- return NULL;
- }
- else
- {
- cmpl_state->user_completion_index += 1;
- cmpl_state->the_completion.is_a_completion = 1;
- cmpl_state->the_completion.is_directory = TRUE;
-
- return append_completion_text ("~" G_DIR_SEPARATOR_S, cmpl_state);
- }
-}
-
-#endif
-
-#ifdef G_PLATFORM_WIN32
-/* FIXME: determine whether we should casefold all Unicode letters
- * here, too (and in in first_diff_index() walk through the strings with
- * g_utf8_next_char()), or if this folding isn't actually needed at
- * all.
- */
-#define FOLD(c) (tolower(c))
-#else
-#define FOLD(c) (c)
-#endif
-
-/* returns the index (>= 0) of the first differing character,
- * PATTERN_MATCH if the completion matches */
-static gint
-first_diff_index (gchar *pat,
- gchar *text)
-{
- gint diff = 0;
-
- while (*pat && *text && FOLD (*text) == FOLD (*pat))
- {
- pat += 1;
- text += 1;
- diff += 1;
- }
-
- if (*pat)
- return diff;
-
- return PATTERN_MATCH;
-}
-
-static PossibleCompletion*
-append_completion_text (gchar *text,
- CompletionState *cmpl_state)
-{
- gint len, i = 1;
-
- if (!cmpl_state->the_completion.text)
- return NULL;
-
- len = strlen (text) + strlen (cmpl_state->the_completion.text) + 1;
-
- if (cmpl_state->the_completion.text_alloc > len)
- {
- strcat (cmpl_state->the_completion.text, text);
- return &cmpl_state->the_completion;
- }
-
- while (i < len)
- i <<= 1;
-
- cmpl_state->the_completion.text_alloc = i;
-
- cmpl_state->the_completion.text = (gchar*) g_realloc (cmpl_state->the_completion.text, i);
-
- if (!cmpl_state->the_completion.text)
- return NULL;
- else
- {
- strcat (cmpl_state->the_completion.text, text);
- return &cmpl_state->the_completion;
- }
-}
-
-static CompletionDir*
-find_completion_dir (gchar *text_to_complete,
- gchar **remaining_text,
- CompletionState *cmpl_state)
-{
- gchar* first_slash = strchr (text_to_complete, G_DIR_SEPARATOR);
- CompletionDir* dir = cmpl_state->reference_dir;
- CompletionDir* next;
- *remaining_text = text_to_complete;
-
- while (first_slash)
- {
- gint len = first_slash - *remaining_text;
- gint found = 0;
- gchar *found_name = NULL; /* Quiet gcc */
- gint i;
- gchar* pat_buf = g_new (gchar, len + 1);
-
- strncpy (pat_buf, *remaining_text, len);
- pat_buf[len] = 0;
-
- for (i = 0; i < dir->sent->entry_count; i += 1)
- {
- if (dir->sent->entries[i].is_dir &&
- _gtk_fnmatch (pat_buf, dir->sent->entries[i].entry_name, TRUE))
- {
- if (found)
- {
- g_free (pat_buf);
- return dir;
- }
- else
- {
- found = 1;
- found_name = dir->sent->entries[i].entry_name;
- }
- }
- }
-
- if (!found)
- {
- /* Perhaps we are trying to open an automount directory */
- found_name = pat_buf;
- }
-
- next = open_relative_dir (found_name, dir, cmpl_state);
-
- if (!next)
- {
- g_free (pat_buf);
- return NULL;
-}
-
- next->cmpl_parent = dir;
-
- dir = next;
-
- if (!correct_dir_fullname (dir))
- {
- g_free (pat_buf);
- return NULL;
- }
-
- *remaining_text = first_slash + 1;
- first_slash = strchr (*remaining_text, G_DIR_SEPARATOR);
-
- g_free (pat_buf);
- }
-
- return dir;
-}
-
-static void
-update_cmpl (PossibleCompletion *poss,
- CompletionState *cmpl_state)
-{
- gint cmpl_len;
-
- if (!poss || !cmpl_is_a_completion (poss))
- return;
-
- cmpl_len = strlen (cmpl_this_completion (poss));
-
- if (cmpl_state->updated_text_alloc < cmpl_len + 1)
- {
- cmpl_state->updated_text_alloc = 2*cmpl_len;
- cmpl_state->updated_text =
- (gchar*)g_realloc (cmpl_state->updated_text,
- cmpl_state->updated_text_alloc);
- }
-
- if (cmpl_state->updated_text_len < 0)
- {
- strcpy (cmpl_state->updated_text, cmpl_this_completion (poss));
- cmpl_state->updated_text_len = cmpl_len;
- cmpl_state->re_complete = cmpl_is_directory (poss);
- }
- else if (cmpl_state->updated_text_len == 0)
- {
- cmpl_state->re_complete = FALSE;
- }
- else
- {
- gint first_diff =
- first_diff_index (cmpl_state->updated_text,
- cmpl_this_completion (poss));
-
- cmpl_state->re_complete = FALSE;
-
- if (first_diff == PATTERN_MATCH)
- return;
-
- if (first_diff > cmpl_state->updated_text_len)
- strcpy (cmpl_state->updated_text, cmpl_this_completion (poss));
-
- cmpl_state->updated_text_len = first_diff;
- cmpl_state->updated_text[first_diff] = 0;
- }
-}
-
-static PossibleCompletion*
-attempt_file_completion (CompletionState *cmpl_state)
-{
- gchar *pat_buf, *first_slash;
- CompletionDir *dir = cmpl_state->active_completion_dir;
-
- dir->cmpl_index += 1;
-
- if (dir->cmpl_index == dir->sent->entry_count)
- {
- if (dir->cmpl_parent == NULL)
- {
- cmpl_state->active_completion_dir = NULL;
-
- return NULL;
- }
- else
- {
- cmpl_state->active_completion_dir = dir->cmpl_parent;
-
- return attempt_file_completion (cmpl_state);
- }
- }
-
- g_assert (dir->cmpl_text);
-
- first_slash = strchr (dir->cmpl_text, G_DIR_SEPARATOR);
-
- if (first_slash)
- {
- gint len = first_slash - dir->cmpl_text;
-
- pat_buf = g_new (gchar, len + 1);
- strncpy (pat_buf, dir->cmpl_text, len);
- pat_buf[len] = 0;
- }
- else
- {
- gint len = strlen (dir->cmpl_text);
-
- pat_buf = g_new (gchar, len + 2);
- strcpy (pat_buf, dir->cmpl_text);
- /* Don't append a * if the user entered one herself.
- * This way one can complete *.h and don't get matches
- * on any .help files, for instance.
- */
- if (strchr (pat_buf, '*') == NULL)
- strcpy (pat_buf + len, "*");
- }
-
- if (first_slash)
- {
- if (dir->sent->entries[dir->cmpl_index].is_dir)
- {
- if (_gtk_fnmatch (pat_buf, dir->sent->entries[dir->cmpl_index].entry_name, TRUE))
- {
- CompletionDir* new_dir;
-
- new_dir = open_relative_dir (dir->sent->entries[dir->cmpl_index].entry_name,
- dir, cmpl_state);
-
- if (!new_dir)
- {
- g_free (pat_buf);
- return NULL;
- }
-
- new_dir->cmpl_parent = dir;
-
- new_dir->cmpl_index = -1;
- new_dir->cmpl_text = g_strdup (first_slash + 1);
-
- cmpl_state->active_completion_dir = new_dir;
-
- g_free (pat_buf);
- return attempt_file_completion (cmpl_state);
- }
- else
- {
- g_free (pat_buf);
- return attempt_file_completion (cmpl_state);
- }
- }
- else
- {
- g_free (pat_buf);
- return attempt_file_completion (cmpl_state);
- }
- }
- else
- {
- if (dir->cmpl_parent != NULL)
- {
- append_completion_text (dir->fullname +
- strlen (cmpl_state->completion_dir->fullname) + 1,
- cmpl_state);
- append_completion_text (G_DIR_SEPARATOR_S, cmpl_state);
- }
-
- append_completion_text (dir->sent->entries[dir->cmpl_index].entry_name, cmpl_state);
-
- cmpl_state->the_completion.is_a_completion =
- _gtk_fnmatch (pat_buf, dir->sent->entries[dir->cmpl_index].entry_name, TRUE);
-
- cmpl_state->the_completion.is_directory = dir->sent->entries[dir->cmpl_index].is_dir;
- if (dir->sent->entries[dir->cmpl_index].is_dir)
- append_completion_text (G_DIR_SEPARATOR_S, cmpl_state);
-
- g_free (pat_buf);
- return &cmpl_state->the_completion;
- }
-}
-
-#ifdef HAVE_PWD_H
-
-static gint
-get_pwdb (CompletionState* cmpl_state)
-{
- struct passwd *pwd_ptr;
- gchar* buf_ptr;
- gchar *utf8;
- gint len = 0, i, count = 0;
-
- if (cmpl_state->user_dir_name_buffer)
- return TRUE;
- setpwent ();
-
- while ((pwd_ptr = getpwent ()) != NULL)
- {
- utf8 = g_filename_to_utf8 (pwd_ptr->pw_name, -1, NULL, NULL, NULL);
- len += strlen (utf8);
- g_free (utf8);
- utf8 = g_filename_to_utf8 (pwd_ptr->pw_dir, -1, NULL, NULL, NULL);
- len += strlen (utf8);
- g_free (utf8);
- len += 2;
- count += 1;
- }
-
- setpwent ();
-
- cmpl_state->user_dir_name_buffer = g_new (gchar, len);
- cmpl_state->user_directories = g_new (CompletionUserDir, count);
- cmpl_state->user_directories_len = count;
-
- buf_ptr = cmpl_state->user_dir_name_buffer;
-
- for (i = 0; i < count; i += 1)
- {
- pwd_ptr = getpwent ();
- if (!pwd_ptr)
- {
- cmpl_errno = errno;
- goto error;
- }
-
- utf8 = g_filename_to_utf8 (pwd_ptr->pw_name, -1, NULL, NULL, NULL);
- strcpy (buf_ptr, utf8);
- g_free (utf8);
-
- cmpl_state->user_directories[i].login = buf_ptr;
-
- buf_ptr += strlen (buf_ptr);
- buf_ptr += 1;
-
- utf8 = g_filename_to_utf8 (pwd_ptr->pw_dir, -1, NULL, NULL, NULL);
- strcpy (buf_ptr, utf8);
- g_free (utf8);
-
- cmpl_state->user_directories[i].homedir = buf_ptr;
-
- buf_ptr += strlen (buf_ptr);
- buf_ptr += 1;
- }
-
- qsort (cmpl_state->user_directories,
- cmpl_state->user_directories_len,
- sizeof (CompletionUserDir),
- compare_user_dir);
-
- endpwent ();
-
- return TRUE;
-
-error:
-
- g_free (cmpl_state->user_dir_name_buffer);
- g_free (cmpl_state->user_directories);
-
- cmpl_state->user_dir_name_buffer = NULL;
- cmpl_state->user_directories = NULL;
-
- return FALSE;
-}
-
-static gint
-compare_user_dir (const void *a,
- const void *b)
-{
- return strcmp ((((CompletionUserDir*)a))->login,
- (((CompletionUserDir*)b))->login);
-}
-
-#endif
-
-static gint
-compare_cmpl_dir (const void *a,
- const void *b)
-{
-
- return strcmp (((CompletionDirEntry*)a)->sort_key,
- (((CompletionDirEntry*)b))->sort_key);
-}
-
-static gint
-cmpl_state_okay (CompletionState* cmpl_state)
-{
- return cmpl_state && cmpl_state->reference_dir;
-}
-
-static const gchar*
-cmpl_strerror (gint err)
-{
- if (err == CMPL_ERRNO_TOO_LONG)
- return _("Name too long");
- else if (err == CMPL_ERRNO_DID_NOT_CONVERT)
- return _("Couldn't convert filename");
- else
- return g_strerror (err);
-}
-
-#if defined (G_OS_WIN32) && !defined (_WIN64)
-
-/* DLL ABI stability backward compatibility versions */
-
-#undef gtk_file_selection_get_filename
-
-G_CONST_RETURN gchar*
-gtk_file_selection_get_filename (GtkFileSelection *filesel)
-{
- static gchar retval[MAXPATHLEN*2+1];
- gchar *tem;
-
- tem = g_locale_from_utf8 (gtk_file_selection_get_filename_utf8 (filesel),
- -1, NULL, NULL, NULL);
-
- strncpy (retval, tem, sizeof (retval) - 1);
- retval[sizeof (retval) - 1] = '\0';
- g_free (tem);
-
- return retval;
-}
-
-#undef gtk_file_selection_set_filename
-
-void
-gtk_file_selection_set_filename (GtkFileSelection *filesel,
- const gchar *filename)
-{
- gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
- gtk_file_selection_set_filename_utf8 (filesel, utf8_filename);
- g_free (utf8_filename);
-}
-
-#undef gtk_file_selection_get_selections
-
-gchar **
-gtk_file_selection_get_selections (GtkFileSelection *filesel)
-{
- int i = 0;
- gchar **selections = gtk_file_selection_get_selections_utf8 (filesel);
-
- if (selections != NULL)
- while (selections[i] != NULL)
- {
- gchar *tem = selections[i];
- selections[i] = g_locale_from_utf8 (selections[i],
- -1, NULL, NULL, NULL);
- g_free (tem);
- i++;
- }
-
- return selections;
-}
-
-#endif /* G_OS_WIN32 && !_WIN64 */
-
-#define __GTK_FILESEL_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkfilesel.h b/gtk/gtkfilesel.h
deleted file mode 100644
index 8823566872..0000000000
--- a/gtk/gtkfilesel.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_FILESEL_H__
-#define __GTK_FILESEL_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-
-#define GTK_TYPE_FILE_SELECTION (gtk_file_selection_get_type ())
-#define GTK_FILE_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_SELECTION, GtkFileSelection))
-#define GTK_FILE_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_FILE_SELECTION, GtkFileSelectionClass))
-#define GTK_IS_FILE_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_SELECTION))
-#define GTK_IS_FILE_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_FILE_SELECTION))
-#define GTK_FILE_SELECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_FILE_SELECTION, GtkFileSelectionClass))
-
-
-typedef struct _GtkFileSelection GtkFileSelection;
-typedef struct _GtkFileSelectionClass GtkFileSelectionClass;
-
-struct _GtkFileSelection
-{
- /*< private >*/
- GtkDialog parent_instance;
-
- /*< public >*/
- GtkWidget *dir_list;
- GtkWidget *file_list;
- GtkWidget *selection_entry;
- GtkWidget *selection_text;
- GtkWidget *main_vbox;
- GtkWidget *ok_button;
- GtkWidget *cancel_button;
- GtkWidget *help_button;
- GtkWidget *history_pulldown;
- GtkWidget *history_menu;
- GList *history_list;
- GtkWidget *fileop_dialog;
- GtkWidget *fileop_entry;
- gchar *fileop_file;
- gpointer cmpl_state;
-
- GtkWidget *fileop_c_dir;
- GtkWidget *fileop_del_file;
- GtkWidget *fileop_ren_file;
-
- GtkWidget *button_area;
- GtkWidget *action_area;
-
- /*< private >*/
- GPtrArray *selected_names;
- gchar *last_selected;
-};
-
-struct _GtkFileSelectionClass
-{
- GtkDialogClass parent_class;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-
-#ifdef G_OS_WIN32
-/* Reserve old names for DLL ABI backward compatibility */
-#define gtk_file_selection_get_filename gtk_file_selection_get_filename_utf8
-#define gtk_file_selection_set_filename gtk_file_selection_set_filename_utf8
-#define gtk_file_selection_get_selections gtk_file_selection_get_selections_utf8
-#endif
-
-GType gtk_file_selection_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_file_selection_new (const gchar *title);
-void gtk_file_selection_set_filename (GtkFileSelection *filesel,
- const gchar *filename);
-G_CONST_RETURN gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);
-
-void gtk_file_selection_complete (GtkFileSelection *filesel,
- const gchar *pattern);
-void gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel);
-void gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel);
-
-gchar** gtk_file_selection_get_selections (GtkFileSelection *filesel);
-
-void gtk_file_selection_set_select_multiple (GtkFileSelection *filesel,
- gboolean select_multiple);
-gboolean gtk_file_selection_get_select_multiple (GtkFileSelection *filesel);
-
-
-G_END_DECLS
-
-
-#endif /* __GTK_FILESEL_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkfixed.c b/gtk/gtkfixed.c
index 3106e1f000..9a0d67f0ee 100644
--- a/gtk/gtkfixed.c
+++ b/gtk/gtkfixed.c
@@ -453,53 +453,5 @@ gtk_fixed_forall (GtkContainer *container,
}
}
-/**
- * gtk_fixed_set_has_window:
- * @fixed: a #GtkFixed
- * @has_window: %TRUE if a separate window should be created
- *
- * Sets whether a #GtkFixed widget is created with a separate
- * #GdkWindow for @widget->window or not. (By default, it will be
- * created with no separate #GdkWindow). This function must be called
- * while the #GtkFixed is not realized, for instance, immediately after the
- * window is created.
- *
- * This function was added to provide an easy migration path for
- * older applications which may expect #GtkFixed to have a separate window.
- *
- * Deprecated: 2.20: Use gtk_widget_set_has_window() instead.
- **/
-void
-gtk_fixed_set_has_window (GtkFixed *fixed,
- gboolean has_window)
-{
- g_return_if_fail (GTK_IS_FIXED (fixed));
- g_return_if_fail (!gtk_widget_get_realized (GTK_WIDGET (fixed)));
-
- if (has_window != gtk_widget_get_has_window (GTK_WIDGET (fixed)))
- {
- gtk_widget_set_has_window (GTK_WIDGET (fixed), has_window);
- }
-}
-
-/**
- * gtk_fixed_get_has_window:
- * @fixed: a #GtkWidget
- *
- * Gets whether the #GtkFixed has its own #GdkWindow.
- * See gtk_fixed_set_has_window().
- *
- * Return value: %TRUE if @fixed has its own window.
- *
- * Deprecated: 2.20: Use gtk_widget_get_has_window() instead.
- **/
-gboolean
-gtk_fixed_get_has_window (GtkFixed *fixed)
-{
- g_return_val_if_fail (GTK_IS_FIXED (fixed), FALSE);
-
- return gtk_widget_get_has_window (GTK_WIDGET (fixed));
-}
-
#define __GTK_FIXED_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtkfixed.h b/gtk/gtkfixed.h
index 6480a2d188..7f2fa96003 100644
--- a/gtk/gtkfixed.h
+++ b/gtk/gtkfixed.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -79,11 +79,7 @@ void gtk_fixed_move (GtkFixed *fixed,
GtkWidget *widget,
gint x,
gint y);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_fixed_set_has_window (GtkFixed *fixed,
- gboolean has_window);
-gboolean gtk_fixed_get_has_window (GtkFixed *fixed);
-#endif
+
G_END_DECLS
diff --git a/gtk/gtkfontbutton.h b/gtk/gtkfontbutton.h
index 134097096c..813e639ef7 100644
--- a/gtk/gtkfontbutton.h
+++ b/gtk/gtkfontbutton.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c
index 3eb3d45c33..e22a87f96b 100644
--- a/gtk/gtkfontsel.c
+++ b/gtk/gtkfontsel.c
@@ -1340,24 +1340,6 @@ gtk_font_selection_get_size (GtkFontSelection *fontsel)
}
/**
- * gtk_font_selection_get_font:
- * @fontsel: a #GtkFontSelection
- *
- * Gets the currently-selected font.
- *
- * Return value: A #GdkFont.
- *
- * Deprecated: 2.0: Use gtk_font_selection_get_font_name() instead.
- */
-GdkFont *
-gtk_font_selection_get_font (GtkFontSelection *fontsel)
-{
- g_return_val_if_fail (GTK_IS_FONT_SELECTION (fontsel), NULL);
-
- return gtk_font_selection_get_font_internal (fontsel);
-}
-
-/**
* gtk_font_selection_get_font_name:
* @fontsel: a #GtkFontSelection
*
@@ -1693,26 +1675,6 @@ gtk_font_selection_dialog_get_ok_button (GtkFontSelectionDialog *fsd)
}
/**
- * gtk_font_selection_dialog_get_apply_button:
- * @fsd: a #GtkFontSelectionDialog
- *
- * Obtains a button. The button doesn't have any function.
- *
- * Return value: a #GtkWidget
- *
- * Since: 2.14
- *
- * Deprecated: 2.16: Don't use this function.
- */
-GtkWidget *
-gtk_font_selection_dialog_get_apply_button (GtkFontSelectionDialog *fsd)
-{
- g_return_val_if_fail (GTK_IS_FONT_SELECTION_DIALOG (fsd), NULL);
-
- return fsd->apply_button;
-}
-
-/**
* gtk_font_selection_dialog_get_cancel_button:
* @fsd: a #GtkFontSelectionDialog
*
@@ -1779,25 +1741,6 @@ gtk_font_selection_dialog_get_font_name (GtkFontSelectionDialog *fsd)
}
/**
- * gtk_font_selection_dialog_get_font:
- * @fsd: a #GtkFontSelectionDialog
- *
- * Gets the currently-selected font.
- *
- * Return value: the #GdkFont from the #GtkFontSelection for the
- * currently selected font in the dialog, or %NULL if no font is selected
- *
- * Deprecated: 2.0: Use gtk_font_selection_dialog_get_font_name() instead.
- */
-GdkFont*
-gtk_font_selection_dialog_get_font (GtkFontSelectionDialog *fsd)
-{
- g_return_val_if_fail (GTK_IS_FONT_SELECTION_DIALOG (fsd), NULL);
-
- return gtk_font_selection_get_font_internal (GTK_FONT_SELECTION (fsd->fontsel));
-}
-
-/**
* gtk_font_selection_dialog_set_font_name:
* @fsd: a #GtkFontSelectionDialog
* @fontname: a font name like "Helvetica 12" or "Times Bold 18"
diff --git a/gtk/gtkfontsel.h b/gtk/gtkfontsel.h
index 6cf97359d1..5b1b2ceb63 100644
--- a/gtk/gtkfontsel.h
+++ b/gtk/gtkfontsel.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -156,10 +156,6 @@ PangoFontFace *
gint gtk_font_selection_get_size (GtkFontSelection *fontsel);
gchar* gtk_font_selection_get_font_name (GtkFontSelection *fontsel);
-#ifndef GTK_DISABLE_DEPRECATED
-GdkFont* gtk_font_selection_get_font (GtkFontSelection *fontsel);
-#endif /* GTK_DISABLE_DEPRECATED */
-
gboolean gtk_font_selection_set_font_name (GtkFontSelection *fontsel,
const gchar *fontname);
const gchar* gtk_font_selection_get_preview_text (GtkFontSelection *fontsel);
@@ -176,9 +172,6 @@ GType gtk_font_selection_dialog_get_type (void) G_GNUC_CONST;
GtkWidget *gtk_font_selection_dialog_new (const gchar *title);
GtkWidget *gtk_font_selection_dialog_get_ok_button (GtkFontSelectionDialog *fsd);
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget *gtk_font_selection_dialog_get_apply_button (GtkFontSelectionDialog *fsd);
-#endif
GtkWidget *gtk_font_selection_dialog_get_cancel_button (GtkFontSelectionDialog *fsd);
/* This returns the X Logical Font Description fontname, or NULL if no font
@@ -188,13 +181,6 @@ GtkWidget *gtk_font_selection_dialog_get_cancel_button (GtkFontSelectionDialog *
You should g_free() the returned font name after you're done with it. */
gchar* gtk_font_selection_dialog_get_font_name (GtkFontSelectionDialog *fsd);
-#ifndef GTK_DISABLE_DEPRECATED
-/* This will return the current GdkFont, or NULL if none is selected or there
- was a problem loading it. Remember to use gdk_font_ref/unref() if you want
- to use the font (in a style, for example). */
-GdkFont* gtk_font_selection_dialog_get_font (GtkFontSelectionDialog *fsd);
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* This sets the currently displayed font. It should be a valid X Logical
Font Description font name (anything else will be ignored), e.g.
"-adobe-courier-bold-o-normal--25-*-*-*-*-*-*-*"
diff --git a/gtk/gtkframe.h b/gtk/gtkframe.h
index 2b1e926cde..393f355c72 100644
--- a/gtk/gtkframe.h
+++ b/gtk/gtkframe.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkgamma.c b/gtk/gtkgamma.c
deleted file mode 100644
index 79e4d1c06b..0000000000
--- a/gtk/gtkgamma.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1997 David Mosberger
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <gdk-pixbuf/gdk-pixdata.h>
-
-#include "gtkgamma.h"
-#include "gtkcurve.h"
-#include "gtkdialog.h"
-#include "gtkdrawingarea.h"
-#include "gtkentry.h"
-#include "gtkhbox.h"
-#include "gtkimage.h"
-#include "gtklabel.h"
-#include "gtkmain.h"
-#include "gtkradiobutton.h"
-#include "gtkstock.h"
-#include "gtktable.h"
-#include "gtkvbox.h"
-#include "gtkwindow.h"
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-/* forward declarations: */
-static void gtk_gamma_curve_destroy (GtkObject *object);
-
-static void curve_type_changed_callback (GtkWidget *w, gpointer data);
-static void button_realize_callback (GtkWidget *w);
-static void button_toggled_callback (GtkWidget *w, gpointer data);
-static void button_clicked_callback (GtkWidget *w, gpointer data);
-
-enum
- {
- LINEAR = 0,
- SPLINE,
- FREE,
- GAMMA,
- RESET,
- NUM_XPMS
- };
-
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (spline_pixdata)
-#endif
-#ifdef __GNUC__
-static const guint8 spline_pixdata[] __attribute__ ((__aligned__ (4))) =
-#else
-static const guint8 spline_pixdata[] =
-#endif
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (182) */
- "\0\0\0\316"
- /* pixdata_type (0x2010002) */
- "\2\1\0\2"
- /* rowstride (64) */
- "\0\0\0@"
- /* width (16) */
- "\0\0\0\20"
- /* height (16) */
- "\0\0\0\20"
- /* pixel_data: */
- "\216\0\0\0\0\202\0\0\0\377\211\0\0\0\0\206\377\0\0\377\1\0\0\0\377\207"
- "\0\0\0\0\202\377\0\0\377\214\0\0\0\0\2\0\0\0\377\274--\377\215\0\0\0"
- "\0\203\0\0\0\377\215\0\0\0\0\2\274--\377\0\0\0\377\216\0\0\0\0\1\377"
- "\0\0\377\216\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\216\0\0"
- "\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377"
- "\217\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\216\0\0\0\0\2\0"
- "\0\0\377\274--\377\216\0\0\0\0\202\0\0\0\377\216\0\0\0\0"};
-
-
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (linear_pixdata)
-#endif
-#ifdef __GNUC__
-static const guint8 linear_pixdata[] __attribute__ ((__aligned__ (4))) =
-#else
-static const guint8 linear_pixdata[] =
-#endif
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (323) */
- "\0\0\1["
- /* pixdata_type (0x2010002) */
- "\2\1\0\2"
- /* rowstride (64) */
- "\0\0\0@"
- /* width (16) */
- "\0\0\0\20"
- /* height (16) */
- "\0\0\0\20"
- /* pixel_data: */
- "\216\0\0\0\0\202\0\0\0\377\216\0\0\0\0\2\202AA\377\0\0\0\377\216\0\0"
- "\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377"
- "\206\0\0\0\0\3\177\177\177\377\0\0\0\377\177\177\177\377\205\0\0\0\0"
- "\1\377\0\0\377\207\0\0\0\0\203\0\0\0\377\205\0\0\0\0\1\377\0\0\377\207"
- "\0\0\0\0\3\202AA\377\0\0\0\377\202AA\377\204\0\0\0\0\1\377\0\0\377\210"
- "\0\0\0\0\3\377\0\0\377\0\0\0\0\377\0\0\377\204\0\0\0\0\1\377\0\0\377"
- "\207\0\0\0\0\1\377\0\0\377\203\0\0\0\0\1\377\0\0\377\202\0\0\0\0\1\377"
- "\0\0\377\210\0\0\0\0\1\377\0\0\377\203\0\0\0\0\1\377\0\0\377\202\0\0"
- "\0\0\1\377\0\0\377\207\0\0\0\0\1\377\0\0\377\205\0\0\0\0\3\377\0\0\377"
- "\0\0\0\377\202AA\377\207\0\0\0\0\1\377\0\0\377\205\0\0\0\0\203\0\0\0"
- "\377\206\0\0\0\0\1\377\0\0\377\206\0\0\0\0\3\177\177\177\377\0\0\0\377"
- "\177\177\177\377\205\0\0\0\0\2\0\0\0\377\202AA\377\216\0\0\0\0\202\0"
- "\0\0\377\216\0\0\0\0"};
-
-
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (free_pixdata)
-#endif
-#ifdef __GNUC__
-static const guint8 free_pixdata[] __attribute__ ((__aligned__ (4))) =
-#else
-static const guint8 free_pixdata[] =
-#endif
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (204) */
- "\0\0\0\344"
- /* pixdata_type (0x2010002) */
- "\2\1\0\2"
- /* rowstride (64) */
- "\0\0\0@"
- /* width (16) */
- "\0\0\0\20"
- /* height (16) */
- "\0\0\0\20"
- /* pixel_data: */
- "\246\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\220\0\0\0\0\1\377"
- "\0\0\377\217\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\220\0\0"
- "\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377\217\0\0\0\0\1\377\0\0\377"
- "\214\0\0\0\0\1\377\0\0\377\203\0\0\0\0\2\377\0\0\377\0\0\0\0\205\377"
- "\0\0\377\204\0\0\0\0\1\377\0\0\377\204\0\0\0\0\1\377\0\0\377\211\0\0"
- "\0\0\1\377\0\0\377\205\0\0\0\0\1\377\0\0\377\210\0\0\0\0\1\377\0\0\377"
- "\207\0\0\0\0\1\377\0\0\377\206\0\0\0\0\1\377\0\0\377\210\0\0\0\0\1\377"
- "\0\0\377\205\0\0\0\0\1\377\0\0\377\217\0\0\0\0"};
-
-
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (gamma_pixdata)
-#endif
-#ifdef __GNUC__
-static const guint8 gamma_pixdata[] __attribute__ ((__aligned__ (4))) =
-#else
-static const guint8 gamma_pixdata[] =
-#endif
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (218) */
- "\0\0\0\362"
- /* pixdata_type (0x2010002) */
- "\2\1\0\2"
- /* rowstride (64) */
- "\0\0\0@"
- /* width (16) */
- "\0\0\0\20"
- /* height (16) */
- "\0\0\0\20"
- /* pixel_data: */
- "\264\0\0\0\0\2\0\0\0\377^^^\377\202\0\0\0\0\3\214\214\214\377\0\0\0\377"
- "\214\214\214\377\211\0\0\0\0\7FFF\377\27\27\27\377\273\273\273\377\0"
- "\0\0\0uuu\377\27\27\27\377\244\244\244\377\212\0\0\0\0\3uuu\377\214\214"
- "\214\377\0\0\0\0\202FFF\377\214\0\0\0\0\4\0\0\0\377\0\0\0\0\0\0\0\377"
- "\214\214\214\377\214\0\0\0\0\3FFF\377\0\0\0\0FFF\377\215\0\0\0\0\3FF"
- "F\377\27\27\27\377\214\214\214\377\215\0\0\0\0\2\244\244\244\377\0\0"
- "\0\377\216\0\0\0\0\2uuu\377^^^\377\216\0\0\0\0\2///\377\0\0\0\377\216"
- "\0\0\0\0\202\0\0\0\377\216\0\0\0\0\2\0\0\0\377///\377\250\0\0\0\0"};
-
-
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (reset_pixdata)
-#endif
-#ifdef __GNUC__
-static const guint8 reset_pixdata[] __attribute__ ((__aligned__ (4))) =
-#else
-static const guint8 reset_pixdata[] =
-#endif
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (173) */
- "\0\0\0\305"
- /* pixdata_type (0x2010002) */
- "\2\1\0\2"
- /* rowstride (64) */
- "\0\0\0@"
- /* width (16) */
- "\0\0\0\20"
- /* height (16) */
- "\0\0\0\20"
- /* pixel_data: */
- "\216\0\0\0\0\202\0\0\0\377\216\0\0\0\0\2\202AA\377\0\0\0\377\215\0\0"
- "\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377"
- "\216\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377"
- "\0\0\377\216\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377\216\0\0"
- "\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377\216\0\0\0\0\1\377\0\0\377"
- "\216\0\0\0\0\1\377\0\0\377\215\0\0\0\0\2\0\0\0\377\202AA\377\216\0\0"
- "\0\0\202\0\0\0\377\216\0\0\0\0"};
-
-G_DEFINE_TYPE (GtkGammaCurve, gtk_gamma_curve, GTK_TYPE_VBOX)
-
-static void
-gtk_gamma_curve_class_init (GtkGammaCurveClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
- object_class->destroy = gtk_gamma_curve_destroy;
-}
-
-static void
-gtk_gamma_curve_init (GtkGammaCurve *curve)
-{
- GtkWidget *vbox;
- int i;
-
- curve->gamma = 1.0;
-
- curve->table = gtk_table_new (1, 2, FALSE);
- gtk_table_set_col_spacings (GTK_TABLE (curve->table), 3);
- gtk_container_add (GTK_CONTAINER (curve), curve->table);
-
- curve->curve = gtk_curve_new ();
- g_signal_connect (curve->curve, "curve-type-changed",
- G_CALLBACK (curve_type_changed_callback), curve);
- gtk_table_attach_defaults (GTK_TABLE (curve->table), curve->curve, 0, 1, 0, 1);
-
- vbox = gtk_vbox_new (/* homogeneous */ FALSE, /* spacing */ 3);
- gtk_table_attach (GTK_TABLE (curve->table), vbox, 1, 2, 0, 1, 0, 0, 0, 0);
-
- /* toggle buttons: */
- for (i = 0; i < 3; ++i)
- {
- curve->button[i] = gtk_toggle_button_new ();
- g_object_set_data (G_OBJECT (curve->button[i]), I_("_GtkGammaCurveIndex"),
- GINT_TO_POINTER (i));
- gtk_container_add (GTK_CONTAINER (vbox), curve->button[i]);
- g_signal_connect (curve->button[i], "realize",
- G_CALLBACK (button_realize_callback), NULL);
- g_signal_connect (curve->button[i], "toggled",
- G_CALLBACK (button_toggled_callback), curve);
- gtk_widget_show (curve->button[i]);
- }
-
- /* push buttons: */
- for (i = 3; i < 5; ++i)
- {
- curve->button[i] = gtk_button_new ();
- g_object_set_data (G_OBJECT (curve->button[i]), I_("_GtkGammaCurveIndex"),
- GINT_TO_POINTER (i));
- gtk_container_add (GTK_CONTAINER (vbox), curve->button[i]);
- g_signal_connect (curve->button[i], "realize",
- G_CALLBACK (button_realize_callback), NULL);
- g_signal_connect (curve->button[i], "clicked",
- G_CALLBACK (button_clicked_callback), curve);
- gtk_widget_show (curve->button[i]);
- }
-
- gtk_widget_show (vbox);
- gtk_widget_show (curve->table);
- gtk_widget_show (curve->curve);
-}
-
-static void
-button_realize_callback (GtkWidget *w)
-{
- GtkWidget *image;
- struct {
- const guint8 *stream;
- gint length;
- } streams[5] = {
- { linear_pixdata, sizeof (linear_pixdata) },
- { spline_pixdata, sizeof (spline_pixdata) },
- { free_pixdata, sizeof (free_pixdata) },
- { gamma_pixdata, sizeof (gamma_pixdata) },
- { reset_pixdata, sizeof (reset_pixdata) }
- };
- GdkPixdata pixdata;
- GdkPixbuf *pixbuf;
- int i;
-
- i = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (w), "_GtkGammaCurveIndex"));
- gdk_pixdata_deserialize (&pixdata, streams[i].length, streams[i].stream, NULL);
- pixbuf = gdk_pixbuf_from_pixdata (&pixdata, TRUE, NULL);
- image = gtk_image_new_from_pixbuf (pixbuf);
- gtk_container_add (GTK_CONTAINER (w), image);
- gtk_widget_show (image);
-
- g_object_unref (pixbuf);
-}
-
-static void
-button_toggled_callback (GtkWidget *w, gpointer data)
-{
- GtkGammaCurve *c = data;
- GtkCurveType type;
- int active, i;
-
- if (!GTK_TOGGLE_BUTTON (w)->active)
- return;
-
- active = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (w), "_GtkGammaCurveIndex"));
-
- for (i = 0; i < 3; ++i)
- if ((i != active) && GTK_TOGGLE_BUTTON (c->button[i])->active)
- break;
-
- if (i < 3)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (c->button[i]), FALSE);
-
- switch (active)
- {
- case 0: type = GTK_CURVE_TYPE_SPLINE; break;
- case 1: type = GTK_CURVE_TYPE_LINEAR; break;
- default: type = GTK_CURVE_TYPE_FREE; break;
- }
- gtk_curve_set_curve_type (GTK_CURVE (c->curve), type);
-}
-
-static void
-gamma_cancel_callback (GtkWidget *w, gpointer data)
-{
- GtkGammaCurve *c = data;
-
- gtk_widget_destroy (c->gamma_dialog);
-}
-
-static void
-gamma_ok_callback (GtkWidget *w, gpointer data)
-{
- GtkGammaCurve *c = data;
- const gchar *start;
- gchar *end;
- gfloat v;
-
- start = gtk_entry_get_text (GTK_ENTRY (c->gamma_text));
- if (start)
- {
- v = g_strtod (start, &end);
- if (end > start && v > 0.0)
- c->gamma = v;
- }
- gtk_curve_set_gamma (GTK_CURVE (c->curve), c->gamma);
- gamma_cancel_callback (w, data);
-}
-
-static void
-button_clicked_callback (GtkWidget *w, gpointer data)
-{
- GtkGammaCurve *c = data;
- int active;
-
- active = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (w), "_GtkGammaCurveIndex"));
- if (active == 3)
- {
- /* set gamma */
- if (c->gamma_dialog)
- return;
- else
- {
- GtkWidget *vbox, *hbox, *label, *button;
- gchar buf[64];
-
- c->gamma_dialog = gtk_dialog_new ();
- gtk_window_set_screen (GTK_WINDOW (c->gamma_dialog),
- gtk_widget_get_screen (w));
- gtk_window_set_title (GTK_WINDOW (c->gamma_dialog), _("Gamma"));
- g_object_add_weak_pointer (G_OBJECT (c->gamma_dialog),
- (gpointer *)&c->gamma_dialog);
-
- vbox = GTK_DIALOG (c->gamma_dialog)->vbox;
-
- hbox = gtk_hbox_new (/* homogeneous */ FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 2);
- gtk_widget_show (hbox);
-
- label = gtk_label_new_with_mnemonic (_("_Gamma value"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
- gtk_widget_show (label);
-
- sprintf (buf, "%g", c->gamma);
- c->gamma_text = gtk_entry_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), c->gamma_text);
- gtk_entry_set_text (GTK_ENTRY (c->gamma_text), buf);
- gtk_box_pack_start (GTK_BOX (hbox), c->gamma_text, TRUE, TRUE, 2);
- gtk_widget_show (c->gamma_text);
-
- /* fill in action area: */
- hbox = GTK_DIALOG (c->gamma_dialog)->action_area;
-
- button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- g_signal_connect (button, "clicked",
- G_CALLBACK (gamma_cancel_callback), c);
- gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
- gtk_widget_show (button);
-
- button = gtk_button_new_from_stock (GTK_STOCK_OK);
- gtk_widget_set_can_default (button, TRUE);
- g_signal_connect (button, "clicked",
- G_CALLBACK (gamma_ok_callback), c);
- gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
- gtk_widget_grab_default (button);
- gtk_widget_show (button);
-
- gtk_widget_show (c->gamma_dialog);
- }
- }
- else
- {
- /* reset */
- gtk_curve_reset (GTK_CURVE (c->curve));
- }
-}
-
-static void
-curve_type_changed_callback (GtkWidget *w, gpointer data)
-{
- GtkGammaCurve *c = data;
- GtkCurveType new_type;
- int active;
-
- new_type = GTK_CURVE (w)->curve_type;
- switch (new_type)
- {
- case GTK_CURVE_TYPE_SPLINE: active = 0; break;
- case GTK_CURVE_TYPE_LINEAR: active = 1; break;
- default: active = 2; break;
- }
- if (!GTK_TOGGLE_BUTTON (c->button[active])->active)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (c->button[active]), TRUE);
-}
-
-GtkWidget*
-gtk_gamma_curve_new (void)
-{
- return g_object_new (GTK_TYPE_GAMMA_CURVE, NULL);
-}
-
-static void
-gtk_gamma_curve_destroy (GtkObject *object)
-{
- GtkGammaCurve *c = GTK_GAMMA_CURVE (object);
-
- if (c->gamma_dialog)
- gtk_widget_destroy (c->gamma_dialog);
-
- GTK_OBJECT_CLASS (gtk_gamma_curve_parent_class)->destroy (object);
-}
-
-#define __GTK_GAMMA_CURVE_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkgamma.h b/gtk/gtkgamma.h
deleted file mode 100644
index 0173f960ac..0000000000
--- a/gtk/gtkgamma.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1997 David Mosberger
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_GAMMA_CURVE_H__
-#define __GTK_GAMMA_CURVE_H__
-
-
-#include <gtk/gtkvbox.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_GAMMA_CURVE (gtk_gamma_curve_get_type ())
-#define GTK_GAMMA_CURVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_GAMMA_CURVE, GtkGammaCurve))
-#define GTK_GAMMA_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_GAMMA_CURVE, GtkGammaCurveClass))
-#define GTK_IS_GAMMA_CURVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_GAMMA_CURVE))
-#define GTK_IS_GAMMA_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_GAMMA_CURVE))
-#define GTK_GAMMA_CURVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_GAMMA_CURVE, GtkGammaCurveClass))
-
-typedef struct _GtkGammaCurve GtkGammaCurve;
-typedef struct _GtkGammaCurveClass GtkGammaCurveClass;
-
-
-struct _GtkGammaCurve
-{
- GtkVBox vbox;
-
- GtkWidget *GSEAL (table);
- GtkWidget *GSEAL (curve);
- GtkWidget *GSEAL (button[5]); /* spline, linear, free, gamma, reset */
-
- gfloat GSEAL (gamma);
- GtkWidget *GSEAL (gamma_dialog);
- GtkWidget *GSEAL (gamma_text);
-};
-
-struct _GtkGammaCurveClass
-{
- GtkVBoxClass parent_class;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-
-GType gtk_gamma_curve_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_gamma_curve_new (void);
-
-
-G_END_DECLS
-
-#endif /* __GTK_GAMMA_CURVE_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkgc.h b/gtk/gtkgc.h
index 5fcb1a2cf0..8395bbafbf 100644
--- a/gtk/gtkgc.h
+++ b/gtk/gtkgc.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhandlebox.h b/gtk/gtkhandlebox.h
index 47fb39053d..b914e962d7 100644
--- a/gtk/gtkhandlebox.h
+++ b/gtk/gtkhandlebox.h
@@ -29,7 +29,7 @@
* their parents.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhbbox.c b/gtk/gtkhbbox.c
index 50131d1ea1..55b0b15098 100644
--- a/gtk/gtkhbbox.c
+++ b/gtk/gtkhbbox.c
@@ -30,8 +30,6 @@
#include "gtkintl.h"
#include "gtkalias.h"
-
-static gint default_spacing = 30;
static gint default_layout_style = GTK_BUTTONBOX_EDGE;
G_DEFINE_TYPE (GtkHButtonBox, gtk_hbutton_box, GTK_TYPE_BUTTON_BOX)
@@ -54,44 +52,6 @@ gtk_hbutton_box_new (void)
return g_object_new (GTK_TYPE_HBUTTON_BOX, NULL);
}
-
-/* set default value for spacing */
-
-void
-gtk_hbutton_box_set_spacing_default (gint spacing)
-{
- default_spacing = spacing;
-}
-
-
-/* set default value for layout style */
-
-void
-gtk_hbutton_box_set_layout_default (GtkButtonBoxStyle layout)
-{
- g_return_if_fail (layout >= GTK_BUTTONBOX_DEFAULT_STYLE &&
- layout <= GTK_BUTTONBOX_CENTER);
-
- default_layout_style = layout;
-}
-
-/* get default value for spacing */
-
-gint
-gtk_hbutton_box_get_spacing_default (void)
-{
- return default_spacing;
-}
-
-
-/* get default value for layout style */
-
-GtkButtonBoxStyle
-gtk_hbutton_box_get_layout_default (void)
-{
- return default_layout_style;
-}
-
GtkButtonBoxStyle
_gtk_hbutton_box_get_layout_default (void)
{
diff --git a/gtk/gtkhbbox.h b/gtk/gtkhbbox.h
index 25eecba106..f0aec6e8dd 100644
--- a/gtk/gtkhbbox.h
+++ b/gtk/gtkhbbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -64,14 +64,6 @@ GtkWidget* gtk_hbutton_box_new (void);
/* buttons can be added by gtk_container_add() */
-#ifndef GTK_DISABLE_DEPRECATED
-gint gtk_hbutton_box_get_spacing_default (void);
-GtkButtonBoxStyle gtk_hbutton_box_get_layout_default (void);
-
-void gtk_hbutton_box_set_spacing_default (gint spacing);
-void gtk_hbutton_box_set_layout_default (GtkButtonBoxStyle layout);
-#endif
-
/* private API */
GtkButtonBoxStyle _gtk_hbutton_box_get_layout_default (void);
diff --git a/gtk/gtkhbox.h b/gtk/gtkhbox.h
index 02b74acbe9..e04c7314cf 100644
--- a/gtk/gtkhbox.h
+++ b/gtk/gtkhbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhpaned.h b/gtk/gtkhpaned.h
index 560ea2e3e6..3a526b5cb1 100644
--- a/gtk/gtkhpaned.h
+++ b/gtk/gtkhpaned.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhruler.h b/gtk/gtkhruler.h
index 3c30917cef..d2c876e3f4 100644
--- a/gtk/gtkhruler.h
+++ b/gtk/gtkhruler.h
@@ -34,7 +34,7 @@
* distribution.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhscale.h b/gtk/gtkhscale.h
index 6b13a09c4c..9ecfd699fb 100644
--- a/gtk/gtkhscale.h
+++ b/gtk/gtkhscale.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhscrollbar.h b/gtk/gtkhscrollbar.h
index f3300a7ccb..2246c74dc5 100644
--- a/gtk/gtkhscrollbar.h
+++ b/gtk/gtkhscrollbar.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkhseparator.h b/gtk/gtkhseparator.h
index a4d9f11725..4cda938477 100644
--- a/gtk/gtkhseparator.h
+++ b/gtk/gtkhseparator.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkiconfactory.h b/gtk/gtkiconfactory.h
index 574b101d08..d7a1bf8787 100644
--- a/gtk/gtkiconfactory.h
+++ b/gtk/gtkiconfactory.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkicontheme.h b/gtk/gtkicontheme.h
index f8609cbc0b..aa1fa51685 100644
--- a/gtk/gtkicontheme.h
+++ b/gtk/gtkicontheme.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkiconview.h b/gtk/gtkiconview.h
index 7b9e51d227..10e17897d8 100644
--- a/gtk/gtkiconview.h
+++ b/gtk/gtkiconview.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index 87e0b08245..9edae99a16 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -1526,46 +1526,6 @@ gtk_image_new (void)
return g_object_new (GTK_TYPE_IMAGE, NULL);
}
-/**
- * gtk_image_set:
- * @image: a #GtkImage
- * @val: a #GdkImage
- * @mask: a #GdkBitmap that indicates which parts of the image should be transparent.
- *
- * Sets the #GtkImage.
- *
- * Deprecated: 2.0: Use gtk_image_set_from_image() instead.
- */
-void
-gtk_image_set (GtkImage *image,
- GdkImage *val,
- GdkBitmap *mask)
-{
- g_return_if_fail (GTK_IS_IMAGE (image));
-
- gtk_image_set_from_image (image, val, mask);
-}
-
-/**
- * gtk_image_get:
- * @image: a #GtkImage
- * @val: return location for a #GdkImage
- * @mask: a #GdkBitmap that indicates which parts of the image should be transparent.
- *
- * Gets the #GtkImage.
- *
- * Deprecated: 2.0: Use gtk_image_get_image() instead.
- */
-void
-gtk_image_get (GtkImage *image,
- GdkImage **val,
- GdkBitmap **mask)
-{
- g_return_if_fail (GTK_IS_IMAGE (image));
-
- gtk_image_get_image (image, val, mask);
-}
-
static void
gtk_image_reset_anim_iter (GtkImage *image)
{
diff --git a/gtk/gtkimage.h b/gtk/gtkimage.h
index dd6153c44c..13da499888 100644
--- a/gtk/gtkimage.h
+++ b/gtk/gtkimage.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -258,17 +258,6 @@ void gtk_image_get_gicon (GtkImage *image,
GtkIconSize *size);
gint gtk_image_get_pixel_size (GtkImage *image);
-#ifndef GTK_DISABLE_DEPRECATED
-/* These three are deprecated */
-
-void gtk_image_set (GtkImage *image,
- GdkImage *val,
- GdkBitmap *mask);
-void gtk_image_get (GtkImage *image,
- GdkImage **val,
- GdkBitmap **mask);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_IMAGE_H__ */
diff --git a/gtk/gtkimagemenuitem.h b/gtk/gtkimagemenuitem.h
index b82bdfd319..7d50ea44b6 100644
--- a/gtk/gtkimagemenuitem.h
+++ b/gtk/gtkimagemenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkimcontext.h b/gtk/gtkimcontext.h
index a0f26471a5..21452f2cce 100644
--- a/gtk/gtkimcontext.h
+++ b/gtk/gtkimcontext.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkimcontextsimple.h b/gtk/gtkimcontextsimple.h
index 2c44db25a3..8017c314f8 100644
--- a/gtk/gtkimcontextsimple.h
+++ b/gtk/gtkimcontextsimple.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkimmulticontext.h b/gtk/gtkimmulticontext.h
index 951ddae266..418a9327f7 100644
--- a/gtk/gtkimmulticontext.h
+++ b/gtk/gtkimmulticontext.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkinputdialog.c b/gtk/gtkinputdialog.c
deleted file mode 100644
index c91467b6ae..0000000000
--- a/gtk/gtkinputdialog.c
+++ /dev/null
@@ -1,764 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * gtkinputdialog.c
- *
- * Copyright 1997 Owen Taylor <owt1@cornell.edu>
- *
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-
-#include "gdk/gdkkeysyms.h"
-
-#undef GTK_DISABLE_DEPRECATED /* GtkOptionMenu */
-
-#include "gtkinputdialog.h"
-#include "gtkbutton.h"
-#include "gtkentry.h"
-#include "gtkhbox.h"
-#include "gtklabel.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkmenu.h"
-#include "gtkmenuitem.h"
-#include "gtknotebook.h"
-#include "gtkoptionmenu.h"
-#include "gtkscrolledwindow.h"
-#include "gtkstock.h"
-#include "gtktable.h"
-#include "gtkvbox.h"
-
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-typedef struct _GtkInputDialogPrivate GtkInputDialogPrivate;
-typedef struct _GtkInputKeyInfo GtkInputKeyInfo;
-
-struct _GtkInputDialogPrivate
-{
- GtkWidget *device_menu;
- GtkWidget *device_optionmenu;
- GtkWidget *no_devices_label;
- GtkWidget *main_vbox;
-};
-
-struct _GtkInputKeyInfo
-{
- gint index;
- GtkWidget *entry;
- GtkInputDialog *inputd;
-};
-
-enum
-{
- ENABLE_DEVICE,
- DISABLE_DEVICE,
- LAST_SIGNAL
-};
-
-
-#define AXIS_LIST_WIDTH 160
-#define AXIS_LIST_HEIGHT 175
-
-#define KEYS_LIST_WIDTH 200
-#define KEYS_LIST_HEIGHT 175
-
-/* Forward declarations */
-
-static void gtk_input_dialog_screen_changed (GtkWidget *widget,
- GdkScreen *previous_screen);
-static void gtk_input_dialog_set_device (GtkWidget *widget,
- gpointer data);
-static void gtk_input_dialog_set_mapping_mode (GtkWidget *w,
- gpointer data);
-static void gtk_input_dialog_set_axis (GtkWidget *widget,
- gpointer data);
-static void gtk_input_dialog_fill_axes (GtkInputDialog *inputd,
- GdkDevice *info);
-static void gtk_input_dialog_set_key (GtkInputKeyInfo *key,
- guint keyval,
- GdkModifierType modifiers);
-static gboolean gtk_input_dialog_key_press (GtkWidget *widget,
- GdkEventKey *event,
- GtkInputKeyInfo *key);
-static void gtk_input_dialog_clear_key (GtkWidget *widget,
- GtkInputKeyInfo *key);
-static void gtk_input_dialog_destroy_key (GtkWidget *widget,
- GtkInputKeyInfo *key);
-static void gtk_input_dialog_fill_keys (GtkInputDialog *inputd,
- GdkDevice *info);
-
-static guint input_dialog_signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (GtkInputDialog, gtk_input_dialog, GTK_TYPE_DIALOG)
-
-static GtkInputDialogPrivate *
-gtk_input_dialog_get_private (GtkInputDialog *input_dialog)
-{
- return G_TYPE_INSTANCE_GET_PRIVATE (input_dialog,
- GTK_TYPE_INPUT_DIALOG,
- GtkInputDialogPrivate);
-}
-
-static GtkInputDialog *
-input_dialog_from_widget (GtkWidget *widget)
-{
- GtkWidget *toplevel;
-
- if (GTK_IS_MENU_ITEM (widget))
- {
- GtkMenu *menu = GTK_MENU (widget->parent);
- widget = gtk_menu_get_attach_widget (menu);
- }
-
- toplevel = gtk_widget_get_toplevel (widget);
- return GTK_INPUT_DIALOG (toplevel);
-}
-
-static void
-gtk_input_dialog_class_init (GtkInputDialogClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
-
- widget_class->screen_changed = gtk_input_dialog_screen_changed;
-
- klass->enable_device = NULL;
- klass->disable_device = NULL;
-
- input_dialog_signals[ENABLE_DEVICE] =
- g_signal_new (I_("enable-device"),
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkInputDialogClass, enable_device),
- NULL, NULL,
- _gtk_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1,
- GDK_TYPE_DEVICE);
-
- input_dialog_signals[DISABLE_DEVICE] =
- g_signal_new (I_("disable-device"),
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkInputDialogClass, disable_device),
- NULL, NULL,
- _gtk_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1,
- GDK_TYPE_DEVICE);
-
- g_type_class_add_private (object_class, sizeof (GtkInputDialogPrivate));
-}
-
-static void
-gtk_input_dialog_init (GtkInputDialog *inputd)
-{
- GtkInputDialogPrivate *private = gtk_input_dialog_get_private (inputd);
- GtkDialog *dialog = GTK_DIALOG (inputd);
- GtkWidget *util_box;
- GtkWidget *label;
- GtkWidget *mapping_menu;
- GtkWidget *menuitem;
- GtkWidget *notebook;
-
- gtk_widget_push_composite_child ();
-
- gtk_window_set_title (GTK_WINDOW (inputd), _("Input"));
-
- gtk_dialog_set_has_separator (dialog, FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (dialog->vbox), 2); /* 2 * 5 + 2 = 12 */
- gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 5);
- gtk_box_set_spacing (GTK_BOX (dialog->action_area), 6);
-
- /* main vbox */
-
- private->main_vbox = gtk_vbox_new (FALSE, 12);
- gtk_container_set_border_width (GTK_CONTAINER (private->main_vbox), 5);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inputd)->vbox), private->main_vbox,
- TRUE, TRUE, 0);
-
- private->no_devices_label = gtk_label_new (_("No extended input devices"));
- gtk_container_set_border_width (GTK_CONTAINER (private->main_vbox), 5);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inputd)->vbox),
- private->no_devices_label,
- TRUE, TRUE, 0);
-
- /* menu for selecting device */
-
- private->device_menu = gtk_menu_new ();
-
- util_box = gtk_hbox_new (FALSE, 12);
- gtk_box_pack_start (GTK_BOX (private->main_vbox), util_box, FALSE, FALSE, 0);
-
- label = gtk_label_new_with_mnemonic (_("_Device:"));
- gtk_box_pack_start (GTK_BOX (util_box), label, FALSE, FALSE, 0);
-
- private->device_optionmenu = gtk_option_menu_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), private->device_optionmenu);
- gtk_box_pack_start (GTK_BOX (util_box), private->device_optionmenu, TRUE, TRUE, 0);
- gtk_widget_show (private->device_optionmenu);
- gtk_option_menu_set_menu (GTK_OPTION_MENU (private->device_optionmenu), private->device_menu);
-
- gtk_widget_show (label);
-
- /* Device options */
-
- /* mapping mode option menu */
-
- mapping_menu = gtk_menu_new ();
-
- menuitem = gtk_menu_item_new_with_label(_("Disabled"));
- gtk_menu_shell_append (GTK_MENU_SHELL (mapping_menu), menuitem);
- gtk_widget_show (menuitem);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (gtk_input_dialog_set_mapping_mode),
- GINT_TO_POINTER (GDK_MODE_DISABLED));
-
- menuitem = gtk_menu_item_new_with_label(_("Screen"));
- gtk_menu_shell_append (GTK_MENU_SHELL (mapping_menu), menuitem);
- gtk_widget_show (menuitem);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (gtk_input_dialog_set_mapping_mode),
- GINT_TO_POINTER (GDK_MODE_SCREEN));
-
- menuitem = gtk_menu_item_new_with_label(_("Window"));
- gtk_menu_shell_append (GTK_MENU_SHELL (mapping_menu), menuitem);
- gtk_widget_show (menuitem);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (gtk_input_dialog_set_mapping_mode),
- GINT_TO_POINTER (GDK_MODE_WINDOW));
-
- label = gtk_label_new_with_mnemonic (_("_Mode:"));
- gtk_box_pack_start (GTK_BOX (util_box), label, FALSE, FALSE, 0);
-
- inputd->mode_optionmenu = gtk_option_menu_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), inputd->mode_optionmenu);
- gtk_box_pack_start (GTK_BOX (util_box), inputd->mode_optionmenu, FALSE, FALSE, 0);
- gtk_widget_show (inputd->mode_optionmenu);
- gtk_option_menu_set_menu (GTK_OPTION_MENU (inputd->mode_optionmenu), mapping_menu);
-
- gtk_widget_show(label);
-
- gtk_widget_show (util_box);
-
- /* Notebook */
-
- notebook = gtk_notebook_new ();
- gtk_box_pack_start (GTK_BOX (private->main_vbox), notebook, TRUE, TRUE, 0);
- gtk_widget_show (notebook);
-
- /* The axis listbox */
-
- label = gtk_label_new (_("Axes"));
-
- inputd->axis_listbox = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_set_border_width (GTK_CONTAINER (inputd->axis_listbox), 12);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(inputd->axis_listbox),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- gtk_widget_set_size_request (inputd->axis_listbox,
- AXIS_LIST_WIDTH, AXIS_LIST_HEIGHT);
- gtk_notebook_append_page (GTK_NOTEBOOK(notebook),
- inputd->axis_listbox, label);
-
- gtk_widget_show (inputd->axis_listbox);
-
- inputd->axis_list = NULL;
-
- /* Keys listbox */
-
- label = gtk_label_new (_("Keys"));
-
- inputd->keys_listbox = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_set_border_width (GTK_CONTAINER (inputd->keys_listbox), 12);
- gtk_widget_set_size_request (inputd->keys_listbox,
- KEYS_LIST_WIDTH, KEYS_LIST_HEIGHT);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (inputd->keys_listbox),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
- inputd->keys_listbox, label);
-
- gtk_widget_show (inputd->keys_listbox);
-
- inputd->keys_list = NULL;
-
- inputd->save_button = gtk_button_new_from_stock (GTK_STOCK_SAVE);
- gtk_widget_set_can_default (inputd->save_button, TRUE);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG(inputd)->action_area),
- inputd->save_button, TRUE, TRUE, 0);
- gtk_widget_show (inputd->save_button);
-
- inputd->close_button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
- gtk_widget_set_can_default (inputd->close_button, TRUE);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG(inputd)->action_area),
- inputd->close_button, TRUE, TRUE, 0);
-
- gtk_widget_show (inputd->close_button);
- gtk_widget_grab_default (inputd->close_button);
-
- gtk_widget_pop_composite_child ();
-
- gtk_input_dialog_screen_changed (GTK_WIDGET (inputd), NULL);
-
- _gtk_dialog_set_ignore_separator (dialog, TRUE);
-}
-
-static void
-gtk_input_dialog_screen_changed (GtkWidget *widget,
- GdkScreen *previous_screen)
-{
- GtkInputDialog *inputd = GTK_INPUT_DIALOG (widget);
- GtkInputDialogPrivate *private = gtk_input_dialog_get_private (inputd);
-
- GList *device_info = NULL;
- GdkDevice *core_pointer = NULL;
- GList *tmp_list;
-
- if (gtk_widget_has_screen (widget))
- {
- GdkDisplay *display;
-
- display = gtk_widget_get_display (widget);
- device_info = gdk_display_list_devices (display);
- core_pointer = gdk_display_get_core_pointer (display);
- }
-
- inputd->current_device = NULL;
- gtk_container_foreach (GTK_CONTAINER (private->device_menu),
- (GtkCallback)gtk_widget_destroy, NULL);
-
- if (g_list_length(device_info) <= 1) /* only core device */
- {
- gtk_widget_hide (private->main_vbox);
- gtk_widget_show (private->no_devices_label);
- gtk_widget_set_sensitive(inputd->save_button, FALSE);
- }
- else
- {
- gtk_widget_show (private->main_vbox);
- gtk_widget_hide (private->no_devices_label);
- gtk_widget_set_sensitive(inputd->save_button, TRUE);
-
- for (tmp_list = device_info; tmp_list; tmp_list = tmp_list->next)
- {
- GdkDevice *info = tmp_list->data;
- if (info != core_pointer)
- {
- GtkWidget *menuitem;
-
- menuitem = gtk_menu_item_new_with_label (info->name);
-
- gtk_menu_shell_append (GTK_MENU_SHELL (private->device_menu),
- menuitem);
- gtk_widget_show (menuitem);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (gtk_input_dialog_set_device),
- info);
- }
- }
-
- gtk_input_dialog_set_device (widget, device_info->data);
- gtk_option_menu_set_history (GTK_OPTION_MENU (private->device_optionmenu), 0);
- }
-}
-
-GtkWidget*
-gtk_input_dialog_new (void)
-{
- GtkInputDialog *inputd;
-
- inputd = g_object_new (GTK_TYPE_INPUT_DIALOG, NULL);
-
- return GTK_WIDGET (inputd);
-}
-
-static void
-gtk_input_dialog_set_device (GtkWidget *w,
- gpointer data)
-{
- GdkDevice *device = data;
- GtkInputDialog *inputd = input_dialog_from_widget (w);
-
- inputd->current_device = device;
-
- gtk_input_dialog_fill_axes (inputd, device);
- gtk_input_dialog_fill_keys (inputd, device);
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (inputd->mode_optionmenu),
- device->mode);
-}
-
-static void
-gtk_input_dialog_set_mapping_mode (GtkWidget *w,
- gpointer data)
-{
- GtkInputDialog *inputd = input_dialog_from_widget (w);
- GdkDevice *info = inputd->current_device;
- GdkInputMode old_mode;
- GdkInputMode mode = GPOINTER_TO_INT (data);
-
- if (!info)
- return;
-
- old_mode = info->mode;
-
- if (mode != old_mode)
- {
- if (gdk_device_set_mode (info, mode))
- {
- if (mode == GDK_MODE_DISABLED)
- g_signal_emit (inputd,
- input_dialog_signals[DISABLE_DEVICE],
- 0,
- info);
- else
- g_signal_emit (inputd,
- input_dialog_signals[ENABLE_DEVICE],
- 0,
- info);
- }
- else
- gtk_option_menu_set_history (GTK_OPTION_MENU (inputd->mode_optionmenu),
- old_mode);
-
- /* FIXME: error dialog ? */
- }
-}
-
-static void
-gtk_input_dialog_set_axis (GtkWidget *w,
- gpointer data)
-{
- GdkAxisUse use = GPOINTER_TO_INT(data) & 0xFFFF;
- GdkAxisUse old_use;
- GdkAxisUse *new_axes;
- GtkInputDialog *inputd = input_dialog_from_widget (w);
- GdkDevice *info = inputd->current_device;
-
- gint axis = (GPOINTER_TO_INT(data) >> 16) - 1;
- gint old_axis;
- int i;
-
- if (!info)
- return;
-
- new_axes = g_new (GdkAxisUse, info->num_axes);
- old_axis = -1;
- for (i=0;i<info->num_axes;i++)
- {
- new_axes[i] = info->axes[i].use;
- if (info->axes[i].use == use)
- old_axis = i;
- }
-
- if (axis != -1)
- old_use = info->axes[axis].use;
- else
- old_use = GDK_AXIS_IGNORE;
-
- if (axis == old_axis) {
- g_free (new_axes);
- return;
- }
-
- /* we must always have an x and a y axis */
- if ((axis == -1 && (use == GDK_AXIS_X || use == GDK_AXIS_Y)) ||
- (old_axis == -1 && (old_use == GDK_AXIS_X || old_use == GDK_AXIS_Y)))
- {
- gtk_option_menu_set_history (
- GTK_OPTION_MENU (inputd->axis_items[use]),
- old_axis + 1);
- }
- else
- {
- if (axis != -1)
- gdk_device_set_axis_use (info, axis, use);
-
- if (old_axis != -1)
- gdk_device_set_axis_use (info, old_axis, old_use);
-
- if (old_use != GDK_AXIS_IGNORE)
- {
- gtk_option_menu_set_history (
- GTK_OPTION_MENU (inputd->axis_items[old_use]),
- old_axis + 1);
- }
- }
-
- g_free (new_axes);
-}
-
-static void
-gtk_input_dialog_fill_axes(GtkInputDialog *inputd, GdkDevice *info)
-{
- static const char *const axis_use_strings[GDK_AXIS_LAST] =
- {
- "",
- N_("_X:"),
- N_("_Y:"),
- N_("_Pressure:"),
- N_("X _tilt:"),
- N_("Y t_ilt:"),
- N_("_Wheel:")
- };
-
- int i,j;
- GtkWidget *menu;
- GtkWidget *option_menu;
- GtkWidget *label;
- GtkWidget *viewport;
- GtkWidget *old_child;
-
- /* remove all the old items */
- if (inputd->axis_list)
- {
- gtk_widget_hide (inputd->axis_list); /* suppress resizes (or get warnings) */
- gtk_widget_destroy (inputd->axis_list);
- }
- inputd->axis_list = gtk_table_new (GDK_AXIS_LAST, 2, 0);
- gtk_table_set_row_spacings (GTK_TABLE (inputd->axis_list), 6);
- gtk_table_set_col_spacings (GTK_TABLE (inputd->axis_list), 12);
-
- viewport = gtk_viewport_new (NULL, NULL);
- old_child = gtk_bin_get_child (GTK_BIN (inputd->axis_listbox));
- if (old_child != NULL)
- gtk_widget_destroy (old_child);
- gtk_container_add (GTK_CONTAINER (inputd->axis_listbox), viewport);
- gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
- gtk_widget_show (viewport);
- gtk_container_add (GTK_CONTAINER (viewport), inputd->axis_list);
- gtk_widget_show (inputd->axis_list);
-
- gtk_widget_realize (inputd->axis_list);
- gdk_window_set_background (inputd->axis_list->window,
- &inputd->axis_list->style->base[GTK_STATE_NORMAL]);
-
- for (i=GDK_AXIS_X;i<GDK_AXIS_LAST;i++)
- {
- /* create the label */
-
- label = gtk_label_new_with_mnemonic (_(axis_use_strings[i]));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach (GTK_TABLE (inputd->axis_list), label, 0, 1, i, i+1,
- GTK_FILL, 0, 2, 2);
-
- /* and the use option menu */
- menu = gtk_menu_new();
-
- for (j = -1; j < info->num_axes; j++)
- {
- char buffer[16];
- GtkWidget *menu_item;
-
- if (j == -1)
- menu_item = gtk_menu_item_new_with_label (_("none"));
- else
- {
- g_snprintf (buffer, sizeof (buffer), "%d", j+1);
- menu_item = gtk_menu_item_new_with_label (buffer);
- }
- g_signal_connect (menu_item, "activate",
- G_CALLBACK (gtk_input_dialog_set_axis),
- GINT_TO_POINTER (0x10000 * (j + 1) + i));
- gtk_widget_show (menu_item);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
- }
-
- inputd->axis_items[i] = option_menu = gtk_option_menu_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), option_menu);
- gtk_table_attach (GTK_TABLE (inputd->axis_list), option_menu,
- 1, 2, i, i+1, GTK_EXPAND | GTK_FILL, 0, 2, 2);
-
- gtk_widget_show (option_menu);
- gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu);
- for (j = 0; j < info->num_axes; j++)
- if (info->axes[j].use == (GdkAxisUse) i)
- {
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), j+1);
- break;
- }
-
- gtk_widget_show (label);
- }
-}
-
-static void
-gtk_input_dialog_clear_key (GtkWidget *widget, GtkInputKeyInfo *key)
-{
- if (!key->inputd->current_device)
- return;
-
- gtk_entry_set_text (GTK_ENTRY(key->entry), _("(disabled)"));
- gdk_device_set_key (key->inputd->current_device, key->index, 0, 0);
-}
-
-static void
-gtk_input_dialog_set_key (GtkInputKeyInfo *key,
- guint keyval, GdkModifierType modifiers)
-{
- GString *str;
- gchar chars[2];
-
- if (keyval)
- {
- str = g_string_new (NULL);
-
- if (modifiers & GDK_SHIFT_MASK)
- g_string_append (str, "Shift+");
- if (modifiers & GDK_CONTROL_MASK)
- g_string_append (str, "Ctrl+");
- if (modifiers & GDK_MOD1_MASK)
- g_string_append (str, "Alt+");
-
- if ((keyval >= 0x20) && (keyval <= 0xFF))
- {
- chars[0] = keyval;
- chars[1] = 0;
- g_string_append (str, chars);
- }
- else
- g_string_append (str, _("(unknown)"));
- gtk_entry_set_text (GTK_ENTRY(key->entry), str->str);
-
- g_string_free (str, TRUE);
- }
- else
- {
- gtk_entry_set_text (GTK_ENTRY(key->entry), _("(disabled)"));
- }
-}
-
-static gboolean
-gtk_input_dialog_key_press (GtkWidget *widget,
- GdkEventKey *event,
- GtkInputKeyInfo *key)
-{
- if (!key->inputd->current_device)
- return FALSE;
-
- gtk_input_dialog_set_key (key, event->keyval, event->state & 0xFF);
- gdk_device_set_key (key->inputd->current_device, key->index,
- event->keyval, event->state & 0xFF);
-
- g_signal_stop_emission_by_name (widget, "key-press-event");
-
- return TRUE;
-}
-
-static void
-gtk_input_dialog_destroy_key (GtkWidget *widget, GtkInputKeyInfo *key)
-{
- g_free (key);
-}
-
-static void
-gtk_input_dialog_fill_keys(GtkInputDialog *inputd, GdkDevice *info)
-{
- int i;
- GtkWidget *label;
- GtkWidget *button;
- GtkWidget *hbox;
- GtkWidget *viewport;
- GtkWidget *old_child;
-
- char buffer[32];
-
- /* remove all the old items */
- if (inputd->keys_list)
- {
- gtk_widget_hide (inputd->keys_list); /* suppress resizes (or get warnings) */
- gtk_widget_destroy (inputd->keys_list);
- }
-
- inputd->keys_list = gtk_table_new (info->num_keys, 2, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (inputd->keys_list), 6);
- gtk_table_set_col_spacings (GTK_TABLE (inputd->keys_list), 12);
-
- viewport = gtk_viewport_new (NULL, NULL);
- old_child = gtk_bin_get_child (GTK_BIN (inputd->keys_listbox));
- if (old_child != NULL)
- gtk_widget_destroy (old_child);
- gtk_container_add (GTK_CONTAINER (inputd->keys_listbox), viewport);
- gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
- gtk_widget_show (viewport);
- gtk_container_add (GTK_CONTAINER (viewport), inputd->keys_list);
- gtk_widget_show (inputd->keys_list);
-
- gtk_widget_realize (inputd->keys_list);
- gdk_window_set_background (inputd->keys_list->window,
- &inputd->keys_list->style->base[GTK_STATE_NORMAL]);
-
- for (i=0;i<info->num_keys;i++)
- {
- GtkInputKeyInfo *key = g_new (GtkInputKeyInfo, 1);
- key->index = i;
- key->inputd = inputd;
-
- /* create the label */
-
- g_snprintf (buffer, sizeof (buffer), "_%d:", i+1);
- label = gtk_label_new_with_mnemonic (buffer);
- gtk_table_attach (GTK_TABLE (inputd->keys_list), label, 0, 1, i, i+1,
- GTK_FILL, 0, 2, 2);
- gtk_widget_show (label);
-
- /* the entry */
-
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_table_attach (GTK_TABLE (inputd->keys_list), hbox, 1, 2, i, i+1,
- GTK_EXPAND | GTK_FILL, 0, 2, 2);
- gtk_widget_show (hbox);
-
- key->entry = gtk_entry_new ();
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), key->entry);
- gtk_box_pack_start (GTK_BOX (hbox), key->entry, TRUE, TRUE, 0);
- gtk_widget_show (key->entry);
-
- g_signal_connect (key->entry, "key-press-event",
- G_CALLBACK (gtk_input_dialog_key_press), key);
- g_signal_connect (key->entry, "destroy",
- G_CALLBACK (gtk_input_dialog_destroy_key), key);
-
- /* and clear button */
-
- button = gtk_button_new_with_mnemonic (_("Cl_ear"));
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0);
- gtk_widget_show (button);
-
- g_signal_connect (button, "clicked",
- G_CALLBACK (gtk_input_dialog_clear_key), key);
-
- gtk_input_dialog_set_key (key, info->keys[i].keyval,
- info->keys[i].modifiers);
- }
-}
-
-#define __GTK_INPUTDIALOG_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkinputdialog.h b/gtk/gtkinputdialog.h
deleted file mode 100644
index 6e95356bea..0000000000
--- a/gtk/gtkinputdialog.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * NOTE this widget is considered too specialized/little-used for
- * GTK+, and will in the future be moved to some other package. If
- * your application needs this widget, feel free to use it, as the
- * widget does work and is useful in some applications; it's just not
- * of general interest. However, we are not accepting new features for
- * the widget, and it will eventually move out of the GTK+
- * distribution.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_INPUTDIALOG_H__
-#define __GTK_INPUTDIALOG_H__
-
-
-#include <gtk/gtkdialog.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_INPUT_DIALOG (gtk_input_dialog_get_type ())
-#define GTK_INPUT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_INPUT_DIALOG, GtkInputDialog))
-#define GTK_INPUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_INPUT_DIALOG, GtkInputDialogClass))
-#define GTK_IS_INPUT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_INPUT_DIALOG))
-#define GTK_IS_INPUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_INPUT_DIALOG))
-#define GTK_INPUT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_INPUT_DIALOG, GtkInputDialogClass))
-
-
-typedef struct _GtkInputDialog GtkInputDialog;
-typedef struct _GtkInputDialogClass GtkInputDialogClass;
-
-struct _GtkInputDialog
-{
- GtkDialog dialog;
-
- GtkWidget *GSEAL (axis_list);
- GtkWidget *GSEAL (axis_listbox);
- GtkWidget *GSEAL (mode_optionmenu);
-
- GtkWidget *GSEAL (close_button);
- GtkWidget *GSEAL (save_button);
-
- GtkWidget *GSEAL (axis_items[GDK_AXIS_LAST]);
- GdkDevice *GSEAL (current_device);
-
- GtkWidget *GSEAL (keys_list);
- GtkWidget *GSEAL (keys_listbox);
-};
-
-struct _GtkInputDialogClass
-{
- GtkDialogClass parent_class;
-
- void (* enable_device) (GtkInputDialog *inputd,
- GdkDevice *device);
- void (* disable_device) (GtkInputDialog *inputd,
- GdkDevice *device);
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-GType gtk_input_dialog_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_input_dialog_new (void);
-
-G_END_DECLS
-
-#endif /* __GTK_INPUTDIALOG_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkinvisible.h b/gtk/gtkinvisible.h
index 5625f99458..2f38905525 100644
--- a/gtk/gtkinvisible.h
+++ b/gtk/gtkinvisible.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkitem.h b/gtk/gtkitem.h
index 4c3d3aee63..0475805610 100644
--- a/gtk/gtkitem.h
+++ b/gtk/gtkitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkitemfactory.c b/gtk/gtkitemfactory.c
deleted file mode 100644
index 4197866b14..0000000000
--- a/gtk/gtkitemfactory.c
+++ /dev/null
@@ -1,1586 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkItemFactory: Flexible item factory with automatic rc handling
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include <config.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#include "gtkitemfactory.h"
-#include "gtkoptionmenu.h"
-#include "gtkmenubar.h"
-#include "gtkmenu.h"
-#include "gtkmenuitem.h"
-#include "gtkradiomenuitem.h"
-#include "gtkcheckmenuitem.h"
-#include "gtkimagemenuitem.h"
-#include "gtktearoffmenuitem.h"
-#include "gtkaccelmap.h"
-#include "gtkaccellabel.h"
-#include "gdk/gdkkeysyms.h"
-#include "gtkimage.h"
-#include "gtkstock.h"
-#include "gtkiconfactory.h"
-#include "gtkintl.h"
-#include <string.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-
-#include "gtkalias.h"
-
-/* --- defines --- */
-#define ITEM_FACTORY_STRING ((gchar*) item_factory_string)
-#define ITEM_BLOCK_SIZE (128)
-
-
-/* --- structures --- */
-typedef struct _GtkIFCBData GtkIFCBData;
-typedef struct _GtkIFDumpData GtkIFDumpData;
-struct _GtkIFCBData
-{
- GtkItemFactoryCallback func;
- guint callback_type;
- gpointer func_data;
- guint callback_action;
-};
-
-
-/* --- prototypes --- */
-static void gtk_item_factory_destroy (GtkObject *object);
-static void gtk_item_factory_finalize (GObject *object);
-
-
-/* --- static variables --- */
-static const gchar item_factory_string[] = "Gtk-<ItemFactory>";
-static GQuark quark_popup_data = 0;
-static GQuark quark_if_menu_pos = 0;
-static GQuark quark_item_factory = 0;
-static GQuark quark_item_path = 0;
-static GQuark quark_action = 0;
-static GQuark quark_accel_group = 0;
-static GQuark quark_type_item = 0;
-static GQuark quark_type_title = 0;
-static GQuark quark_type_radio_item = 0;
-static GQuark quark_type_check_item = 0;
-static GQuark quark_type_toggle_item = 0;
-static GQuark quark_type_image_item = 0;
-static GQuark quark_type_stock_item = 0;
-static GQuark quark_type_tearoff_item = 0;
-static GQuark quark_type_separator_item = 0;
-static GQuark quark_type_branch = 0;
-static GQuark quark_type_last_branch = 0;
-
-G_DEFINE_TYPE (GtkItemFactory, gtk_item_factory, GTK_TYPE_OBJECT)
-
-/* --- functions --- */
-static void
-gtk_item_factory_class_init (GtkItemFactoryClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (class);
-
- gobject_class->finalize = gtk_item_factory_finalize;
-
- object_class->destroy = gtk_item_factory_destroy;
-
- class->item_ht = g_hash_table_new (g_str_hash, g_str_equal);
-
- quark_popup_data = g_quark_from_static_string ("GtkItemFactory-popup-data");
- quark_if_menu_pos = g_quark_from_static_string ("GtkItemFactory-menu-position");
- quark_item_factory = g_quark_from_static_string ("GtkItemFactory");
- quark_item_path = g_quark_from_static_string ("GtkItemFactory-path");
- quark_action = g_quark_from_static_string ("GtkItemFactory-action");
- quark_accel_group = g_quark_from_static_string ("GtkAccelGroup");
- quark_type_item = g_quark_from_static_string ("<Item>");
- quark_type_title = g_quark_from_static_string ("<Title>");
- quark_type_radio_item = g_quark_from_static_string ("<RadioItem>");
- quark_type_check_item = g_quark_from_static_string ("<CheckItem>");
- quark_type_toggle_item = g_quark_from_static_string ("<ToggleItem>");
- quark_type_image_item = g_quark_from_static_string ("<ImageItem>");
- quark_type_stock_item = g_quark_from_static_string ("<StockItem>");
- quark_type_separator_item = g_quark_from_static_string ("<Separator>");
- quark_type_tearoff_item = g_quark_from_static_string ("<Tearoff>");
- quark_type_branch = g_quark_from_static_string ("<Branch>");
- quark_type_last_branch = g_quark_from_static_string ("<LastBranch>");
-}
-
-static void
-gtk_item_factory_init (GtkItemFactory *ifactory)
-{
- ifactory->path = NULL;
- ifactory->accel_group = NULL;
- ifactory->widget = NULL;
- ifactory->items = NULL;
- ifactory->translate_func = NULL;
- ifactory->translate_data = NULL;
- ifactory->translate_notify = NULL;
-}
-
-/**
- * gtk_item_factory_new:
- * @container_type: the kind of menu to create; can be
- * #GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
- * @path: the factory path of the new item factory, a string of the form
- * <literal>"&lt;name&gt;"</literal>
- * @accel_group: (allow-none): a #GtkAccelGroup to which the accelerators for the
- * menu items will be added, or %NULL to create a new one
- * @returns: a new #GtkItemFactory
- *
- * Creates a new #GtkItemFactory.
- *
- * Beware that the returned object does not have a floating reference.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_new (GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (path != NULL, NULL);
-
- ifactory = g_object_new (GTK_TYPE_ITEM_FACTORY, NULL);
- gtk_item_factory_construct (ifactory, container_type, path, accel_group);
-
- return ifactory;
-}
-
-static void
-gtk_item_factory_callback_marshal (GtkWidget *widget,
- gpointer func_data)
-{
- GtkIFCBData *data;
-
- data = func_data;
-
- if (data->callback_type == 1)
- {
- GtkItemFactoryCallback1 func1 = (GtkItemFactoryCallback1) data->func;
- func1 (data->func_data, data->callback_action, widget);
- }
- else if (data->callback_type == 2)
- {
- GtkItemFactoryCallback2 func2 = (GtkItemFactoryCallback2) data->func;
- func2 (widget, data->func_data, data->callback_action);
- }
-}
-
-static void
-gtk_item_factory_item_remove_widget (GtkWidget *widget,
- GtkItemFactoryItem *item)
-{
- item->widgets = g_slist_remove (item->widgets, widget);
- g_object_set_qdata (G_OBJECT (widget), quark_item_factory, NULL);
- g_object_set_qdata (G_OBJECT (widget), quark_item_path, NULL);
-}
-
-/**
- * gtk_item_factory_add_foreign:
- * @accel_widget: widget to install an accelerator on
- * @full_path: the full path for the @accel_widget
- * @accel_group: the accelerator group to install the accelerator in
- * @keyval: key value of the accelerator
- * @modifiers: modifier combination of the accelerator
- *
- * Installs an accelerator for @accel_widget in @accel_group, that causes
- * the ::activate signal to be emitted if the accelerator is activated.
- *
- * This function can be used to make widgets participate in the accel
- * saving/restoring functionality provided by gtk_accel_map_save() and
- * gtk_accel_map_load(), even if they haven't been created by an item
- * factory.
- *
- * Deprecated: 2.4: The recommended API for this purpose are the functions
- * gtk_menu_item_set_accel_path() and gtk_widget_set_accel_path(); don't
- * use gtk_item_factory_add_foreign() in new code, since it is likely to
- * be removed in the future.
- */
-void
-gtk_item_factory_add_foreign (GtkWidget *accel_widget,
- const gchar *full_path,
- GtkAccelGroup *accel_group,
- guint keyval,
- GdkModifierType modifiers)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_if_fail (GTK_IS_WIDGET (accel_widget));
- g_return_if_fail (full_path != NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- keyval = keyval != GDK_VoidSymbol ? keyval : 0;
-
- item = g_hash_table_lookup (class->item_ht, full_path);
- if (!item)
- {
- item = g_slice_new (GtkItemFactoryItem);
-
- item->path = g_strdup (full_path);
- item->widgets = NULL;
-
- g_hash_table_insert (class->item_ht, item->path, item);
- }
-
- item->widgets = g_slist_prepend (item->widgets, accel_widget);
- g_signal_connect (accel_widget,
- "destroy",
- G_CALLBACK (gtk_item_factory_item_remove_widget),
- item);
-
- /* set the item path for the widget
- */
- g_object_set_qdata (G_OBJECT (accel_widget), quark_item_path, item->path);
- gtk_widget_set_name (accel_widget, item->path);
- if (accel_group)
- {
- g_object_ref (accel_group);
- g_object_set_qdata_full (G_OBJECT (accel_widget),
- quark_accel_group,
- accel_group,
- g_object_unref);
- }
- else
- g_object_set_qdata (G_OBJECT (accel_widget), quark_accel_group, NULL);
-
- /* install defined accelerators
- */
- if (g_signal_lookup ("activate", G_TYPE_FROM_INSTANCE (accel_widget)))
- {
- if (accel_group)
- {
- gtk_accel_map_add_entry (full_path, keyval, modifiers);
- gtk_widget_set_accel_path (accel_widget, full_path, accel_group);
- }
- }
-}
-
-static void
-ifactory_cb_data_free (gpointer mem)
-{
- g_slice_free (GtkIFCBData, mem);
-}
-
-static void
-gtk_item_factory_add_item (GtkItemFactory *ifactory,
- const gchar *path,
- const gchar *accelerator,
- GtkItemFactoryCallback callback,
- guint callback_action,
- gpointer callback_data,
- guint callback_type,
- gchar *item_type,
- GtkWidget *widget)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
- gchar *fpath;
- guint keyval;
- GdkModifierType mods;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (item_type != NULL);
-
- class = GTK_ITEM_FACTORY_GET_CLASS (ifactory);
-
- /* set accelerator group on menu widgets
- */
- if (GTK_IS_MENU (widget))
- gtk_menu_set_accel_group ((GtkMenu*) widget, ifactory->accel_group);
-
- /* connect callback if necessary
- */
- if (callback)
- {
- GtkIFCBData *data;
-
- data = g_slice_new (GtkIFCBData);
- data->func = callback;
- data->callback_type = callback_type;
- data->func_data = callback_data;
- data->callback_action = callback_action;
-
- g_object_weak_ref (G_OBJECT (widget),
- (GWeakNotify) ifactory_cb_data_free,
- data);
- g_signal_connect (widget,
- "activate",
- G_CALLBACK (gtk_item_factory_callback_marshal),
- data);
- }
-
- /* link the widget into its item-entry
- * and keep back pointer on both the item factory and the widget
- */
- g_object_set_qdata (G_OBJECT (widget), quark_action, GUINT_TO_POINTER (callback_action));
- g_object_set_qdata (G_OBJECT (widget), quark_item_factory, ifactory);
- if (accelerator)
- gtk_accelerator_parse (accelerator, &keyval, &mods);
- else
- {
- keyval = 0;
- mods = 0;
- }
- fpath = g_strconcat (ifactory->path, path, NULL);
- gtk_item_factory_add_foreign (widget, fpath, ifactory->accel_group, keyval, mods);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
-
- g_return_if_fail (item != NULL);
-
- if (!g_slist_find (ifactory->items, item))
- ifactory->items = g_slist_prepend (ifactory->items, item);
-}
-
-/**
- * gtk_item_factory_construct:
- * @ifactory: a #GtkItemFactory
- * @container_type: the kind of menu to create; can be
- * #GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
- * @path: the factory path of @ifactory, a string of the form
- * <literal>"&lt;name&gt;"</literal>
- * @accel_group: a #GtkAccelGroup to which the accelerators for the
- * menu items will be added, or %NULL to create a new one
- *
- * Initializes an item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_construct (GtkItemFactory *ifactory,
- GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group)
-{
- guint len;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (ifactory->accel_group == NULL);
- g_return_if_fail (path != NULL);
- if (!g_type_is_a (container_type, GTK_TYPE_OPTION_MENU))
- g_return_if_fail (g_type_is_a (container_type, GTK_TYPE_MENU_SHELL));
-
- len = strlen (path);
-
- if (path[0] != '<' && path[len - 1] != '>')
- {
- g_warning ("GtkItemFactory: invalid factory path `%s'", path);
- return;
- }
-
- if (accel_group)
- {
- ifactory->accel_group = accel_group;
- g_object_ref (ifactory->accel_group);
- }
- else
- ifactory->accel_group = gtk_accel_group_new ();
-
- ifactory->path = g_strdup (path);
- ifactory->widget = g_object_connect (g_object_new (container_type, NULL),
- "signal::destroy", gtk_widget_destroyed, &ifactory->widget,
- NULL);
- g_object_ref_sink (ifactory);
-
- gtk_item_factory_add_item (ifactory,
- "", NULL,
- NULL, 0, NULL, 0,
- ITEM_FACTORY_STRING,
- ifactory->widget);
-}
-
-/**
- * gtk_item_factory_from_path:
- * @path: a string starting with a factory path of the form
- * <literal>"&lt;name&gt;"</literal>
- * @returns: (allow-none): the #GtkItemFactory created for the given factory path, or %NULL
- *
- * Finds an item factory which has been constructed using the
- * <literal>"&lt;name&gt;"</literal> prefix of @path as the @path argument
- * for gtk_item_factory_new().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_from_path (const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
- gchar *fname;
- guint i;
-
- g_return_val_if_fail (path != NULL, NULL);
- g_return_val_if_fail (path[0] == '<', NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- i = 0;
- while (path[i] && path[i] != '>')
- i++;
- if (path[i] != '>')
- {
- g_warning ("gtk_item_factory_from_path(): invalid factory path \"%s\"",
- path);
- return NULL;
- }
- fname = g_new (gchar, i + 2);
- g_memmove (fname, path, i + 1);
- fname[i + 1] = 0;
-
- item = g_hash_table_lookup (class->item_ht, fname);
-
- g_free (fname);
-
- if (item && item->widgets)
- return gtk_item_factory_from_widget (item->widgets->data);
-
- return NULL;
-}
-
-static void
-gtk_item_factory_destroy (GtkObject *object)
-{
- GtkItemFactory *ifactory = (GtkItemFactory*) object;
- GSList *slist;
-
- if (ifactory->widget)
- {
- GtkObject *dobj;
-
- dobj = GTK_OBJECT (ifactory->widget);
-
- g_object_ref_sink (dobj);
- gtk_object_destroy (dobj);
- g_object_unref (dobj);
-
- ifactory->widget = NULL;
- }
-
- for (slist = ifactory->items; slist; slist = slist->next)
- {
- GtkItemFactoryItem *item = slist->data;
- GSList *link;
-
- for (link = item->widgets; link; link = link->next)
- if (g_object_get_qdata (link->data, quark_item_factory) == ifactory)
- g_object_set_qdata (link->data, quark_item_factory, NULL);
- }
- g_slist_free (ifactory->items);
- ifactory->items = NULL;
-
- GTK_OBJECT_CLASS (gtk_item_factory_parent_class)->destroy (object);
-}
-
-static void
-gtk_item_factory_finalize (GObject *object)
-{
- GtkItemFactory *ifactory = GTK_ITEM_FACTORY (object);
-
- if (ifactory->accel_group)
- g_object_unref (ifactory->accel_group);
-
- g_free (ifactory->path);
- g_assert (ifactory->widget == NULL);
-
- if (ifactory->translate_notify)
- ifactory->translate_notify (ifactory->translate_data);
-
- G_OBJECT_CLASS (gtk_item_factory_parent_class)->finalize (object);
-}
-
-/**
- * gtk_item_factory_from_widget:
- * @widget: a widget
- * @returns: (allow-none): the item factory from which @widget was created, or %NULL
- *
- * Obtains the item factory from which a widget was created.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_from_widget (GtkWidget *widget)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- ifactory = g_object_get_qdata (G_OBJECT (widget), quark_item_factory);
-
- if (ifactory == NULL && GTK_IS_MENU_ITEM (widget) &&
- GTK_MENU_ITEM (widget)->submenu != NULL)
- {
- GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
- ifactory = g_object_get_qdata (G_OBJECT (menu), quark_item_factory);
- }
-
- return ifactory;
-}
-
-/**
- * gtk_item_factory_path_from_widget:
- * @widget: a widget
- * @returns: the full path to @widget if it has been created by an item
- * factory, %NULL otherwise. This value is owned by GTK+ and must not be
- * modified or freed.
- *
- * If @widget has been created by an item factory, returns the full path
- * to it. (The full path of a widget is the concatenation of the factory
- * path specified in gtk_item_factory_new() with the path specified in the
- * #GtkItemFactoryEntry from which the widget was created.)
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-G_CONST_RETURN gchar*
-gtk_item_factory_path_from_widget (GtkWidget *widget)
-{
- gchar* path;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- path = g_object_get_qdata (G_OBJECT (widget), quark_item_path);
-
- if (path == NULL && GTK_IS_MENU_ITEM (widget) &&
- GTK_MENU_ITEM (widget)->submenu != NULL)
- {
- GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
- path = g_object_get_qdata (G_OBJECT (menu), quark_item_path);
- }
-
- return path;
-}
-
-/**
- * gtk_item_factory_create_items:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s whose @callback members
- * must by of type #GtkItemFactoryCallback1
- * @callback_data: data passed to the callback functions of all entries
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_items (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data)
-{
- gtk_item_factory_create_items_ac (ifactory, n_entries, entries, callback_data, 1);
-}
-
-/**
- * gtk_item_factory_create_items_ac:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s
- * @callback_data: data passed to the callback functions of all entries
- * @callback_type: 1 if the callback functions in @entries are of type
- * #GtkItemFactoryCallback1, 2 if they are of type #GtkItemFactoryCallback2
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_items_ac (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data,
- guint callback_type)
-{
- guint i;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (callback_type >= 1 && callback_type <= 2);
-
- if (n_entries == 0)
- return;
-
- g_return_if_fail (entries != NULL);
-
- for (i = 0; i < n_entries; i++)
- gtk_item_factory_create_item (ifactory, entries + i, callback_data, callback_type);
-}
-
-/**
- * gtk_item_factory_get_widget:
- * @ifactory: a #GtkItemFactory
- * @path: the path to the widget
- * @returns: (allow-none): the widget for the given path, or %NULL if @path doesn't lead
- * to a widget
- *
- * Obtains the widget which corresponds to @path.
- *
- * If the widget corresponding to @path is a menu item which opens a
- * submenu, then the submenu is returned. If you are interested in the menu
- * item, use gtk_item_factory_get_item() instead.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_widget (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
- g_return_val_if_fail (path != NULL, NULL);
-
- class = GTK_ITEM_FACTORY_GET_CLASS (ifactory);
-
- if (path[0] == '<')
- item = g_hash_table_lookup (class->item_ht, (gpointer) path);
- else
- {
- gchar *fpath;
-
- fpath = g_strconcat (ifactory->path, path, NULL);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
- }
-
- if (item)
- {
- GSList *slist;
-
- for (slist = item->widgets; slist; slist = slist->next)
- {
- if (gtk_item_factory_from_widget (slist->data) == ifactory)
- return slist->data;
- }
- }
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_get_widget_by_action:
- * @ifactory: a #GtkItemFactory
- * @action: an action as specified in the @callback_action field
- * of #GtkItemFactoryEntry
- * @returns: (allow-none): the widget which corresponds to the given action, or %NULL
- * if no widget was found
- *
- * Obtains the widget which was constructed from the #GtkItemFactoryEntry
- * with the given @action.
- *
- * If there are multiple items with the same action, the result is
- * undefined.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_widget_by_action (GtkItemFactory *ifactory,
- guint action)
-{
- GSList *slist;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- for (slist = ifactory->items; slist; slist = slist->next)
- {
- GtkItemFactoryItem *item = slist->data;
- GSList *link;
-
- for (link = item->widgets; link; link = link->next)
- if (g_object_get_qdata (link->data, quark_item_factory) == ifactory &&
- g_object_get_qdata (link->data, quark_action) == GUINT_TO_POINTER (action))
- return link->data;
- }
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_get_item:
- * @ifactory: a #GtkItemFactory
- * @path: the path to the menu item
- * @returns: (allow-none): the menu item for the given path, or %NULL if @path doesn't
- * lead to a menu item
- *
- * Obtains the menu item which corresponds to @path.
- *
- * If the widget corresponding to @path is a menu item which opens a
- * submenu, then the item is returned. If you are interested in the submenu,
- * use gtk_item_factory_get_widget() instead.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_item (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
- g_return_val_if_fail (path != NULL, NULL);
-
- widget = gtk_item_factory_get_widget (ifactory, path);
-
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- return GTK_IS_ITEM (widget) ? widget : NULL;
-}
-
-
-/**
- * gtk_item_factory_get_item_by_action:
- * @ifactory: a #GtkItemFactory
- * @action: an action as specified in the @callback_action field
- * of #GtkItemFactoryEntry
- * @returns: (allow-none): the menu item which corresponds to the given action, or %NULL
- * if no menu item was found
- *
- * Obtains the menu item which was constructed from the first
- * #GtkItemFactoryEntry with the given @action.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_item_by_action (GtkItemFactory *ifactory,
- guint action)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- widget = gtk_item_factory_get_widget_by_action (ifactory, action);
-
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- return GTK_IS_ITEM (widget) ? widget : NULL;
-}
-
-static char *
-item_factory_find_separator_r (char *path)
-{
- gchar *result = NULL;
- gboolean escaped = FALSE;
-
- while (*path)
- {
- if (escaped)
- escaped = FALSE;
- else
- {
- if (*path == '\\')
- escaped = TRUE;
- else if (*path == '/')
- result = path;
- }
-
- path++;
- }
-
- return result;
-}
-
-static char *
-item_factory_unescape_label (const char *label)
-{
- char *new = g_malloc (strlen (label) + 1);
- char *p = new;
- gboolean escaped = FALSE;
-
- while (*label)
- {
- if (escaped)
- {
- *p++ = *label;
- escaped = FALSE;
- }
- else
- {
- if (*label == '\\')
- escaped = TRUE;
- else
- *p++ = *label;
- }
-
- label++;
- }
-
- *p = '\0';
-
- return new;
-}
-
-static gboolean
-gtk_item_factory_parse_path (GtkItemFactory *ifactory,
- gchar *str,
- gchar **path,
- gchar **parent_path,
- gchar **item)
-{
- gchar *translation;
- gchar *p, *q;
-
- *path = g_strdup (str);
-
- p = q = *path;
- while (*p)
- {
- if (*p == '_')
- {
- if (p[1] == '_')
- {
- p++;
- *q++ = '_';
- }
- }
- else
- {
- *q++ = *p;
- }
- p++;
- }
- *q = 0;
-
- *parent_path = g_strdup (*path);
- p = item_factory_find_separator_r (*parent_path);
- if (!p)
- {
- g_warning ("GtkItemFactory: invalid entry path `%s'", str);
- return FALSE;
- }
- *p = 0;
-
- if (ifactory->translate_func)
- translation = ifactory->translate_func (str, ifactory->translate_data);
- else
- translation = str;
-
- p = item_factory_find_separator_r (translation);
- if (p)
- p++;
- else
- p = translation;
-
- *item = item_factory_unescape_label (p);
-
- return TRUE;
-}
-
-/**
- * gtk_item_factory_create_item:
- * @ifactory: a #GtkItemFactory
- * @entry: the #GtkItemFactoryEntry to create an item for
- * @callback_data: data passed to the callback function of @entry
- * @callback_type: 1 if the callback function of @entry is of type
- * #GtkItemFactoryCallback1, 2 if it is of type #GtkItemFactoryCallback2
- *
- * Creates an item for @entry.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_item (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry,
- gpointer callback_data,
- guint callback_type)
-{
- GtkOptionMenu *option_menu = NULL;
- GtkWidget *parent;
- GtkWidget *widget;
- GtkWidget *image;
- GSList *radio_group;
- gchar *name;
- gchar *parent_path;
- gchar *path;
- gchar *accelerator;
- guint type_id;
- GType type;
- gchar *item_type_path;
- GtkStockItem stock_item;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (entry != NULL);
- g_return_if_fail (entry->path != NULL);
- g_return_if_fail (entry->path[0] == '/');
- g_return_if_fail (callback_type >= 1 && callback_type <= 2);
-
- if (!entry->item_type ||
- entry->item_type[0] == 0)
- {
- item_type_path = "<Item>";
- type_id = quark_type_item;
- }
- else
- {
- item_type_path = entry->item_type;
- type_id = g_quark_try_string (item_type_path);
- }
-
- radio_group = NULL;
- if (type_id == quark_type_item)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_title)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_radio_item)
- type = GTK_TYPE_RADIO_MENU_ITEM;
- else if (type_id == quark_type_check_item)
- type = GTK_TYPE_CHECK_MENU_ITEM;
- else if (type_id == quark_type_image_item)
- type = GTK_TYPE_IMAGE_MENU_ITEM;
- else if (type_id == quark_type_stock_item)
- type = GTK_TYPE_IMAGE_MENU_ITEM;
- else if (type_id == quark_type_tearoff_item)
- type = GTK_TYPE_TEAROFF_MENU_ITEM;
- else if (type_id == quark_type_toggle_item)
- type = GTK_TYPE_CHECK_MENU_ITEM;
- else if (type_id == quark_type_separator_item)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_branch)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_last_branch)
- type = GTK_TYPE_MENU_ITEM;
- else
- {
- GtkWidget *radio_link;
-
- radio_link = gtk_item_factory_get_widget (ifactory, item_type_path);
- if (radio_link && GTK_IS_RADIO_MENU_ITEM (radio_link))
- {
- type = GTK_TYPE_RADIO_MENU_ITEM;
- radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (radio_link));
- }
- else
- {
- g_warning ("GtkItemFactory: entry path `%s' has invalid type `%s'",
- entry->path,
- item_type_path);
- return;
- }
- }
-
- if (!gtk_item_factory_parse_path (ifactory, entry->path,
- &path, &parent_path, &name))
- return;
-
- parent = gtk_item_factory_get_widget (ifactory, parent_path);
- if (!parent)
- {
- GtkItemFactoryEntry pentry;
- gchar *ppath, *p;
-
- ppath = g_strdup (entry->path);
- p = item_factory_find_separator_r (ppath);
- g_return_if_fail (p != NULL);
- *p = 0;
- pentry.path = ppath;
- pentry.accelerator = NULL;
- pentry.callback = NULL;
- pentry.callback_action = 0;
- pentry.item_type = "<Branch>";
-
- gtk_item_factory_create_item (ifactory, &pentry, NULL, 1);
- g_free (ppath);
-
- parent = gtk_item_factory_get_widget (ifactory, parent_path);
- g_return_if_fail (parent != NULL);
- }
-
- if (GTK_IS_OPTION_MENU (parent))
- {
- option_menu = GTK_OPTION_MENU (parent);
- if (!option_menu->menu)
- {
- GtkWidget *menu = g_object_new (GTK_TYPE_MENU, NULL);
- gchar *p = g_strconcat (ifactory->path, parent_path, NULL);
-
- gtk_menu_set_accel_path (GTK_MENU (menu), p);
- g_free (p);
- gtk_option_menu_set_menu (option_menu, menu);
- }
- parent = option_menu->menu;
- }
- g_free (parent_path);
-
- g_return_if_fail (GTK_IS_CONTAINER (parent));
-
- accelerator = entry->accelerator;
-
- widget = g_object_new (type,
- "visible", TRUE,
- "sensitive", (type_id != quark_type_separator_item &&
- type_id != quark_type_title),
- "parent", parent,
- NULL);
- if (option_menu && !option_menu->menu_item)
- gtk_option_menu_set_history (option_menu, 0);
-
- if (GTK_IS_RADIO_MENU_ITEM (widget))
- gtk_radio_menu_item_set_group (GTK_RADIO_MENU_ITEM (widget), radio_group);
- if (type_id == quark_type_image_item)
- {
- GdkPixbuf *pixbuf = NULL;
- image = NULL;
- if (entry->extra_data)
- {
- pixbuf = gdk_pixbuf_new_from_inline (-1,
- entry->extra_data,
- FALSE,
- NULL);
- if (pixbuf)
- image = gtk_image_new_from_pixbuf (pixbuf);
- }
- if (image)
- {
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (widget), image);
- gtk_widget_show (image);
- }
- if (pixbuf)
- g_object_unref (pixbuf);
- }
- if (type_id == quark_type_stock_item)
- {
- image = gtk_image_new_from_stock (entry->extra_data, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (widget), image);
- gtk_widget_show (image);
-
- if (gtk_stock_lookup (entry->extra_data, &stock_item))
- {
- if (!accelerator)
- accelerator = gtk_accelerator_name (stock_item.keyval, stock_item.modifier);
- }
- }
-
- /* install underline accelerators for this item
- */
- if (type_id != quark_type_separator_item &&
- type_id != quark_type_tearoff_item &&
- *name)
- {
- GtkWidget *label;
-
- label = g_object_new (GTK_TYPE_ACCEL_LABEL,
- "visible", TRUE,
- "parent", widget,
- "accel-widget", widget,
- "xalign", 0.0,
- NULL);
- gtk_label_set_text_with_mnemonic (GTK_LABEL (label), name);
- }
-
- g_free (name);
-
- if (type_id == quark_type_branch ||
- type_id == quark_type_last_branch)
- {
- gchar *p;
-
- if (entry->callback)
- g_warning ("gtk_item_factory_create_item(): Can't specify a callback on a branch: \"%s\"",
- entry->path);
- if (type_id == quark_type_last_branch)
- gtk_menu_item_set_right_justified (GTK_MENU_ITEM (widget), TRUE);
-
- parent = widget;
- widget = g_object_new (GTK_TYPE_MENU, NULL);
- p = g_strconcat (ifactory->path, path, NULL);
- gtk_menu_set_accel_path (GTK_MENU (widget), p);
- g_free (p);
-
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (parent), widget);
- }
-
- gtk_item_factory_add_item (ifactory,
- path, accelerator,
- (type_id == quark_type_branch ||
- type_id == quark_type_last_branch) ?
- (GtkItemFactoryCallback) NULL : entry->callback,
- entry->callback_action, callback_data,
- callback_type,
- item_type_path,
- widget);
- if (accelerator != entry->accelerator)
- g_free (accelerator);
- g_free (path);
-}
-
-/**
- * gtk_item_factory_create_menu_entries:
- * @n_entries: the length of @entries
- * @entries: an array of #GtkMenuEntry<!-- -->s
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_menu_entries (guint n_entries,
- GtkMenuEntry *entries)
-{
- static GPatternSpec *pspec_separator = NULL;
- static GPatternSpec *pspec_check = NULL;
- guint i;
-
- if (!n_entries)
- return;
- g_return_if_fail (entries != NULL);
-
- if (!pspec_separator)
- {
- pspec_separator = g_pattern_spec_new ("*<separator>*");
- pspec_check = g_pattern_spec_new ("*<check>*");
- }
-
- for (i = 0; i < n_entries; i++)
- {
- GtkItemFactory *ifactory;
- GtkItemFactoryEntry entry;
- gchar *path;
- gchar *cpath;
-
- path = entries[i].path;
- ifactory = gtk_item_factory_from_path (path);
- if (!ifactory)
- {
- g_warning ("gtk_item_factory_create_menu_entries(): "
- "entry[%u] refers to unknown item factory: \"%s\"",
- i, entries[i].path);
- continue;
- }
-
- while (*path != '>')
- path++;
- path++;
- cpath = NULL;
-
- entry.path = path;
- entry.accelerator = entries[i].accelerator;
- entry.callback = entries[i].callback;
- entry.callback_action = 0;
- if (g_pattern_match_string (pspec_separator, path))
- entry.item_type = "<Separator>";
- else if (!g_pattern_match_string (pspec_check, path))
- entry.item_type = NULL;
- else
- {
- gboolean in_brace = FALSE;
- gchar *c;
-
- cpath = g_new (gchar, strlen (path));
- c = cpath;
- while (*path != 0)
- {
- if (*path == '<')
- in_brace = TRUE;
- else if (*path == '>')
- in_brace = FALSE;
- else if (!in_brace)
- *(c++) = *path;
- path++;
- }
- *c = 0;
- entry.item_type = "<ToggleItem>";
- entry.path = cpath;
- }
-
- gtk_item_factory_create_item (ifactory, &entry, entries[i].callback_data, 2);
- entries[i].widget = gtk_item_factory_get_widget (ifactory, entries[i].path);
- g_free (cpath);
- }
-}
-
-/**
- * gtk_item_factories_path_delete:
- * @ifactory_path: a factory path to prepend to @path. May be %NULL if @path
- * starts with a factory path
- * @path: a path
- *
- * Deletes all widgets constructed from the specified path.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factories_path_delete (const gchar *ifactory_path,
- const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_if_fail (path != NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- if (path[0] == '<')
- item = g_hash_table_lookup (class->item_ht, (gpointer) path);
- else
- {
- gchar *fpath;
-
- g_return_if_fail (ifactory_path != NULL);
-
- fpath = g_strconcat (ifactory_path, path, NULL);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
- }
-
- if (item)
- {
- GSList *widget_list;
- GSList *slist;
-
- widget_list = NULL;
- for (slist = item->widgets; slist; slist = slist->next)
- {
- GtkWidget *widget;
-
- widget = slist->data;
- widget_list = g_slist_prepend (widget_list, widget);
- g_object_ref (widget);
- }
-
- for (slist = widget_list; slist; slist = slist->next)
- {
- GtkWidget *widget;
-
- widget = slist->data;
- gtk_widget_destroy (widget);
- g_object_unref (widget);
- }
- g_slist_free (widget_list);
- }
-}
-
-/**
- * gtk_item_factory_delete_item:
- * @ifactory: a #GtkItemFactory
- * @path: a path
- *
- * Deletes the menu item which was created for @path by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_item (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (path != NULL);
-
- widget = gtk_item_factory_get_widget (ifactory, path);
-
- if (widget)
- {
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- gtk_widget_destroy (widget);
- }
-}
-
-/**
- * gtk_item_factory_delete_entry:
- * @ifactory: a #GtkItemFactory
- * @entry: a #GtkItemFactoryEntry
- *
- * Deletes the menu item which was created from @entry by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_entry (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry)
-{
- gchar *path;
- gchar *parent_path;
- gchar *name;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (entry != NULL);
- g_return_if_fail (entry->path != NULL);
- g_return_if_fail (entry->path[0] == '/');
-
- if (!gtk_item_factory_parse_path (ifactory, entry->path,
- &path, &parent_path, &name))
- return;
-
- gtk_item_factory_delete_item (ifactory, path);
-
- g_free (path);
- g_free (parent_path);
- g_free (name);
-}
-
-/**
- * gtk_item_factory_delete_entries:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s
- *
- * Deletes the menu items which were created from the @entries by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_entries (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries)
-{
- guint i;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- if (n_entries > 0)
- g_return_if_fail (entries != NULL);
-
- for (i = 0; i < n_entries; i++)
- gtk_item_factory_delete_entry (ifactory, entries + i);
-}
-
-typedef struct
-{
- guint x;
- guint y;
-} MenuPos;
-
-static void
-gtk_item_factory_menu_pos (GtkMenu *menu,
- gint *x,
- gint *y,
- gboolean *push_in,
- gpointer func_data)
-{
- MenuPos *mpos = func_data;
-
- *x = mpos->x;
- *y = mpos->y;
-}
-
-/**
- * gtk_item_factory_popup_data_from_widget:
- * @widget: a widget
- * @returns: @popup_data associated with the item factory from
- * which @widget was created, or %NULL if @widget wasn't created
- * by an item factory
- *
- * Obtains the @popup_data which was passed to
- * gtk_item_factory_popup_with_data(). This data is available until the menu
- * is popped down again.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-gpointer
-gtk_item_factory_popup_data_from_widget (GtkWidget *widget)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- ifactory = gtk_item_factory_from_widget (widget);
- if (ifactory)
- return g_object_get_qdata (G_OBJECT (ifactory), quark_popup_data);
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_popup_data:
- * @ifactory: a #GtkItemFactory
- * @returns: @popup_data associated with @ifactory
- *
- * Obtains the @popup_data which was passed to
- * gtk_item_factory_popup_with_data(). This data is available until the menu
- * is popped down again.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-gpointer
-gtk_item_factory_popup_data (GtkItemFactory *ifactory)
-{
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- return g_object_get_qdata (G_OBJECT (ifactory), quark_popup_data);
-}
-
-static void
-ifactory_delete_popup_data (GtkObject *object,
- GtkItemFactory *ifactory)
-{
- g_signal_handlers_disconnect_by_func (object,
- ifactory_delete_popup_data,
- ifactory);
- g_object_set_qdata (G_OBJECT (ifactory), quark_popup_data, NULL);
-}
-
-/**
- * gtk_item_factory_popup:
- * @ifactory: a #GtkItemFactory of type #GTK_TYPE_MENU (see gtk_item_factory_new())
- * @x: the x position
- * @y: the y position
- * @mouse_button: the mouse button which was pressed to initiate the popup
- * @time_: the time at which the activation event occurred
- *
- * Pops up the menu constructed from the item factory at (@x, @y).
- *
- * The @mouse_button parameter should be the mouse button pressed to initiate
- * the menu popup. If the menu popup was initiated by something other than
- * a mouse button press, such as a mouse button release or a keypress,
- * @mouse_button should be 0.
- *
- * The @time_ parameter should be the time stamp of the event that
- * initiated the popup. If such an event is not available, use
- * gtk_get_current_event_time() instead.
- *
- * The operation of the @mouse_button and the @time_ parameter is the same
- * as the @button and @activation_time parameters for gtk_menu_popup().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_popup (GtkItemFactory *ifactory,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time)
-{
- gtk_item_factory_popup_with_data (ifactory, NULL, NULL, x, y, mouse_button, time);
-}
-
-/**
- * gtk_item_factory_popup_with_data:
- * @ifactory: a #GtkItemFactory of type #GTK_TYPE_MENU (see gtk_item_factory_new())
- * @popup_data: data available for callbacks while the menu is posted
- * @destroy: a #GDestroyNotify function to be called on @popup_data when
- * the menu is unposted
- * @x: the x position
- * @y: the y position
- * @mouse_button: the mouse button which was pressed to initiate the popup
- * @time_: the time at which the activation event occurred
- *
- * Pops up the menu constructed from the item factory at (@x, @y). Callbacks
- * can access the @popup_data while the menu is posted via
- * gtk_item_factory_popup_data() and gtk_item_factory_popup_data_from_widget().
- *
- * The @mouse_button parameter should be the mouse button pressed to initiate
- * the menu popup. If the menu popup was initiated by something other than
- * a mouse button press, such as a mouse button release or a keypress,
- * @mouse_button should be 0.
- *
- * The @time_ parameter should be the time stamp of the event that
- * initiated the popup. If such an event is not available, use
- * gtk_get_current_event_time() instead.
- *
- * The operation of the @mouse_button and the @time_ parameters is the same
- * as the @button and @activation_time parameters for gtk_menu_popup().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_popup_with_data (GtkItemFactory *ifactory,
- gpointer popup_data,
- GDestroyNotify destroy,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time)
-{
- MenuPos *mpos;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (GTK_IS_MENU (ifactory->widget));
-
- mpos = g_object_get_qdata (G_OBJECT (ifactory->widget), quark_if_menu_pos);
-
- if (!mpos)
- {
- mpos = g_new0 (MenuPos, 1);
- g_object_set_qdata_full (G_OBJECT (ifactory->widget),
- quark_if_menu_pos,
- mpos,
- g_free);
- }
-
- mpos->x = x;
- mpos->y = y;
-
- if (popup_data != NULL)
- {
- g_object_set_qdata_full (G_OBJECT (ifactory),
- quark_popup_data,
- popup_data,
- destroy);
- g_signal_connect (ifactory->widget,
- "selection-done",
- G_CALLBACK (ifactory_delete_popup_data),
- ifactory);
- }
-
- gtk_menu_popup (GTK_MENU (ifactory->widget),
- NULL, NULL,
- gtk_item_factory_menu_pos, mpos,
- mouse_button, time);
-}
-
-/**
- * gtk_item_factory_set_translate_func:
- * @ifactory: a #GtkItemFactory
- * @func: the #GtkTranslateFunc function to be used to translate path elements
- * @data: data to pass to @func and @notify
- * @notify: a #GDestroyNotify function to be called when @ifactory is
- * destroyed and when the translation function is changed again
- *
- * Sets a function to be used for translating the path elements before they
- * are displayed.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_set_translate_func (GtkItemFactory *ifactory,
- GtkTranslateFunc func,
- gpointer data,
- GDestroyNotify notify)
-{
- g_return_if_fail (ifactory != NULL);
-
- if (ifactory->translate_notify)
- ifactory->translate_notify (ifactory->translate_data);
-
- ifactory->translate_func = func;
- ifactory->translate_data = data;
- ifactory->translate_notify = notify;
-}
-
-#define __GTK_ITEM_FACTORY_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkitemfactory.h b/gtk/gtkitemfactory.h
deleted file mode 100644
index 5c57b8032e..0000000000
--- a/gtk/gtkitemfactory.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkItemFactory: Flexible item factory with automatic rc handling
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_ITEM_FACTORY_H__
-#define __GTK_ITEM_FACTORY_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-typedef void (*GtkPrintFunc) (gpointer func_data,
- const gchar *str);
-/* We use () here to mean unspecified arguments. This is deprecated
- * as of C99, but we can't change it without breaking compatibility.
- * (Note that if we are included from a C++ program () will mean
- * (void) so an explicit cast will be needed.)
- */
-typedef void (*GtkItemFactoryCallback) ();
-typedef void (*GtkItemFactoryCallback1) (gpointer callback_data,
- guint callback_action,
- GtkWidget *widget);
-
-#define GTK_TYPE_ITEM_FACTORY (gtk_item_factory_get_type ())
-#define GTK_ITEM_FACTORY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_ITEM_FACTORY, GtkItemFactory))
-#define GTK_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ITEM_FACTORY, GtkItemFactoryClass))
-#define GTK_IS_ITEM_FACTORY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_ITEM_FACTORY))
-#define GTK_IS_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ITEM_FACTORY))
-#define GTK_ITEM_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ITEM_FACTORY, GtkItemFactoryClass))
-
-
-typedef struct _GtkItemFactory GtkItemFactory;
-typedef struct _GtkItemFactoryClass GtkItemFactoryClass;
-typedef struct _GtkItemFactoryEntry GtkItemFactoryEntry;
-typedef struct _GtkItemFactoryItem GtkItemFactoryItem;
-
-struct _GtkItemFactory
-{
- GtkObject object;
-
- gchar *path;
- GtkAccelGroup *accel_group;
- GtkWidget *widget;
- GSList *items;
-
- GtkTranslateFunc translate_func;
- gpointer translate_data;
- GDestroyNotify translate_notify;
-};
-
-struct _GtkItemFactoryClass
-{
- GtkObjectClass object_class;
-
- GHashTable *item_ht;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-struct _GtkItemFactoryEntry
-{
- gchar *path;
- gchar *accelerator;
-
- GtkItemFactoryCallback callback;
- guint callback_action;
-
- /* possible values:
- * NULL -> "<Item>"
- * "" -> "<Item>"
- * "<Title>" -> create a title item
- * "<Item>" -> create a simple item
- * "<ImageItem>" -> create an item holding an image
- * "<StockItem>" -> create an item holding a stock image
- * "<CheckItem>" -> create a check item
- * "<ToggleItem>" -> create a toggle item
- * "<RadioItem>" -> create a radio item
- * <path> -> path of a radio item to link against
- * "<Separator>" -> create a separator
- * "<Tearoff>" -> create a tearoff separator
- * "<Branch>" -> create an item to hold sub items
- * "<LastBranch>" -> create a right justified item to hold sub items
- */
- gchar *item_type;
-
- /* Extra data for some item types:
- * ImageItem -> pointer to inlined pixbuf stream
- * StockItem -> name of stock item
- */
- gconstpointer extra_data;
-};
-
-struct _GtkItemFactoryItem
-{
- gchar *path;
- GSList *widgets;
-};
-
-
-GType gtk_item_factory_get_type (void) G_GNUC_CONST;
-
-/* `container_type' must be of GTK_TYPE_MENU_BAR, GTK_TYPE_MENU,
- * or GTK_TYPE_OPTION_MENU.
- */
-GtkItemFactory* gtk_item_factory_new (GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group);
-void gtk_item_factory_construct (GtkItemFactory *ifactory,
- GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group);
-
-/* These functions operate on GtkItemFactoryClass basis.
- */
-void gtk_item_factory_add_foreign (GtkWidget *accel_widget,
- const gchar *full_path,
- GtkAccelGroup *accel_group,
- guint keyval,
- GdkModifierType modifiers);
-
-GtkItemFactory* gtk_item_factory_from_widget (GtkWidget *widget);
-G_CONST_RETURN gchar* gtk_item_factory_path_from_widget (GtkWidget *widget);
-
-GtkWidget* gtk_item_factory_get_item (GtkItemFactory *ifactory,
- const gchar *path);
-GtkWidget* gtk_item_factory_get_widget (GtkItemFactory *ifactory,
- const gchar *path);
-GtkWidget* gtk_item_factory_get_widget_by_action (GtkItemFactory *ifactory,
- guint action);
-GtkWidget* gtk_item_factory_get_item_by_action (GtkItemFactory *ifactory,
- guint action);
-
-void gtk_item_factory_create_item (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry,
- gpointer callback_data,
- guint callback_type);
-void gtk_item_factory_create_items (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data);
-void gtk_item_factory_delete_item (GtkItemFactory *ifactory,
- const gchar *path);
-void gtk_item_factory_delete_entry (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry);
-void gtk_item_factory_delete_entries (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries);
-void gtk_item_factory_popup (GtkItemFactory *ifactory,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time_);
-void gtk_item_factory_popup_with_data(GtkItemFactory *ifactory,
- gpointer popup_data,
- GDestroyNotify destroy,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time_);
-gpointer gtk_item_factory_popup_data (GtkItemFactory *ifactory);
-gpointer gtk_item_factory_popup_data_from_widget (GtkWidget *widget);
-void gtk_item_factory_set_translate_func (GtkItemFactory *ifactory,
- GtkTranslateFunc func,
- gpointer data,
- GDestroyNotify notify);
-
-/* Compatibility functions for deprecated GtkMenuFactory code
- */
-
-/* Used by gtk_item_factory_create_menu_entries () */
-typedef void (*GtkMenuCallback) (GtkWidget *widget,
- gpointer user_data);
-typedef struct {
- gchar *path;
- gchar *accelerator;
- GtkMenuCallback callback;
- gpointer callback_data;
- GtkWidget *widget;
-} GtkMenuEntry;
-
-/* Used by gtk_item_factory_callback_marshal () */
-typedef void (*GtkItemFactoryCallback2) (GtkWidget *widget,
- gpointer callback_data,
- guint callback_action);
-
-/* Used by gtk_item_factory_create_items () */
-void gtk_item_factory_create_items_ac (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data,
- guint callback_type);
-
-GtkItemFactory* gtk_item_factory_from_path (const gchar *path);
-void gtk_item_factory_create_menu_entries (guint n_entries,
- GtkMenuEntry *entries);
-void gtk_item_factories_path_delete (const gchar *ifactory_path,
- const gchar *path);
-
-G_END_DECLS
-
-#endif /* !GTK_DISABLE_DEPRECATED */
-
-#endif /* __GTK_ITEM_FACTORY_H__ */
-
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 3d58d25342..611cebbf80 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -2879,17 +2879,6 @@ gtk_label_get_line_wrap_mode (GtkLabel *label)
return label->wrap_mode;
}
-
-void
-gtk_label_get (GtkLabel *label,
- gchar **str)
-{
- g_return_if_fail (GTK_IS_LABEL (label));
- g_return_if_fail (str != NULL);
-
- *str = label->text;
-}
-
static void
gtk_label_destroy (GtkObject *object)
{
@@ -4227,36 +4216,6 @@ gtk_label_set_uline_text_internal (GtkLabel *label,
g_free (pattern);
}
-guint
-gtk_label_parse_uline (GtkLabel *label,
- const gchar *str)
-{
- guint keyval;
-
- g_return_val_if_fail (GTK_IS_LABEL (label), GDK_VoidSymbol);
- g_return_val_if_fail (str != NULL, GDK_VoidSymbol);
-
- g_object_freeze_notify (G_OBJECT (label));
-
- gtk_label_set_label_internal (label, g_strdup (str ? str : ""));
- gtk_label_set_use_markup_internal (label, FALSE);
- gtk_label_set_use_underline_internal (label, TRUE);
-
- gtk_label_recalculate (label);
-
- keyval = label->mnemonic_keyval;
- if (keyval != GDK_VoidSymbol)
- {
- label->mnemonic_keyval = GDK_VoidSymbol;
- gtk_label_setup_mnemonic (label, keyval);
- g_object_notify (G_OBJECT (label), "mnemonic-keyval");
- }
-
- g_object_thaw_notify (G_OBJECT (label));
-
- return keyval;
-}
-
/**
* gtk_label_set_text_with_mnemonic:
* @label: a #GtkLabel
diff --git a/gtk/gtklabel.h b/gtk/gtklabel.h
index 88a9db7ddf..9c8cffacfd 100644
--- a/gtk/gtklabel.h
+++ b/gtk/gtklabel.h
@@ -23,7 +23,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -182,20 +182,6 @@ void gtk_label_set_track_visited_links (GtkLabel *label,
gboolean track_links);
gboolean gtk_label_get_track_visited_links (GtkLabel *label);
-#ifndef GTK_DISABLE_DEPRECATED
-
-#define gtk_label_set gtk_label_set_text
-void gtk_label_get (GtkLabel *label,
- gchar **str);
-
-/* Convenience function to set the name and pattern by parsing
- * a string with embedded underscores, and return the appropriate
- * key symbol for the accelerator.
- */
-guint gtk_label_parse_uline (GtkLabel *label,
- const gchar *string);
-
-#endif /* GTK_DISABLE_DEPRECATED */
/* private */
diff --git a/gtk/gtklayout.c b/gtk/gtklayout.c
index 7e3e0b9afb..868347f645 100644
--- a/gtk/gtklayout.c
+++ b/gtk/gtklayout.c
@@ -534,42 +534,6 @@ gtk_layout_get_size (GtkLayout *layout,
*height = layout->height;
}
-/**
- * gtk_layout_freeze:
- * @layout: a #GtkLayout
- *
- * This is a deprecated function, it doesn't do anything useful.
- **/
-void
-gtk_layout_freeze (GtkLayout *layout)
-{
- g_return_if_fail (GTK_IS_LAYOUT (layout));
-
- layout->freeze_count++;
-}
-
-/**
- * gtk_layout_thaw:
- * @layout: a #GtkLayout
- *
- * This is a deprecated function, it doesn't do anything useful.
- **/
-void
-gtk_layout_thaw (GtkLayout *layout)
-{
- g_return_if_fail (GTK_IS_LAYOUT (layout));
-
- if (layout->freeze_count)
- {
- if (!(--layout->freeze_count))
- {
- gtk_widget_queue_draw (GTK_WIDGET (layout));
- gdk_window_process_updates (GTK_WIDGET (layout)->window, TRUE);
- }
- }
-
-}
-
/* Basic Object handling procedures
*/
static void
diff --git a/gtk/gtklayout.h b/gtk/gtklayout.h
index 0d2e6bcf54..b446fb331f 100644
--- a/gtk/gtklayout.h
+++ b/gtk/gtklayout.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -119,20 +119,6 @@ void gtk_layout_set_hadjustment (GtkLayout *layout,
void gtk_layout_set_vadjustment (GtkLayout *layout,
GtkAdjustment *adjustment);
-
-#ifndef GTK_DISABLE_DEPRECATED
-/* These disable and enable moving and repainting the scrolling window
- * of the GtkLayout, respectively. If you want to update the layout's
- * offsets but do not want it to repaint itself, you should use these
- * functions.
- *
- * - I don't understand these are supposed to work, so I suspect
- * - they don't now. OWT 1/20/98
- */
-void gtk_layout_freeze (GtkLayout *layout);
-void gtk_layout_thaw (GtkLayout *layout);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_LAYOUT_H__ */
diff --git a/gtk/gtklinkbutton.h b/gtk/gtklinkbutton.h
index 4e834dae94..a5e987e27c 100644
--- a/gtk/gtklinkbutton.h
+++ b/gtk/gtklinkbutton.h
@@ -22,7 +22,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Cambridge, MA 02139, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtklist.c b/gtk/gtklist.c
deleted file mode 100644
index db4c665831..0000000000
--- a/gtk/gtklist.c
+++ /dev/null
@@ -1,2587 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-#include <string.h> /* memset */
-
-#undef GTK_DISABLE_DEPRECATED
-#define __GTK_LIST_C__
-
-#include "gtklist.h"
-#include "gtklistitem.h"
-#include "gtkmain.h"
-#include "gtksignal.h"
-#include "gtklabel.h"
-#include "gtkmarshalers.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-enum {
- SELECTION_CHANGED,
- SELECT_CHILD,
- UNSELECT_CHILD,
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- ARG_SELECTION_MODE
-};
-
-#define SCROLL_TIME 100
-
-/*** GtkList Methods ***/
-static void gtk_list_class_init (GtkListClass *klass);
-static void gtk_list_init (GtkList *list);
-static void gtk_list_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_list_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-/*** GtkObject Methods ***/
-static void gtk_list_dispose (GObject *object);
-
-/*** GtkWidget Methods ***/
-static void gtk_list_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_list_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_list_realize (GtkWidget *widget);
-static void gtk_list_unmap (GtkWidget *widget);
-static void gtk_list_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static gint gtk_list_motion_notify (GtkWidget *widget,
- GdkEventMotion *event);
-static gint gtk_list_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_list_button_release (GtkWidget *widget,
- GdkEventButton *event);
-
-static gboolean gtk_list_focus (GtkWidget *widget,
- GtkDirectionType direction);
-
-/*** GtkContainer Methods ***/
-static void gtk_list_add (GtkContainer *container,
- GtkWidget *widget);
-static void gtk_list_remove (GtkContainer *container,
- GtkWidget *widget);
-static void gtk_list_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data);
-static GtkType gtk_list_child_type (GtkContainer *container);
-static void gtk_list_set_focus_child (GtkContainer *container,
- GtkWidget *widget);
-
-/*** GtkList Private Functions ***/
-static void gtk_list_move_focus_child (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position);
-static gint gtk_list_horizontal_timeout (GtkWidget *list);
-static gint gtk_list_vertical_timeout (GtkWidget *list);
-static void gtk_list_remove_items_internal (GtkList *list,
- GList *items,
- gboolean no_unref);
-
-/*** GtkList Selection Methods ***/
-static void gtk_real_list_select_child (GtkList *list,
- GtkWidget *child);
-static void gtk_real_list_unselect_child (GtkList *list,
- GtkWidget *child);
-
-/*** GtkList Selection Functions ***/
-static void gtk_list_set_anchor (GtkList *list,
- gboolean add_mode,
- gint anchor,
- GtkWidget *undo_focus_child);
-static void gtk_list_fake_unselect_all (GtkList *list,
- GtkWidget *item);
-static void gtk_list_fake_toggle_row (GtkList *list,
- GtkWidget *item);
-static void gtk_list_update_extended_selection (GtkList *list,
- gint row);
-static void gtk_list_reset_extended_selection (GtkList *list);
-
-/*** GtkListItem Signal Functions ***/
-static void gtk_list_signal_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- GtkList *list);
-static void gtk_list_signal_toggle_focus_row (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_select_all (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_unselect_all (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_undo_selection (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_start_selection (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_end_selection (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_extend_selection (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection,
- GtkList *list);
-static void gtk_list_signal_scroll_horizontal (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- GtkList *list);
-static void gtk_list_signal_scroll_vertical (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- GtkList *list);
-static void gtk_list_signal_toggle_add_mode (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_item_select (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_item_deselect (GtkListItem *list_item,
- GtkList *list);
-static void gtk_list_signal_item_toggle (GtkListItem *list_item,
- GtkList *list);
-
-
-static void gtk_list_drag_begin (GtkWidget *widget,
- GdkDragContext *context);
-
-
-static GtkContainerClass *parent_class = NULL;
-static guint list_signals[LAST_SIGNAL] = { 0 };
-
-static const gchar vadjustment_key[] = "gtk-vadjustment";
-static guint vadjustment_key_id = 0;
-static const gchar hadjustment_key[] = "gtk-hadjustment";
-static guint hadjustment_key_id = 0;
-
-GtkType
-gtk_list_get_type (void)
-{
- static GtkType list_type = 0;
-
- if (!list_type)
- {
- static const GtkTypeInfo list_info =
- {
- "GtkList",
- sizeof (GtkList),
- sizeof (GtkListClass),
- (GtkClassInitFunc) gtk_list_class_init,
- (GtkObjectInitFunc) gtk_list_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkList");
- list_type = gtk_type_unique (GTK_TYPE_CONTAINER, &list_info);
- }
-
- return list_type;
-}
-
-static void
-gtk_list_class_init (GtkListClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- container_class = (GtkContainerClass*) class;
-
- parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
-
- vadjustment_key_id = g_quark_from_static_string (vadjustment_key);
- hadjustment_key_id = g_quark_from_static_string (hadjustment_key);
-
- gobject_class->dispose = gtk_list_dispose;
-
-
- object_class->set_arg = gtk_list_set_arg;
- object_class->get_arg = gtk_list_get_arg;
-
- widget_class->unmap = gtk_list_unmap;
- widget_class->style_set = gtk_list_style_set;
- widget_class->realize = gtk_list_realize;
- widget_class->button_press_event = gtk_list_button_press;
- widget_class->button_release_event = gtk_list_button_release;
- widget_class->motion_notify_event = gtk_list_motion_notify;
- widget_class->size_request = gtk_list_size_request;
- widget_class->size_allocate = gtk_list_size_allocate;
- widget_class->drag_begin = gtk_list_drag_begin;
- widget_class->focus = gtk_list_focus;
-
- container_class->add = gtk_list_add;
- container_class->remove = gtk_list_remove;
- container_class->forall = gtk_list_forall;
- container_class->child_type = gtk_list_child_type;
- container_class->set_focus_child = gtk_list_set_focus_child;
-
- class->selection_changed = NULL;
- class->select_child = gtk_real_list_select_child;
- class->unselect_child = gtk_real_list_unselect_child;
-
- list_signals[SELECTION_CHANGED] =
- gtk_signal_new (I_("selection-changed"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListClass, selection_changed),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_signals[SELECT_CHILD] =
- gtk_signal_new (I_("select-child"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListClass, select_child),
- _gtk_marshal_VOID__OBJECT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_WIDGET);
- list_signals[UNSELECT_CHILD] =
- gtk_signal_new (I_("unselect-child"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListClass, unselect_child),
- _gtk_marshal_VOID__OBJECT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_WIDGET);
-
- gtk_object_add_arg_type ("GtkList::selection-mode",
- GTK_TYPE_SELECTION_MODE,
- GTK_ARG_READWRITE | G_PARAM_STATIC_NAME,
- ARG_SELECTION_MODE);
-}
-
-static void
-gtk_list_init (GtkList *list)
-{
- list->children = NULL;
- list->selection = NULL;
-
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- list->last_focus_child = NULL;
- list->undo_focus_child = NULL;
-
- list->htimer = 0;
- list->vtimer = 0;
-
- list->anchor = -1;
- list->drag_pos = -1;
- list->anchor_state = GTK_STATE_SELECTED;
-
- list->selection_mode = GTK_SELECTION_SINGLE;
- list->drag_selection = FALSE;
- list->add_mode = FALSE;
-}
-
-static void
-gtk_list_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkList *list = GTK_LIST (object);
-
- switch (arg_id)
- {
- case ARG_SELECTION_MODE:
- gtk_list_set_selection_mode (list, GTK_VALUE_ENUM (*arg));
- break;
- }
-}
-
-static void
-gtk_list_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkList *list = GTK_LIST (object);
-
- switch (arg_id)
- {
- case ARG_SELECTION_MODE:
- GTK_VALUE_ENUM (*arg) = list->selection_mode;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-GtkWidget*
-gtk_list_new (void)
-{
- return GTK_WIDGET (gtk_type_new (GTK_TYPE_LIST));
-}
-
-
-/* Private GtkObject Methods :
- *
- * gtk_list_dispose
- */
-static void
-gtk_list_dispose (GObject *object)
-{
- gtk_list_clear_items (GTK_LIST (object), 0, -1);
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-
-/* Private GtkWidget Methods :
- *
- * gtk_list_size_request
- * gtk_list_size_allocate
- * gtk_list_realize
- * gtk_list_unmap
- * gtk_list_motion_notify
- * gtk_list_button_press
- * gtk_list_button_release
- */
-static void
-gtk_list_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkList *list = GTK_LIST (widget);
- GtkWidget *child;
- GList *children;
-
- requisition->width = 0;
- requisition->height = 0;
-
- children = list->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child))
- {
- GtkRequisition child_requisition;
-
- gtk_widget_size_request (child, &child_requisition);
-
- requisition->width = MAX (requisition->width,
- child_requisition.width);
- requisition->height += child_requisition.height;
- }
- }
-
- requisition->width += GTK_CONTAINER (list)->border_width * 2;
- requisition->height += GTK_CONTAINER (list)->border_width * 2;
-
- requisition->width = MAX (requisition->width, 1);
- requisition->height = MAX (requisition->height, 1);
-}
-
-static void
-gtk_list_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkList *list = GTK_LIST (widget);
- GtkWidget *child;
- GtkAllocation child_allocation;
- GList *children;
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- if (list->children)
- {
- child_allocation.x = GTK_CONTAINER (list)->border_width;
- child_allocation.y = GTK_CONTAINER (list)->border_width;
- child_allocation.width = MAX (1, (gint)allocation->width -
- child_allocation.x * 2);
-
- children = list->children;
-
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child))
- {
- GtkRequisition child_requisition;
- gtk_widget_get_child_requisition (child, &child_requisition);
-
- child_allocation.height = child_requisition.height;
-
- gtk_widget_size_allocate (child, &child_allocation);
-
- child_allocation.y += child_allocation.height;
- }
- }
- }
-}
-
-static void
-gtk_list_realize (GtkWidget *widget)
-{
- GdkWindowAttr attributes;
- gint attributes_mask;
-
- gtk_widget_set_realized (widget, TRUE);
-
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
-
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
- &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, widget);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_STATE_NORMAL]);
-}
-
-static gboolean
-list_has_grab (GtkList *list)
-{
- return (GTK_WIDGET_HAS_GRAB (list) &&
- gdk_display_pointer_is_grabbed (gtk_widget_get_display (GTK_WIDGET (list))));
-
-}
-
-static void
-gtk_list_unmap (GtkWidget *widget)
-{
- GtkList *list = GTK_LIST (widget);
-
- if (!gtk_widget_get_mapped (widget))
- return;
-
- gtk_widget_set_mapped (widget, FALSE);
-
- if (list_has_grab (list))
- {
- gtk_list_end_drag_selection (list);
-
- if (list->anchor != -1 && list->selection_mode == GTK_SELECTION_MULTIPLE)
- gtk_list_end_selection (list);
- }
-
- gdk_window_hide (widget->window);
-}
-
-static gint
-gtk_list_motion_notify (GtkWidget *widget,
- GdkEventMotion *event)
-{
- GtkList *list = GTK_LIST (widget);
- GtkWidget *item = NULL;
- GtkAdjustment *adj;
- GtkContainer *container;
- GList *work;
- gint x;
- gint y;
- gint row = -1;
- gint focus_row = 0;
- gint length = 0;
-
- if (!list->drag_selection || !list->children)
- return FALSE;
-
- container = GTK_CONTAINER (widget);
-
- if (event->is_hint || event->window != widget->window)
- gdk_window_get_pointer (widget->window, &x, &y, NULL);
- else
- {
- x = event->x;
- y = event->y;
- }
-
- adj = gtk_object_get_data_by_id (GTK_OBJECT (list), hadjustment_key_id);
-
- /* horizontal autoscrolling */
- if (adj && widget->allocation.width > adj->page_size &&
- (x < adj->value || x >= adj->value + adj->page_size))
- {
- if (list->htimer == 0)
- {
- list->htimer = gdk_threads_add_timeout
- (SCROLL_TIME, (GSourceFunc) gtk_list_horizontal_timeout, widget);
-
- if (!((x < adj->value && adj->value <= 0) ||
- (x > adj->value + adj->page_size &&
- adj->value >= adj->upper - adj->page_size)))
- {
- gdouble value;
-
- if (x < adj->value)
- value = adj->value + (x - adj->value) / 2 - 1;
- else
- value = adj->value + 1 + (x - adj->value - adj->page_size) / 2;
-
- gtk_adjustment_set_value (adj,
- CLAMP (value, 0.0,
- adj->upper - adj->page_size));
- }
- }
- else
- return FALSE;
- }
-
-
- /* vertical autoscrolling */
- for (work = list->children; work; length++, work = work->next)
- {
- if (row < 0)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y > y ||
- (item->allocation.y <= y &&
- item->allocation.y + item->allocation.height > y))
- row = length;
- }
-
- if (work->data == container->focus_child)
- focus_row = length;
- }
-
- if (row < 0)
- row = length - 1;
-
- if (list->vtimer != 0)
- return FALSE;
-
- if (!((y < 0 && focus_row == 0) ||
- (y > widget->allocation.height && focus_row >= length - 1)))
- list->vtimer = gdk_threads_add_timeout (SCROLL_TIME,
- (GSourceFunc) gtk_list_vertical_timeout,
- list);
-
- if (row != focus_row)
- gtk_widget_grab_focus (item);
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- gtk_list_select_child (list, item);
- break;
- case GTK_SELECTION_MULTIPLE:
- gtk_list_update_extended_selection (list, row);
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-static gint
-gtk_list_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkList *list = GTK_LIST (widget);
- GtkWidget *item;
-
- if (event->button != 1)
- return FALSE;
-
- item = gtk_get_event_widget ((GdkEvent*) event);
-
- while (item && !GTK_IS_LIST_ITEM (item))
- item = item->parent;
-
- if (item && (item->parent == widget))
- {
- gint last_focus_row;
- gint focus_row;
-
- if (event->type == GDK_BUTTON_PRESS)
- {
- gtk_grab_add (widget);
- list->drag_selection = TRUE;
- }
- else if (list_has_grab (list))
- gtk_list_end_drag_selection (list);
-
- if (!gtk_widget_has_focus(item))
- gtk_widget_grab_focus (item);
-
- if (list->add_mode)
- {
- list->add_mode = FALSE;
- gtk_widget_queue_draw (item);
- }
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- if (event->type != GDK_BUTTON_PRESS)
- gtk_list_select_child (list, item);
- else
- list->undo_focus_child = item;
- break;
-
- case GTK_SELECTION_BROWSE:
- break;
-
- case GTK_SELECTION_MULTIPLE:
- focus_row = g_list_index (list->children, item);
-
- if (list->last_focus_child)
- last_focus_row = g_list_index (list->children,
- list->last_focus_child);
- else
- {
- last_focus_row = focus_row;
- list->last_focus_child = item;
- }
-
- if (event->type != GDK_BUTTON_PRESS)
- {
- if (list->anchor >= 0)
- {
- gtk_list_update_extended_selection (list, focus_row);
- gtk_list_end_selection (list);
- }
- gtk_list_select_child (list, item);
- break;
- }
-
- if (event->state & GDK_CONTROL_MASK)
- {
- if (event->state & GDK_SHIFT_MASK)
- {
- if (list->anchor < 0)
- {
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- list->anchor = last_focus_row;
- list->drag_pos = last_focus_row;
- list->undo_focus_child = list->last_focus_child;
- }
- gtk_list_update_extended_selection (list, focus_row);
- }
- else
- {
- if (list->anchor < 0)
- gtk_list_set_anchor (list, TRUE,
- focus_row, list->last_focus_child);
- else
- gtk_list_update_extended_selection (list, focus_row);
- }
- break;
- }
-
- if (event->state & GDK_SHIFT_MASK)
- {
- gtk_list_set_anchor (list, FALSE,
- last_focus_row, list->last_focus_child);
- gtk_list_update_extended_selection (list, focus_row);
- break;
- }
-
- if (list->anchor < 0)
- gtk_list_set_anchor (list, FALSE, focus_row,
- list->last_focus_child);
- else
- gtk_list_update_extended_selection (list, focus_row);
- break;
-
- default:
- break;
- }
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-gtk_list_button_release (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkList *list = GTK_LIST (widget);
- GtkWidget *item;
-
- /* we don't handle button 2 and 3 */
- if (event->button != 1)
- return FALSE;
-
- if (list->drag_selection)
- {
- gtk_list_end_drag_selection (list);
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- if (!(event->state & GDK_SHIFT_MASK))
- gtk_list_end_selection (list);
- break;
-
- case GTK_SELECTION_SINGLE:
-
- item = gtk_get_event_widget ((GdkEvent*) event);
-
- while (item && !GTK_IS_LIST_ITEM (item))
- item = item->parent;
-
- if (item && item->parent == widget)
- {
- if (list->undo_focus_child == item)
- gtk_list_toggle_row (list, item);
- }
- list->undo_focus_child = NULL;
- break;
-
- default:
- break;
- }
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-gtk_list_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- GtkStyle *style;
-
- if (previous_style && gtk_widget_get_realized (widget))
- {
- style = gtk_widget_get_style (widget);
- gdk_window_set_background (gtk_widget_get_window (widget),
- &style->base[gtk_widget_get_state (widget)]);
- }
-}
-
-/* GtkContainer Methods :
- * gtk_list_add
- * gtk_list_remove
- * gtk_list_forall
- * gtk_list_child_type
- * gtk_list_set_focus_child
- * gtk_list_focus
- */
-static void
-gtk_list_add (GtkContainer *container,
- GtkWidget *widget)
-{
- GList *item_list;
-
- g_return_if_fail (GTK_IS_LIST_ITEM (widget));
-
- item_list = g_list_alloc ();
- item_list->data = widget;
-
- gtk_list_append_items (GTK_LIST (container), item_list);
-}
-
-static void
-gtk_list_remove (GtkContainer *container,
- GtkWidget *widget)
-{
- GList *item_list;
-
- g_return_if_fail (container == GTK_CONTAINER (widget->parent));
-
- item_list = g_list_alloc ();
- item_list->data = widget;
-
- gtk_list_remove_items (GTK_LIST (container), item_list);
-
- g_list_free (item_list);
-}
-
-static void
-gtk_list_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- GtkList *list = GTK_LIST (container);
- GtkWidget *child;
- GList *children;
-
- children = list->children;
-
- while (children)
- {
- child = children->data;
- children = children->next;
-
- (* callback) (child, callback_data);
- }
-}
-
-static GtkType
-gtk_list_child_type (GtkContainer *container)
-{
- return GTK_TYPE_LIST_ITEM;
-}
-
-static void
-gtk_list_set_focus_child (GtkContainer *container,
- GtkWidget *child)
-{
- GtkList *list;
-
- g_return_if_fail (GTK_IS_LIST (container));
-
- if (child)
- g_return_if_fail (GTK_IS_WIDGET (child));
-
- list = GTK_LIST (container);
-
- if (child != container->focus_child)
- {
- if (container->focus_child)
- {
- list->last_focus_child = container->focus_child;
- g_object_unref (container->focus_child);
- }
- container->focus_child = child;
- if (container->focus_child)
- g_object_ref (container->focus_child);
- }
-
- /* check for v adjustment */
- if (container->focus_child)
- {
- GtkAdjustment *adjustment;
-
- adjustment = gtk_object_get_data_by_id (GTK_OBJECT (container),
- vadjustment_key_id);
- if (adjustment)
- gtk_adjustment_clamp_page (adjustment,
- container->focus_child->allocation.y,
- (container->focus_child->allocation.y +
- container->focus_child->allocation.height));
- switch (list->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- gtk_list_select_child (list, child);
- break;
- case GTK_SELECTION_MULTIPLE:
- if (!list->last_focus_child && !list->add_mode)
- {
- list->undo_focus_child = list->last_focus_child;
- gtk_list_unselect_all (list);
- gtk_list_select_child (list, child);
- }
- break;
- default:
- break;
- }
- }
-}
-
-static gboolean
-gtk_list_focus (GtkWidget *widget,
- GtkDirectionType direction)
-{
- gint return_val = FALSE;
- GtkContainer *container;
-
- container = GTK_CONTAINER (widget);
-
- if (container->focus_child == NULL ||
- !gtk_widget_has_focus (container->focus_child))
- {
- if (GTK_LIST (container)->last_focus_child)
- gtk_container_set_focus_child
- (container, GTK_LIST (container)->last_focus_child);
-
- if (GTK_WIDGET_CLASS (parent_class)->focus)
- return_val = GTK_WIDGET_CLASS (parent_class)->focus (widget,
- direction);
- }
-
- if (!return_val)
- {
- GtkList *list;
-
- list = GTK_LIST (container);
- if (list->selection_mode == GTK_SELECTION_MULTIPLE && list->anchor >= 0)
- gtk_list_end_selection (list);
-
- if (container->focus_child)
- list->last_focus_child = container->focus_child;
- }
-
- return return_val;
-}
-
-
-/* Public GtkList Methods :
- *
- * gtk_list_insert_items
- * gtk_list_append_items
- * gtk_list_prepend_items
- * gtk_list_remove_items
- * gtk_list_remove_items_no_unref
- * gtk_list_clear_items
- *
- * gtk_list_child_position
- */
-void
-gtk_list_insert_items (GtkList *list,
- GList *items,
- gint position)
-{
- GtkWidget *widget;
- GList *tmp_list;
- GList *last;
- gint nchildren;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (!items)
- return;
-
- gtk_list_end_drag_selection (list);
- if (list->selection_mode == GTK_SELECTION_MULTIPLE && list->anchor >= 0)
- gtk_list_end_selection (list);
-
- tmp_list = items;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
- gtk_widget_set_parent (widget, GTK_WIDGET (list));
- gtk_signal_connect (GTK_OBJECT (widget), "drag-begin",
- G_CALLBACK (gtk_list_signal_drag_begin),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "toggle-focus-row",
- G_CALLBACK (gtk_list_signal_toggle_focus_row),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "select-all",
- G_CALLBACK (gtk_list_signal_select_all),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "unselect-all",
- G_CALLBACK (gtk_list_signal_unselect_all),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "undo-selection",
- G_CALLBACK (gtk_list_signal_undo_selection),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "start-selection",
- G_CALLBACK (gtk_list_signal_start_selection),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "end-selection",
- G_CALLBACK (gtk_list_signal_end_selection),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "extend-selection",
- G_CALLBACK (gtk_list_signal_extend_selection),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "scroll-horizontal",
- G_CALLBACK (gtk_list_signal_scroll_horizontal),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "scroll-vertical",
- G_CALLBACK (gtk_list_signal_scroll_vertical),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "toggle-add-mode",
- G_CALLBACK (gtk_list_signal_toggle_add_mode),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "select",
- G_CALLBACK (gtk_list_signal_item_select),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "deselect",
- G_CALLBACK (gtk_list_signal_item_deselect),
- list);
- gtk_signal_connect (GTK_OBJECT (widget), "toggle",
- G_CALLBACK (gtk_list_signal_item_toggle),
- list);
- }
-
-
- nchildren = g_list_length (list->children);
- if ((position < 0) || (position > nchildren))
- position = nchildren;
-
- if (position == nchildren)
- {
- if (list->children)
- {
- tmp_list = g_list_last (list->children);
- tmp_list->next = items;
- items->prev = tmp_list;
- }
- else
- {
- list->children = items;
- }
- }
- else
- {
- tmp_list = g_list_nth (list->children, position);
- last = g_list_last (items);
-
- if (tmp_list->prev)
- tmp_list->prev->next = items;
- last->next = tmp_list;
- items->prev = tmp_list->prev;
- tmp_list->prev = last;
-
- if (tmp_list == list->children)
- list->children = items;
- }
-
- if (list->children && !list->selection &&
- (list->selection_mode == GTK_SELECTION_BROWSE))
- {
- widget = list->children->data;
- gtk_list_select_child (list, widget);
- }
-}
-
-void
-gtk_list_append_items (GtkList *list,
- GList *items)
-{
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_insert_items (list, items, -1);
-}
-
-void
-gtk_list_prepend_items (GtkList *list,
- GList *items)
-{
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_insert_items (list, items, 0);
-}
-
-void
-gtk_list_remove_items (GtkList *list,
- GList *items)
-{
- gtk_list_remove_items_internal (list, items, FALSE);
-}
-
-void
-gtk_list_remove_items_no_unref (GtkList *list,
- GList *items)
-{
- gtk_list_remove_items_internal (list, items, TRUE);
-}
-
-void
-gtk_list_clear_items (GtkList *list,
- gint start,
- gint end)
-{
- GtkContainer *container;
- GtkWidget *widget;
- GtkWidget *new_focus_child = NULL;
- GList *start_list;
- GList *end_list;
- GList *tmp_list;
- guint nchildren;
- gboolean grab_focus = FALSE;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- nchildren = g_list_length (list->children);
-
- if (nchildren == 0)
- return;
-
- if ((end < 0) || (end > nchildren))
- end = nchildren;
-
- if (start >= end)
- return;
-
- container = GTK_CONTAINER (list);
-
- gtk_list_end_drag_selection (list);
- if (list->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- if (list->anchor >= 0)
- gtk_list_end_selection (list);
-
- gtk_list_reset_extended_selection (list);
- }
-
- start_list = g_list_nth (list->children, start);
- end_list = g_list_nth (list->children, end);
-
- if (start_list->prev)
- start_list->prev->next = end_list;
- if (end_list && end_list->prev)
- end_list->prev->next = NULL;
- if (end_list)
- end_list->prev = start_list->prev;
- if (start_list == list->children)
- list->children = end_list;
-
- if (container->focus_child)
- {
- if (g_list_find (start_list, container->focus_child))
- {
- if (start_list->prev)
- new_focus_child = start_list->prev->data;
- else if (list->children)
- new_focus_child = list->children->data;
-
- if (gtk_widget_has_focus (container->focus_child))
- grab_focus = TRUE;
- }
- }
-
- tmp_list = start_list;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
- g_object_ref (widget);
-
- if (widget->state == GTK_STATE_SELECTED)
- gtk_list_unselect_child (list, widget);
-
- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
- gtk_widget_unparent (widget);
-
- if (widget == list->undo_focus_child)
- list->undo_focus_child = NULL;
- if (widget == list->last_focus_child)
- list->last_focus_child = NULL;
-
- g_object_unref (widget);
- }
-
- g_list_free (start_list);
-
- if (new_focus_child)
- {
- if (grab_focus)
- gtk_widget_grab_focus (new_focus_child);
- else if (container->focus_child)
- gtk_container_set_focus_child (container, new_focus_child);
-
- if ((list->selection_mode == GTK_SELECTION_BROWSE ||
- list->selection_mode == GTK_SELECTION_MULTIPLE) && !list->selection)
- {
- list->last_focus_child = new_focus_child;
- gtk_list_select_child (list, new_focus_child);
- }
- }
-
- if (gtk_widget_get_visible (GTK_WIDGET (list)))
- gtk_widget_queue_resize (GTK_WIDGET (list));
-}
-
-gint
-gtk_list_child_position (GtkList *list,
- GtkWidget *child)
-{
- GList *children;
- gint pos;
-
- g_return_val_if_fail (GTK_IS_LIST (list), -1);
- g_return_val_if_fail (child != NULL, -1);
-
- pos = 0;
- children = list->children;
-
- while (children)
- {
- if (child == GTK_WIDGET (children->data))
- return pos;
-
- pos += 1;
- children = children->next;
- }
-
- return -1;
-}
-
-
-/* Private GtkList Insert/Remove Item Functions:
- *
- * gtk_list_remove_items_internal
- */
-static void
-gtk_list_remove_items_internal (GtkList *list,
- GList *items,
- gboolean no_unref)
-{
- GtkWidget *widget;
- GtkWidget *new_focus_child;
- GtkWidget *old_focus_child;
- GtkContainer *container;
- GList *tmp_list;
- GList *work;
- gboolean grab_focus = FALSE;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (!items)
- return;
-
- container = GTK_CONTAINER (list);
-
- gtk_list_end_drag_selection (list);
- if (list->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- if (list->anchor >= 0)
- gtk_list_end_selection (list);
-
- gtk_list_reset_extended_selection (list);
- }
-
- tmp_list = items;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
- if (widget->state == GTK_STATE_SELECTED)
- gtk_list_unselect_child (list, widget);
- }
-
- if (container->focus_child)
- {
- old_focus_child = new_focus_child = container->focus_child;
- if (gtk_widget_has_focus (container->focus_child))
- grab_focus = TRUE;
- }
- else
- old_focus_child = new_focus_child = list->last_focus_child;
-
- tmp_list = items;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
- g_object_ref (widget);
- if (no_unref)
- g_object_ref (widget);
-
- if (widget == new_focus_child)
- {
- work = g_list_find (list->children, widget);
-
- if (work)
- {
- if (work->next)
- new_focus_child = work->next->data;
- else if (list->children != work && work->prev)
- new_focus_child = work->prev->data;
- else
- new_focus_child = NULL;
- }
- }
-
- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
- list->children = g_list_remove (list->children, widget);
- gtk_widget_unparent (widget);
-
- if (widget == list->undo_focus_child)
- list->undo_focus_child = NULL;
- if (widget == list->last_focus_child)
- list->last_focus_child = NULL;
-
- g_object_unref (widget);
- }
-
- if (new_focus_child && new_focus_child != old_focus_child)
- {
- if (grab_focus)
- gtk_widget_grab_focus (new_focus_child);
- else if (container->focus_child)
- gtk_container_set_focus_child (container, new_focus_child);
-
- if (list->selection_mode == GTK_SELECTION_BROWSE && !list->selection)
- {
- list->last_focus_child = new_focus_child;
- gtk_list_select_child (list, new_focus_child);
- }
- }
-
- if (gtk_widget_get_visible (GTK_WIDGET (list)))
- gtk_widget_queue_resize (GTK_WIDGET (list));
-}
-
-
-/* Public GtkList Selection Methods :
- *
- * gtk_list_set_selection_mode
- * gtk_list_select_item
- * gtk_list_unselect_item
- * gtk_list_select_child
- * gtk_list_unselect_child
- * gtk_list_select_all
- * gtk_list_unselect_all
- * gtk_list_extend_selection
- * gtk_list_end_drag_selection
- * gtk_list_start_selection
- * gtk_list_end_selection
- * gtk_list_toggle_row
- * gtk_list_toggle_focus_row
- * gtk_list_toggle_add_mode
- * gtk_list_undo_selection
- */
-void
-gtk_list_set_selection_mode (GtkList *list,
- GtkSelectionMode mode)
-{
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list->selection_mode == mode)
- return;
-
- list->selection_mode = mode;
-
- switch (mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
- gtk_list_unselect_all (list);
- break;
- default:
- break;
- }
-}
-
-void
-gtk_list_select_item (GtkList *list,
- gint item)
-{
- GList *tmp_list;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- tmp_list = g_list_nth (list->children, item);
- if (tmp_list)
- gtk_list_select_child (list, GTK_WIDGET (tmp_list->data));
-}
-
-void
-gtk_list_unselect_item (GtkList *list,
- gint item)
-{
- GList *tmp_list;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- tmp_list = g_list_nth (list->children, item);
- if (tmp_list)
- gtk_list_unselect_child (list, GTK_WIDGET (tmp_list->data));
-}
-
-void
-gtk_list_select_child (GtkList *list,
- GtkWidget *child)
-{
- gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECT_CHILD], child);
-}
-
-void
-gtk_list_unselect_child (GtkList *list,
- GtkWidget *child)
-{
- gtk_signal_emit (GTK_OBJECT (list), list_signals[UNSELECT_CHILD], child);
-}
-
-void
-gtk_list_select_all (GtkList *list)
-{
- GtkContainer *container;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (!list->children)
- return;
-
- if (list_has_grab (list))
- gtk_list_end_drag_selection (list);
-
- if (list->selection_mode == GTK_SELECTION_MULTIPLE && list->anchor >= 0)
- gtk_list_end_selection (list);
-
- container = GTK_CONTAINER (list);
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- if (container->focus_child)
- {
- gtk_list_select_child (list, container->focus_child);
- return;
- }
- break;
- case GTK_SELECTION_MULTIPLE:
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- if (list->children &&
- gtk_widget_get_state (list->children->data) != GTK_STATE_SELECTED)
- gtk_list_fake_toggle_row (list, GTK_WIDGET (list->children->data));
-
- list->anchor_state = GTK_STATE_SELECTED;
- list->anchor = 0;
- list->drag_pos = 0;
- list->undo_focus_child = container->focus_child;
- gtk_list_update_extended_selection (list, g_list_length(list->children));
- gtk_list_end_selection (list);
- return;
- default:
- break;
- }
-}
-
-void
-gtk_list_unselect_all (GtkList *list)
-{
- GtkContainer *container;
- GtkWidget *item;
- GList *work;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (!list->children)
- return;
-
- if (list_has_grab (list))
- gtk_list_end_drag_selection (list);
-
- if (list->selection_mode == GTK_SELECTION_MULTIPLE && list->anchor >= 0)
- gtk_list_end_selection (list);
-
- container = GTK_CONTAINER (list);
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_BROWSE:
- if (container->focus_child)
- {
- gtk_list_select_child (list, container->focus_child);
- return;
- }
- break;
- case GTK_SELECTION_MULTIPLE:
- gtk_list_reset_extended_selection (list);
- break;
- default:
- break;
- }
-
- work = list->selection;
-
- while (work)
- {
- item = work->data;
- work = work->next;
- gtk_list_unselect_child (list, item);
- }
-}
-
-void
-gtk_list_extend_selection (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection)
-{
- GtkContainer *container;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list) ||
- list->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- container = GTK_CONTAINER (list);
-
- if (auto_start_selection)
- {
- gint focus_row;
-
- focus_row = g_list_index (list->children, container->focus_child);
- gtk_list_set_anchor (list, list->add_mode, focus_row,
- container->focus_child);
- }
- else if (list->anchor < 0)
- return;
-
- gtk_list_move_focus_child (list, scroll_type, position);
- gtk_list_update_extended_selection
- (list, g_list_index (list->children, container->focus_child));
-}
-
-void
-gtk_list_end_drag_selection (GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST (list));
-
- list->drag_selection = FALSE;
- if (GTK_WIDGET_HAS_GRAB (list))
- gtk_grab_remove (GTK_WIDGET (list));
-
- if (list->htimer)
- {
- g_source_remove (list->htimer);
- list->htimer = 0;
- }
- if (list->vtimer)
- {
- g_source_remove (list->vtimer);
- list->vtimer = 0;
- }
-}
-
-void
-gtk_list_start_selection (GtkList *list)
-{
- GtkContainer *container;
- gint focus_row;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list))
- return;
-
- container = GTK_CONTAINER (list);
-
- if ((focus_row = g_list_index (list->selection, container->focus_child))
- >= 0)
- gtk_list_set_anchor (list, list->add_mode,
- focus_row, container->focus_child);
-}
-
-void
-gtk_list_end_selection (GtkList *list)
-{
- gint i;
- gint e;
- gboolean top_down;
- GList *work;
- GtkWidget *item;
- gint item_index;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list) || list->anchor < 0)
- return;
-
- i = MIN (list->anchor, list->drag_pos);
- e = MAX (list->anchor, list->drag_pos);
-
- top_down = (list->anchor < list->drag_pos);
-
- list->anchor = -1;
- list->drag_pos = -1;
-
- if (list->undo_selection)
- {
- work = list->selection;
- list->selection = list->undo_selection;
- list->undo_selection = work;
- work = list->selection;
- while (work)
- {
- item = work->data;
- work = work->next;
- item_index = g_list_index (list->children, item);
- if (item_index < i || item_index > e)
- {
- gtk_widget_set_state (item, GTK_STATE_SELECTED);
- gtk_list_unselect_child (list, item);
- list->undo_selection = g_list_prepend (list->undo_selection,
- item);
- }
- }
- }
-
- if (top_down)
- {
- for (work = g_list_nth (list->children, i); i <= e;
- i++, work = work->next)
- {
- item = work->data;
- if (g_list_find (list->selection, item))
- {
- if (item->state == GTK_STATE_NORMAL)
- {
- gtk_widget_set_state (item, GTK_STATE_SELECTED);
- gtk_list_unselect_child (list, item);
- list->undo_selection = g_list_prepend (list->undo_selection,
- item);
- }
- }
- else if (item->state == GTK_STATE_SELECTED)
- {
- gtk_widget_set_state (item, GTK_STATE_NORMAL);
- list->undo_unselection = g_list_prepend (list->undo_unselection,
- item);
- }
- }
- }
- else
- {
- for (work = g_list_nth (list->children, e); i <= e;
- e--, work = work->prev)
- {
- item = work->data;
- if (g_list_find (list->selection, item))
- {
- if (item->state == GTK_STATE_NORMAL)
- {
- gtk_widget_set_state (item, GTK_STATE_SELECTED);
- gtk_list_unselect_child (list, item);
- list->undo_selection = g_list_prepend (list->undo_selection,
- item);
- }
- }
- else if (item->state == GTK_STATE_SELECTED)
- {
- gtk_widget_set_state (item, GTK_STATE_NORMAL);
- list->undo_unselection = g_list_prepend (list->undo_unselection,
- item);
- }
- }
- }
-
- for (work = g_list_reverse (list->undo_unselection); work; work = work->next)
- gtk_list_select_child (list, GTK_WIDGET (work->data));
-
-
-}
-
-void
-gtk_list_toggle_row (GtkList *list,
- GtkWidget *item)
-{
- g_return_if_fail (GTK_IS_LIST (list));
- g_return_if_fail (GTK_IS_LIST_ITEM (item));
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- case GTK_SELECTION_SINGLE:
- if (item->state == GTK_STATE_SELECTED)
- {
- gtk_list_unselect_child (list, item);
- return;
- }
- case GTK_SELECTION_BROWSE:
- gtk_list_select_child (list, item);
- break;
- }
-}
-
-void
-gtk_list_toggle_focus_row (GtkList *list)
-{
- GtkContainer *container;
- gint focus_row;
-
- g_return_if_fail (list != 0);
- g_return_if_fail (GTK_IS_LIST (list));
-
- container = GTK_CONTAINER (list);
-
- if (list_has_grab (list) || !container->focus_child)
- return;
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- gtk_list_toggle_row (list, container->focus_child);
- break;
- case GTK_SELECTION_MULTIPLE:
- if ((focus_row = g_list_index (list->children, container->focus_child))
- < 0)
- return;
-
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- list->anchor = focus_row;
- list->drag_pos = focus_row;
- list->undo_focus_child = container->focus_child;
-
- if (list->add_mode)
- gtk_list_fake_toggle_row (list, container->focus_child);
- else
- gtk_list_fake_unselect_all (list, container->focus_child);
-
- gtk_list_end_selection (list);
- break;
- default:
- break;
- }
-}
-
-void
-gtk_list_toggle_add_mode (GtkList *list)
-{
- GtkContainer *container;
-
- g_return_if_fail (list != 0);
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list) ||
- list->selection_mode != GTK_SELECTION_MULTIPLE)
- return;
-
- container = GTK_CONTAINER (list);
-
- if (list->add_mode)
- {
- list->add_mode = FALSE;
- list->anchor_state = GTK_STATE_SELECTED;
- }
- else
- list->add_mode = TRUE;
-
- if (container->focus_child)
- gtk_widget_queue_draw (container->focus_child);
-}
-
-void
-gtk_list_undo_selection (GtkList *list)
-{
- GList *work;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list->selection_mode != GTK_SELECTION_MULTIPLE ||
- list_has_grab (list))
- return;
-
- if (list->anchor >= 0)
- gtk_list_end_selection (list);
-
- if (!(list->undo_selection || list->undo_unselection))
- {
- gtk_list_unselect_all (list);
- return;
- }
-
- for (work = list->undo_selection; work; work = work->next)
- gtk_list_select_child (list, GTK_WIDGET (work->data));
-
- for (work = list->undo_unselection; work; work = work->next)
- gtk_list_unselect_child (list, GTK_WIDGET (work->data));
-
- if (list->undo_focus_child)
- {
- GtkContainer *container;
-
- container = GTK_CONTAINER (list);
-
- if (container->focus_child &&
- gtk_widget_has_focus (container->focus_child))
- gtk_widget_grab_focus (list->undo_focus_child);
- else
- gtk_container_set_focus_child (container, list->undo_focus_child);
- }
-
- list->undo_focus_child = NULL;
-
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-}
-
-
-/* Private GtkList Selection Methods :
- *
- * gtk_real_list_select_child
- * gtk_real_list_unselect_child
- */
-static void
-gtk_real_list_select_child (GtkList *list,
- GtkWidget *child)
-{
- g_return_if_fail (GTK_IS_LIST (list));
- g_return_if_fail (GTK_IS_LIST_ITEM (child));
-
- switch (child->state)
- {
- case GTK_STATE_SELECTED:
- case GTK_STATE_INSENSITIVE:
- break;
- default:
- gtk_list_item_select (GTK_LIST_ITEM (child));
- break;
- }
-}
-
-static void
-gtk_real_list_unselect_child (GtkList *list,
- GtkWidget *child)
-{
- g_return_if_fail (GTK_IS_LIST (list));
- g_return_if_fail (GTK_IS_LIST_ITEM (child));
-
- if (child->state == GTK_STATE_SELECTED)
- gtk_list_item_deselect (GTK_LIST_ITEM (child));
-}
-
-
-/* Private GtkList Selection Functions :
- *
- * gtk_list_set_anchor
- * gtk_list_fake_unselect_all
- * gtk_list_fake_toggle_row
- * gtk_list_update_extended_selection
- * gtk_list_reset_extended_selection
- */
-static void
-gtk_list_set_anchor (GtkList *list,
- gboolean add_mode,
- gint anchor,
- GtkWidget *undo_focus_child)
-{
- GList *work;
-
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list->selection_mode != GTK_SELECTION_MULTIPLE || list->anchor >= 0)
- return;
-
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- if ((work = g_list_nth (list->children, anchor)))
- {
- if (add_mode)
- gtk_list_fake_toggle_row (list, GTK_WIDGET (work->data));
- else
- {
- gtk_list_fake_unselect_all (list, GTK_WIDGET (work->data));
- list->anchor_state = GTK_STATE_SELECTED;
- }
- }
-
- list->anchor = anchor;
- list->drag_pos = anchor;
- list->undo_focus_child = undo_focus_child;
-}
-
-static void
-gtk_list_fake_unselect_all (GtkList *list,
- GtkWidget *item)
-{
- GList *work;
-
- if (item && item->state == GTK_STATE_NORMAL)
- gtk_widget_set_state (item, GTK_STATE_SELECTED);
-
- list->undo_selection = list->selection;
- list->selection = NULL;
-
- for (work = list->undo_selection; work; work = work->next)
- if (work->data != item)
- gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_NORMAL);
-}
-
-static void
-gtk_list_fake_toggle_row (GtkList *list,
- GtkWidget *item)
-{
- if (!item)
- return;
-
- if (item->state == GTK_STATE_NORMAL)
- {
- list->anchor_state = GTK_STATE_SELECTED;
- gtk_widget_set_state (item, GTK_STATE_SELECTED);
- }
- else
- {
- list->anchor_state = GTK_STATE_NORMAL;
- gtk_widget_set_state (item, GTK_STATE_NORMAL);
- }
-}
-
-static void
-gtk_list_update_extended_selection (GtkList *list,
- gint row)
-{
- gint i;
- GList *work;
- gint s1 = -1;
- gint s2 = -1;
- gint e1 = -1;
- gint e2 = -1;
- gint length;
-
- if (row < 0)
- row = 0;
-
- length = g_list_length (list->children);
- if (row >= length)
- row = length - 1;
-
- if (list->selection_mode != GTK_SELECTION_MULTIPLE || !list->anchor < 0)
- return;
-
- /* extending downwards */
- if (row > list->drag_pos && list->anchor <= list->drag_pos)
- {
- s2 = list->drag_pos + 1;
- e2 = row;
- }
- /* extending upwards */
- else if (row < list->drag_pos && list->anchor >= list->drag_pos)
- {
- s2 = row;
- e2 = list->drag_pos - 1;
- }
- else if (row < list->drag_pos && list->anchor < list->drag_pos)
- {
- e1 = list->drag_pos;
- /* row and drag_pos on different sides of anchor :
- take back the selection between anchor and drag_pos,
- select between anchor and row */
- if (row < list->anchor)
- {
- s1 = list->anchor + 1;
- s2 = row;
- e2 = list->anchor - 1;
- }
- /* take back the selection between anchor and drag_pos */
- else
- s1 = row + 1;
- }
- else if (row > list->drag_pos && list->anchor > list->drag_pos)
- {
- s1 = list->drag_pos;
- /* row and drag_pos on different sides of anchor :
- take back the selection between anchor and drag_pos,
- select between anchor and row */
- if (row > list->anchor)
- {
- e1 = list->anchor - 1;
- s2 = list->anchor + 1;
- e2 = row;
- }
- /* take back the selection between anchor and drag_pos */
- else
- e1 = row - 1;
- }
-
- list->drag_pos = row;
-
- /* restore the elements between s1 and e1 */
- if (s1 >= 0)
- {
- for (i = s1, work = g_list_nth (list->children, i); i <= e1;
- i++, work = work->next)
- {
- if (g_list_find (list->selection, work->data))
- gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_SELECTED);
- else
- gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_NORMAL);
- }
- }
-
- /* extend the selection between s2 and e2 */
- if (s2 >= 0)
- {
- for (i = s2, work = g_list_nth (list->children, i); i <= e2;
- i++, work = work->next)
- if (GTK_WIDGET (work->data)->state != list->anchor_state)
- gtk_widget_set_state (GTK_WIDGET (work->data), list->anchor_state);
- }
-}
-
-static void
-gtk_list_reset_extended_selection (GtkList *list)
-{
- g_return_if_fail (list != 0);
- g_return_if_fail (GTK_IS_LIST (list));
-
- g_list_free (list->undo_selection);
- g_list_free (list->undo_unselection);
- list->undo_selection = NULL;
- list->undo_unselection = NULL;
-
- list->anchor = -1;
- list->drag_pos = -1;
- list->undo_focus_child = GTK_CONTAINER (list)->focus_child;
-}
-
-/* Public GtkList Scroll Methods :
- *
- * gtk_list_scroll_horizontal
- * gtk_list_scroll_vertical
- */
-void
-gtk_list_scroll_horizontal (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position)
-{
- GtkAdjustment *adj;
-
- g_return_if_fail (list != 0);
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list))
- return;
-
- if (!(adj =
- gtk_object_get_data_by_id (GTK_OBJECT (list), hadjustment_key_id)))
- return;
-
- switch (scroll_type)
- {
- case GTK_SCROLL_STEP_UP:
- case GTK_SCROLL_STEP_BACKWARD:
- adj->value = CLAMP (adj->value - adj->step_increment, adj->lower,
- adj->upper - adj->page_size);
- break;
- case GTK_SCROLL_STEP_DOWN:
- case GTK_SCROLL_STEP_FORWARD:
- adj->value = CLAMP (adj->value + adj->step_increment, adj->lower,
- adj->upper - adj->page_size);
- break;
- case GTK_SCROLL_PAGE_UP:
- case GTK_SCROLL_PAGE_BACKWARD:
- adj->value = CLAMP (adj->value - adj->page_increment, adj->lower,
- adj->upper - adj->page_size);
- break;
- case GTK_SCROLL_PAGE_DOWN:
- case GTK_SCROLL_PAGE_FORWARD:
- adj->value = CLAMP (adj->value + adj->page_increment, adj->lower,
- adj->upper - adj->page_size);
- break;
- case GTK_SCROLL_JUMP:
- adj->value = CLAMP (adj->lower + (adj->upper - adj->lower) * position,
- adj->lower, adj->upper - adj->page_size);
- break;
- default:
- break;
- }
- gtk_adjustment_value_changed (adj);
-}
-
-void
-gtk_list_scroll_vertical (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position)
-{
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (list_has_grab (list))
- return;
-
- if (list->selection_mode == GTK_SELECTION_MULTIPLE)
- {
- GtkContainer *container;
-
- if (list->anchor >= 0)
- return;
-
- container = GTK_CONTAINER (list);
- list->undo_focus_child = container->focus_child;
- gtk_list_move_focus_child (list, scroll_type, position);
- if (container->focus_child != list->undo_focus_child && !list->add_mode)
- {
- gtk_list_unselect_all (list);
- gtk_list_select_child (list, container->focus_child);
- }
- }
- else
- gtk_list_move_focus_child (list, scroll_type, position);
-}
-
-
-/* Private GtkList Scroll/Focus Functions :
- *
- * gtk_list_move_focus_child
- * gtk_list_horizontal_timeout
- * gtk_list_vertical_timeout
- */
-static void
-gtk_list_move_focus_child (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position)
-{
- GtkContainer *container;
- GList *work;
- GtkWidget *item;
- GtkAdjustment *adj;
- gint new_value;
-
- g_return_if_fail (list != 0);
- g_return_if_fail (GTK_IS_LIST (list));
-
- container = GTK_CONTAINER (list);
-
- if (container->focus_child)
- work = g_list_find (list->children, container->focus_child);
- else
- work = list->children;
-
- if (!work)
- return;
-
- switch (scroll_type)
- {
- case GTK_SCROLL_STEP_BACKWARD:
- work = work->prev;
- if (work)
- gtk_widget_grab_focus (GTK_WIDGET (work->data));
- break;
- case GTK_SCROLL_STEP_FORWARD:
- work = work->next;
- if (work)
- gtk_widget_grab_focus (GTK_WIDGET (work->data));
- break;
- case GTK_SCROLL_PAGE_BACKWARD:
- if (!work->prev)
- return;
-
- item = work->data;
- adj = gtk_object_get_data_by_id (GTK_OBJECT (list), vadjustment_key_id);
-
- if (adj)
- {
- gboolean correct = FALSE;
-
- new_value = adj->value;
-
- if (item->allocation.y <= adj->value)
- {
- new_value = MAX (item->allocation.y + item->allocation.height
- - adj->page_size, adj->lower);
- correct = TRUE;
- }
-
- if (item->allocation.y > new_value)
- for (; work; work = work->prev)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y <= new_value &&
- item->allocation.y + item->allocation.height > new_value)
- break;
- }
- else
- for (; work; work = work->next)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y <= new_value &&
- item->allocation.y + item->allocation.height > new_value)
- break;
- }
-
- if (correct && work && work->next && item->allocation.y < new_value)
- item = work->next->data;
- }
- else
- item = list->children->data;
-
- gtk_widget_grab_focus (item);
- break;
- case GTK_SCROLL_PAGE_FORWARD:
- if (!work->next)
- return;
-
- item = work->data;
- adj = gtk_object_get_data_by_id (GTK_OBJECT (list), vadjustment_key_id);
-
- if (adj)
- {
- gboolean correct = FALSE;
-
- new_value = adj->value;
-
- if (item->allocation.y + item->allocation.height >=
- adj->value + adj->page_size)
- {
- new_value = item->allocation.y;
- correct = TRUE;
- }
-
- new_value = MIN (new_value + adj->page_size, adj->upper);
-
- if (item->allocation.y > new_value)
- for (; work; work = work->prev)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y <= new_value &&
- item->allocation.y + item->allocation.height > new_value)
- break;
- }
- else
- for (; work; work = work->next)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y <= new_value &&
- item->allocation.y + item->allocation.height > new_value)
- break;
- }
-
- if (correct && work && work->prev &&
- item->allocation.y + item->allocation.height - 1 > new_value)
- item = work->prev->data;
- }
- else
- item = g_list_last (work)->data;
-
- gtk_widget_grab_focus (item);
- break;
- case GTK_SCROLL_JUMP:
- new_value = GTK_WIDGET(list)->allocation.height * CLAMP (position, 0, 1);
-
- for (item = NULL, work = list->children; work; work =work->next)
- {
- item = GTK_WIDGET (work->data);
- if (item->allocation.y <= new_value &&
- item->allocation.y + item->allocation.height > new_value)
- break;
- }
-
- gtk_widget_grab_focus (item);
- break;
- default:
- break;
- }
-}
-
-static void
-do_fake_motion (GtkWidget *list)
-{
- GdkEvent *event = gdk_event_new (GDK_MOTION_NOTIFY);
-
- event->motion.send_event = TRUE;
-
- gtk_list_motion_notify (list, (GdkEventMotion *)event);
- gdk_event_free (event);
-}
-
-static gint
-gtk_list_horizontal_timeout (GtkWidget *list)
-{
- GTK_LIST (list)->htimer = 0;
- do_fake_motion (list);
-
- return FALSE;
-}
-
-static gint
-gtk_list_vertical_timeout (GtkWidget *list)
-{
- GTK_LIST (list)->vtimer = 0;
- do_fake_motion (list);
-
- return FALSE;
-}
-
-
-/* Private GtkListItem Signal Functions :
- *
- * gtk_list_signal_toggle_focus_row
- * gtk_list_signal_select_all
- * gtk_list_signal_unselect_all
- * gtk_list_signal_undo_selection
- * gtk_list_signal_start_selection
- * gtk_list_signal_end_selection
- * gtk_list_signal_extend_selection
- * gtk_list_signal_scroll_horizontal
- * gtk_list_signal_scroll_vertical
- * gtk_list_signal_toggle_add_mode
- * gtk_list_signal_item_select
- * gtk_list_signal_item_deselect
- * gtk_list_signal_item_toggle
- */
-static void
-gtk_list_signal_toggle_focus_row (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_toggle_focus_row (list);
-}
-
-static void
-gtk_list_signal_select_all (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_select_all (list);
-}
-
-static void
-gtk_list_signal_unselect_all (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_unselect_all (list);
-}
-
-static void
-gtk_list_signal_undo_selection (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_undo_selection (list);
-}
-
-static void
-gtk_list_signal_start_selection (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_start_selection (list);
-}
-
-static void
-gtk_list_signal_end_selection (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_end_selection (list);
-}
-
-static void
-gtk_list_signal_extend_selection (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_extend_selection (list, scroll_type, position,
- auto_start_selection);
-}
-
-static void
-gtk_list_signal_scroll_horizontal (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_scroll_horizontal (list, scroll_type, position);
-}
-
-static void
-gtk_list_signal_scroll_vertical (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_scroll_vertical (list, scroll_type, position);
-}
-
-static void
-gtk_list_signal_toggle_add_mode (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_toggle_add_mode (list);
-}
-
-static void
-gtk_list_signal_item_select (GtkListItem *list_item,
- GtkList *list)
-{
- GList *selection;
- GList *tmp_list;
- GList *sel_list;
-
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (GTK_WIDGET (list_item)->state != GTK_STATE_SELECTED)
- return;
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
- sel_list = NULL;
- selection = list->selection;
-
- while (selection)
- {
- tmp_list = selection;
- selection = selection->next;
-
- if (tmp_list->data == list_item)
- sel_list = tmp_list;
- else
- gtk_list_item_deselect (GTK_LIST_ITEM (tmp_list->data));
- }
-
- if (!sel_list)
- {
- list->selection = g_list_prepend (list->selection, list_item);
- g_object_ref (list_item);
- }
- gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECTION_CHANGED]);
- break;
- case GTK_SELECTION_MULTIPLE:
- if (list->anchor >= 0)
- return;
- }
-}
-
-static void
-gtk_list_signal_item_deselect (GtkListItem *list_item,
- GtkList *list)
-{
- GList *node;
-
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- if (GTK_WIDGET (list_item)->state != GTK_STATE_NORMAL)
- return;
-
- node = g_list_find (list->selection, list_item);
-
- if (node)
- {
- list->selection = g_list_remove_link (list->selection, node);
- g_list_free_1 (node);
- g_object_unref (list_item);
- gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECTION_CHANGED]);
- }
-}
-
-static void
-gtk_list_signal_item_toggle (GtkListItem *list_item,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
- g_return_if_fail (GTK_IS_LIST (list));
-
- if ((list->selection_mode == GTK_SELECTION_BROWSE ||
- list->selection_mode == GTK_SELECTION_MULTIPLE) &&
- GTK_WIDGET (list_item)->state == GTK_STATE_NORMAL)
- {
- gtk_widget_set_state (GTK_WIDGET (list_item), GTK_STATE_SELECTED);
- return;
- }
-
- switch (GTK_WIDGET (list_item)->state)
- {
- case GTK_STATE_SELECTED:
- gtk_list_signal_item_select (list_item, list);
- break;
- case GTK_STATE_NORMAL:
- gtk_list_signal_item_deselect (list_item, list);
- break;
- default:
- break;
- }
-}
-
-static void
-gtk_list_signal_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- GtkList *list)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (widget));
- g_return_if_fail (GTK_IS_LIST (list));
-
- gtk_list_drag_begin (GTK_WIDGET (list), context);
-}
-
-static void
-gtk_list_drag_begin (GtkWidget *widget,
- GdkDragContext *context)
-{
- GtkList *list;
-
- g_return_if_fail (GTK_IS_LIST (widget));
- g_return_if_fail (context != NULL);
-
- list = GTK_LIST (widget);
-
- if (list->drag_selection)
- {
- gtk_list_end_drag_selection (list);
-
- switch (list->selection_mode)
- {
- case GTK_SELECTION_MULTIPLE:
- gtk_list_end_selection (list);
- break;
- case GTK_SELECTION_SINGLE:
- list->undo_focus_child = NULL;
- break;
- default:
- break;
- }
- }
-}
-
-#include "gtkaliasdef.c"
diff --git a/gtk/gtklist.h b/gtk/gtklist.h
deleted file mode 100644
index 3a2f13f13b..0000000000
--- a/gtk/gtklist.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_LIST_C__)
-
-#ifndef __GTK_LIST_H__
-#define __GTK_LIST_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_LIST (gtk_list_get_type ())
-#define GTK_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LIST, GtkList))
-#define GTK_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LIST, GtkListClass))
-#define GTK_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LIST))
-#define GTK_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LIST))
-#define GTK_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LIST, GtkListClass))
-
-
-typedef struct _GtkList GtkList;
-typedef struct _GtkListClass GtkListClass;
-
-struct _GtkList
-{
- GtkContainer container;
-
- GList *children;
- GList *selection;
-
- GList *undo_selection;
- GList *undo_unselection;
-
- GtkWidget *last_focus_child;
- GtkWidget *undo_focus_child;
-
- guint htimer;
- guint vtimer;
-
- gint anchor;
- gint drag_pos;
- GtkStateType anchor_state;
-
- guint selection_mode : 2;
- guint drag_selection:1;
- guint add_mode:1;
-};
-
-struct _GtkListClass
-{
- GtkContainerClass parent_class;
-
- void (* selection_changed) (GtkList *list);
- void (* select_child) (GtkList *list,
- GtkWidget *child);
- void (* unselect_child) (GtkList *list,
- GtkWidget *child);
-};
-
-
-GType gtk_list_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_list_new (void);
-void gtk_list_insert_items (GtkList *list,
- GList *items,
- gint position);
-void gtk_list_append_items (GtkList *list,
- GList *items);
-void gtk_list_prepend_items (GtkList *list,
- GList *items);
-void gtk_list_remove_items (GtkList *list,
- GList *items);
-void gtk_list_remove_items_no_unref (GtkList *list,
- GList *items);
-void gtk_list_clear_items (GtkList *list,
- gint start,
- gint end);
-void gtk_list_select_item (GtkList *list,
- gint item);
-void gtk_list_unselect_item (GtkList *list,
- gint item);
-void gtk_list_select_child (GtkList *list,
- GtkWidget *child);
-void gtk_list_unselect_child (GtkList *list,
- GtkWidget *child);
-gint gtk_list_child_position (GtkList *list,
- GtkWidget *child);
-void gtk_list_set_selection_mode (GtkList *list,
- GtkSelectionMode mode);
-
-void gtk_list_extend_selection (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection);
-void gtk_list_start_selection (GtkList *list);
-void gtk_list_end_selection (GtkList *list);
-void gtk_list_select_all (GtkList *list);
-void gtk_list_unselect_all (GtkList *list);
-void gtk_list_scroll_horizontal (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position);
-void gtk_list_scroll_vertical (GtkList *list,
- GtkScrollType scroll_type,
- gfloat position);
-void gtk_list_toggle_add_mode (GtkList *list);
-void gtk_list_toggle_focus_row (GtkList *list);
-void gtk_list_toggle_row (GtkList *list,
- GtkWidget *item);
-void gtk_list_undo_selection (GtkList *list);
-void gtk_list_end_drag_selection (GtkList *list);
-
-G_END_DECLS
-
-#endif /* __GTK_LIST_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtklistitem.c b/gtk/gtklistitem.c
deleted file mode 100644
index 4615841525..0000000000
--- a/gtk/gtklistitem.c
+++ /dev/null
@@ -1,635 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <gdk/gdkkeysyms.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#define __GTK_LIST_ITEM_C__
-
-#include "gtkbindings.h"
-#include "gtklabel.h"
-#include "gtklistitem.h"
-#include "gtklist.h"
-#include "gtkmarshalers.h"
-#include "gtksignal.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-
-enum
-{
- TOGGLE_FOCUS_ROW,
- SELECT_ALL,
- UNSELECT_ALL,
- UNDO_SELECTION,
- START_SELECTION,
- END_SELECTION,
- TOGGLE_ADD_MODE,
- EXTEND_SELECTION,
- SCROLL_VERTICAL,
- SCROLL_HORIZONTAL,
- LAST_SIGNAL
-};
-
-static void gtk_list_item_class_init (GtkListItemClass *klass);
-static void gtk_list_item_init (GtkListItem *list_item);
-static void gtk_list_item_realize (GtkWidget *widget);
-static void gtk_list_item_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_list_item_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_list_item_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static gint gtk_list_item_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_list_item_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static void gtk_real_list_item_select (GtkItem *item);
-static void gtk_real_list_item_deselect (GtkItem *item);
-static void gtk_real_list_item_toggle (GtkItem *item);
-
-
-static GtkItemClass *parent_class = NULL;
-static guint list_item_signals[LAST_SIGNAL] = {0};
-
-
-GtkType
-gtk_list_item_get_type (void)
-{
- static GtkType list_item_type = 0;
-
- if (!list_item_type)
- {
- static const GtkTypeInfo list_item_info =
- {
- "GtkListItem",
- sizeof (GtkListItem),
- sizeof (GtkListItemClass),
- (GtkClassInitFunc) gtk_list_item_class_init,
- (GtkObjectInitFunc) gtk_list_item_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkListItem");
- list_item_type = gtk_type_unique (gtk_item_get_type (), &list_item_info);
- }
-
- return list_item_type;
-}
-
-static void
-gtk_list_item_class_init (GtkListItemClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkItemClass *item_class;
- GtkBindingSet *binding_set;
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- item_class = (GtkItemClass*) class;
-
- parent_class = gtk_type_class (gtk_item_get_type ());
-
- widget_class->realize = gtk_list_item_realize;
- widget_class->size_request = gtk_list_item_size_request;
- widget_class->size_allocate = gtk_list_item_size_allocate;
- widget_class->style_set = gtk_list_item_style_set;
- widget_class->button_press_event = gtk_list_item_button_press;
- widget_class->expose_event = gtk_list_item_expose;
-
- item_class->select = gtk_real_list_item_select;
- item_class->deselect = gtk_real_list_item_deselect;
- item_class->toggle = gtk_real_list_item_toggle;
-
- class->toggle_focus_row = NULL;
- class->select_all = NULL;
- class->unselect_all = NULL;
- class->undo_selection = NULL;
- class->start_selection = NULL;
- class->end_selection = NULL;
- class->extend_selection = NULL;
- class->scroll_horizontal = NULL;
- class->scroll_vertical = NULL;
- class->toggle_add_mode = NULL;
-
- list_item_signals[TOGGLE_FOCUS_ROW] =
- gtk_signal_new (I_("toggle-focus-row"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, toggle_focus_row),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[SELECT_ALL] =
- gtk_signal_new (I_("select-all"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, select_all),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[UNSELECT_ALL] =
- gtk_signal_new (I_("unselect-all"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, unselect_all),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[UNDO_SELECTION] =
- gtk_signal_new (I_("undo-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, undo_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[START_SELECTION] =
- gtk_signal_new (I_("start-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, start_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[END_SELECTION] =
- gtk_signal_new (I_("end-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, end_selection),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[TOGGLE_ADD_MODE] =
- gtk_signal_new (I_("toggle-add-mode"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, toggle_add_mode),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- list_item_signals[EXTEND_SELECTION] =
- gtk_signal_new (I_("extend-selection"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, extend_selection),
- _gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT, GTK_TYPE_BOOL);
- list_item_signals[SCROLL_VERTICAL] =
- gtk_signal_new (I_("scroll-vertical"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, scroll_vertical),
- _gtk_marshal_VOID__ENUM_FLOAT,
- GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT);
- list_item_signals[SCROLL_HORIZONTAL] =
- gtk_signal_new (I_("scroll-horizontal"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkListItemClass, scroll_horizontal),
- _gtk_marshal_VOID__ENUM_FLOAT,
- GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT);
-
- binding_set = gtk_binding_set_by_class (class);
- gtk_binding_entry_add_signal (binding_set, GDK_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Up, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Down, 0,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Home, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_End, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End, GDK_CONTROL_MASK,
- "scroll-vertical", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Up, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Page_Down, GDK_SHIFT_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_Home,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_End,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0, GTK_TYPE_BOOL, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End,
- GDK_SHIFT_MASK | GDK_CONTROL_MASK,
- "extend-selection", 3,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0, GTK_TYPE_BOOL, TRUE);
-
-
- gtk_binding_entry_add_signal (binding_set, GDK_Left, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Right, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_Home, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Home, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 0.0);
- gtk_binding_entry_add_signal (binding_set, GDK_End, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_End, 0,
- "scroll-horizontal", 2,
- GTK_TYPE_ENUM, GTK_SCROLL_JUMP,
- GTK_TYPE_FLOAT, 1.0);
-
- gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
- "undo-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_space, 0,
- "toggle-focus-row", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Space, 0,
- "toggle-focus-row", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK,
- "toggle-add-mode", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Space, GDK_CONTROL_MASK,
- "toggle-add-mode", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_slash, GDK_CONTROL_MASK,
- "select-all", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Divide, GDK_CONTROL_MASK,
- "select-all", 0);
- gtk_binding_entry_add_signal (binding_set, '\\', GDK_CONTROL_MASK,
- "unselect-all", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_L,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK,
- "end-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK,
- "end-selection", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
- GDK_RELEASE_MASK | GDK_SHIFT_MASK |
- GDK_CONTROL_MASK,
- "end-selection", 0);
-}
-
-static void
-gtk_list_item_init (GtkListItem *list_item)
-{
- gtk_widget_set_can_focus (GTK_WIDGET (list_item), TRUE);
-}
-
-GtkWidget*
-gtk_list_item_new (void)
-{
- return GTK_WIDGET (gtk_type_new (gtk_list_item_get_type ()));
-}
-
-GtkWidget*
-gtk_list_item_new_with_label (const gchar *label)
-{
- GtkWidget *list_item;
- GtkWidget *label_widget;
-
- list_item = gtk_list_item_new ();
- label_widget = gtk_label_new (label);
- gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5);
- gtk_misc_set_padding (GTK_MISC (label_widget), 0, 1);
-
- gtk_container_add (GTK_CONTAINER (list_item), label_widget);
- gtk_widget_show (label_widget);
-
- return list_item;
-}
-
-void
-gtk_list_item_select (GtkListItem *list_item)
-{
- gtk_item_select (GTK_ITEM (list_item));
-}
-
-void
-gtk_list_item_deselect (GtkListItem *list_item)
-{
- gtk_item_deselect (GTK_ITEM (list_item));
-}
-
-
-static void
-gtk_list_item_realize (GtkWidget *widget)
-{
- GdkWindowAttr attributes;
- gint attributes_mask;
-
- /*GTK_WIDGET_CLASS (parent_class)->realize (widget);*/
-
- g_return_if_fail (GTK_IS_LIST_ITEM (widget));
-
- gtk_widget_set_realized (widget, TRUE);
-
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = (gtk_widget_get_events (widget) |
- GDK_EXPOSURE_MASK |
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_BUTTON1_MOTION_MASK |
- GDK_POINTER_MOTION_HINT_MASK |
- GDK_KEY_PRESS_MASK |
- GDK_KEY_RELEASE_MASK |
- GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK);
-
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, widget);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_STATE_NORMAL]);
-}
-
-static void
-gtk_list_item_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkBin *bin;
- GtkRequisition child_requisition;
- gint focus_width;
- gint focus_pad;
-
- g_return_if_fail (GTK_IS_LIST_ITEM (widget));
- g_return_if_fail (requisition != NULL);
-
- bin = GTK_BIN (widget);
- gtk_widget_style_get (widget,
- "focus-line-width", &focus_width,
- "focus-padding", &focus_pad,
- NULL);
-
- requisition->width = 2 * (GTK_CONTAINER (widget)->border_width +
- widget->style->xthickness + focus_width + focus_pad - 1);
- requisition->height = 2 * (GTK_CONTAINER (widget)->border_width +
- focus_width + focus_pad - 1);
-
- if (bin->child && gtk_widget_get_visible (bin->child))
- {
- gtk_widget_size_request (bin->child, &child_requisition);
-
- requisition->width += child_requisition.width;
- requisition->height += child_requisition.height;
- }
-}
-
-static void
-gtk_list_item_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkBin *bin;
- GtkAllocation child_allocation;
-
- g_return_if_fail (GTK_IS_LIST_ITEM (widget));
- g_return_if_fail (allocation != NULL);
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- bin = GTK_BIN (widget);
-
- if (bin->child)
- {
- child_allocation.x = (GTK_CONTAINER (widget)->border_width +
- widget->style->xthickness);
- child_allocation.y = GTK_CONTAINER (widget)->border_width;
- child_allocation.width = allocation->width - child_allocation.x * 2;
- child_allocation.height = allocation->height - child_allocation.y * 2;
-
- gtk_widget_size_allocate (bin->child, &child_allocation);
- }
-}
-
-static void
-gtk_list_item_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- GtkStyle *style;
-
- g_return_if_fail (widget != NULL);
-
- if (previous_style && gtk_widget_get_realized (widget))
- {
- style = gtk_widget_get_style (widget);
- gdk_window_set_background (gtk_widget_get_window (widget),
- &style->base[gtk_widget_get_state (widget)]);
- }
-}
-
-static gint
-gtk_list_item_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- if (event->type == GDK_BUTTON_PRESS && !gtk_widget_has_focus (widget))
- gtk_widget_grab_focus (widget);
-
- return FALSE;
-}
-
-static gint
-gtk_list_item_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- g_return_val_if_fail (widget != NULL, FALSE);
-
- if (gtk_widget_is_drawable (widget))
- {
- if (widget->state == GTK_STATE_NORMAL)
- {
- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
- gdk_window_clear_area (widget->window, event->area.x, event->area.y,
- event->area.width, event->area.height);
- }
- else
- {
- gtk_paint_flat_box (widget->style, widget->window,
- widget->state, GTK_SHADOW_ETCHED_OUT,
- &event->area, widget, "listitem",
- 0, 0, -1, -1);
- }
-
- GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
-
- if (gtk_widget_has_focus (widget))
- {
- if (GTK_IS_LIST (widget->parent) && GTK_LIST (widget->parent)->add_mode)
- gtk_paint_focus (widget->style, widget->window, gtk_widget_get_state (widget),
- NULL, widget, "add-mode",
- 0, 0, widget->allocation.width, widget->allocation.height);
- else
- gtk_paint_focus (widget->style, widget->window, gtk_widget_get_state (widget),
- NULL, widget, NULL,
- 0, 0, widget->allocation.width, widget->allocation.height);
- }
- }
-
- return FALSE;
-}
-
-static void
-gtk_real_list_item_select (GtkItem *item)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (item));
-
- switch (GTK_WIDGET (item)->state)
- {
- case GTK_STATE_SELECTED:
- case GTK_STATE_INSENSITIVE:
- break;
- default:
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
- break;
- }
-}
-
-static void
-gtk_real_list_item_deselect (GtkItem *item)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (item));
-
- if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
-}
-
-static void
-gtk_real_list_item_toggle (GtkItem *item)
-{
- g_return_if_fail (GTK_IS_LIST_ITEM (item));
-
- switch (GTK_WIDGET (item)->state)
- {
- case GTK_STATE_SELECTED:
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
- break;
- case GTK_STATE_INSENSITIVE:
- break;
- default:
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
- break;
- }
-}
-
-#include "gtkaliasdef.c"
diff --git a/gtk/gtklistitem.h b/gtk/gtklistitem.h
deleted file mode 100644
index 9f83a48722..0000000000
--- a/gtk/gtklistitem.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_LIST_ITEM_C__)
-
-#ifndef __GTK_LIST_ITEM_H__
-#define __GTK_LIST_ITEM_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-
-#define GTK_TYPE_LIST_ITEM (gtk_list_item_get_type ())
-#define GTK_LIST_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LIST_ITEM, GtkListItem))
-#define GTK_LIST_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LIST_ITEM, GtkListItemClass))
-#define GTK_IS_LIST_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LIST_ITEM))
-#define GTK_IS_LIST_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LIST_ITEM))
-#define GTK_LIST_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LIST_ITEM, GtkListItemClass))
-
-
-typedef struct _GtkListItem GtkListItem;
-typedef struct _GtkListItemClass GtkListItemClass;
-
-struct _GtkListItem
-{
- GtkItem item;
-};
-
-struct _GtkListItemClass
-{
- GtkItemClass parent_class;
-
- void (*toggle_focus_row) (GtkListItem *list_item);
- void (*select_all) (GtkListItem *list_item);
- void (*unselect_all) (GtkListItem *list_item);
- void (*undo_selection) (GtkListItem *list_item);
- void (*start_selection) (GtkListItem *list_item);
- void (*end_selection) (GtkListItem *list_item);
- void (*extend_selection) (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection);
- void (*scroll_horizontal) (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position);
- void (*scroll_vertical) (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position);
- void (*toggle_add_mode) (GtkListItem *list_item);
-};
-
-
-GType gtk_list_item_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_list_item_new (void);
-GtkWidget* gtk_list_item_new_with_label (const gchar *label);
-void gtk_list_item_select (GtkListItem *list_item);
-void gtk_list_item_deselect (GtkListItem *list_item);
-
-
-
-G_END_DECLS
-
-
-#endif /* __GTK_LIST_ITEM_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkliststore.h b/gtk/gtkliststore.h
index 6de426e89c..51cbfb3278 100644
--- a/gtk/gtkliststore.h
+++ b/gtk/gtkliststore.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 082eb0fbdb..ed88d3898d 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -186,12 +186,6 @@ static void gtk_quit_destroy (GtkQuitFunction *quitf);
static gint gtk_invoke_key_snoopers (GtkWidget *grab_widget,
GdkEvent *event);
-static void gtk_destroy_closure (gpointer data);
-static gboolean gtk_invoke_idle_timeout (gpointer data);
-static void gtk_invoke_input (gpointer data,
- gint source,
- GdkInputCondition condition);
-
#if 0
static void gtk_error (gchar *str);
static void gtk_warning (gchar *str);
@@ -1069,13 +1063,6 @@ gtk_init_check_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof
#endif
-void
-gtk_exit (gint errorcode)
-{
- exit (errorcode);
-}
-
-
/**
* gtk_set_locale:
*
@@ -2076,175 +2063,6 @@ gtk_quit_remove_by_data (gpointer data)
}
}
-guint
-gtk_timeout_add_full (guint32 interval,
- GtkFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy)
-{
- if (marshal)
- {
- GtkClosure *closure;
-
- closure = g_new (GtkClosure, 1);
- closure->marshal = marshal;
- closure->data = data;
- closure->destroy = destroy;
-
- return g_timeout_add_full (0, interval,
- gtk_invoke_idle_timeout,
- closure,
- gtk_destroy_closure);
- }
- else
- return g_timeout_add_full (0, interval, function, data, destroy);
-}
-
-guint
-gtk_timeout_add (guint32 interval,
- GtkFunction function,
- gpointer data)
-{
- return g_timeout_add_full (0, interval, function, data, NULL);
-}
-
-void
-gtk_timeout_remove (guint tag)
-{
- g_source_remove (tag);
-}
-
-guint
-gtk_idle_add_full (gint priority,
- GtkFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy)
-{
- if (marshal)
- {
- GtkClosure *closure;
-
- closure = g_new (GtkClosure, 1);
- closure->marshal = marshal;
- closure->data = data;
- closure->destroy = destroy;
-
- return g_idle_add_full (priority,
- gtk_invoke_idle_timeout,
- closure,
- gtk_destroy_closure);
- }
- else
- return g_idle_add_full (priority, function, data, destroy);
-}
-
-guint
-gtk_idle_add (GtkFunction function,
- gpointer data)
-{
- return g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, function, data, NULL);
-}
-
-guint
-gtk_idle_add_priority (gint priority,
- GtkFunction function,
- gpointer data)
-{
- return g_idle_add_full (priority, function, data, NULL);
-}
-
-void
-gtk_idle_remove (guint tag)
-{
- g_source_remove (tag);
-}
-
-void
-gtk_idle_remove_by_data (gpointer data)
-{
- if (!g_idle_remove_by_data (data))
- g_warning ("gtk_idle_remove_by_data(%p): no such idle", data);
-}
-
-guint
-gtk_input_add_full (gint source,
- GdkInputCondition condition,
- GdkInputFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy)
-{
- if (marshal)
- {
- GtkClosure *closure;
-
- closure = g_new (GtkClosure, 1);
- closure->marshal = marshal;
- closure->data = data;
- closure->destroy = destroy;
-
- return gdk_input_add_full (source,
- condition,
- (GdkInputFunction) gtk_invoke_input,
- closure,
- (GDestroyNotify) gtk_destroy_closure);
- }
- else
- return gdk_input_add_full (source, condition, function, data, destroy);
-}
-
-void
-gtk_input_remove (guint tag)
-{
- g_source_remove (tag);
-}
-
-static void
-gtk_destroy_closure (gpointer data)
-{
- GtkClosure *closure = data;
-
- if (closure->destroy)
- (closure->destroy) (closure->data);
- g_free (closure);
-}
-
-static gboolean
-gtk_invoke_idle_timeout (gpointer data)
-{
- GtkClosure *closure = data;
-
- GtkArg args[1];
- gint ret_val = FALSE;
- args[0].name = NULL;
- args[0].type = G_TYPE_BOOLEAN;
- args[0].d.pointer_data = &ret_val;
- closure->marshal (NULL, closure->data, 0, args);
- return ret_val;
-}
-
-static void
-gtk_invoke_input (gpointer data,
- gint source,
- GdkInputCondition condition)
-{
- GtkClosure *closure = data;
-
- GtkArg args[3];
- args[0].type = G_TYPE_INT;
- args[0].name = NULL;
- GTK_VALUE_INT (args[0]) = source;
- args[1].type = GDK_TYPE_INPUT_CONDITION;
- args[1].name = NULL;
- GTK_VALUE_FLAGS (args[1]) = condition;
- args[2].type = G_TYPE_NONE;
- args[2].name = NULL;
-
- closure->marshal (NULL, closure->data, 2, args);
-}
-
/**
* gtk_get_current_event:
*
@@ -2501,9 +2319,8 @@ gtk_print (gchar *str)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_signal_connect (GTK_OBJECT (window), "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &window);
gtk_window_set_title (GTK_WINDOW (window), "Messages");
@@ -2552,9 +2369,8 @@ gtk_print (gchar *str)
button = gtk_button_new_with_label ("close");
- gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
- G_CALLBACK (gtk_widget_hide),
- GTK_OBJECT (window));
+ g_signal_connect_swapped (button, "clicked",
+ G_CALLBACK (gtk_widget_hide), window);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
gtk_widget_set_can_default (button, TRUE);
gtk_widget_grab_default (button);
diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h
index 21de92ed42..13f0fcb44a 100644
--- a/gtk/gtkmain.h
+++ b/gtk/gtkmain.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -45,20 +45,6 @@ G_BEGIN_DECLS
*/
#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)
-#ifndef GTK_DISABLE_DEPRECATED
-
-/* Use GDK_PRIORITY_REDRAW */
-#define GTK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
-
-/* Deprecated. Use G_PRIORITY #define's instead
- */
-#define GTK_PRIORITY_HIGH G_PRIORITY_HIGH
-#define GTK_PRIORITY_INTERNAL GTK_PRIORITY_REDRAW
-#define GTK_PRIORITY_DEFAULT G_PRIORITY_DEFAULT_IDLE
-#define GTK_PRIORITY_LOW G_PRIORITY_LOW
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget,
GdkEventKey *event,
gpointer func_data);
@@ -127,10 +113,6 @@ gboolean gtk_init_check_abi_check (int *argc,
#endif
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_exit (gint error_code);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_disable_setlocale (void);
gchar * gtk_set_locale (void);
PangoLanguage *gtk_get_default_language (void);
@@ -170,37 +152,6 @@ guint gtk_quit_add_full (guint main_level,
GDestroyNotify destroy);
void gtk_quit_remove (guint quit_handler_id);
void gtk_quit_remove_by_data (gpointer data);
-#ifndef GTK_DISABLE_DEPRECATED
-guint gtk_timeout_add (guint32 interval,
- GtkFunction function,
- gpointer data);
-guint gtk_timeout_add_full (guint32 interval,
- GtkFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy);
-void gtk_timeout_remove (guint timeout_handler_id);
-
-guint gtk_idle_add (GtkFunction function,
- gpointer data);
-guint gtk_idle_add_priority (gint priority,
- GtkFunction function,
- gpointer data);
-guint gtk_idle_add_full (gint priority,
- GtkFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy);
-void gtk_idle_remove (guint idle_handler_id);
-void gtk_idle_remove_by_data (gpointer data);
-guint gtk_input_add_full (gint source,
- GdkInputCondition condition,
- GdkInputFunction function,
- GtkCallbackMarshal marshal,
- gpointer data,
- GDestroyNotify destroy);
-void gtk_input_remove (guint input_handler_id);
-#endif /* GTK_DISABLE_DEPRECATED */
guint gtk_key_snooper_install (GtkKeySnoopFunc snooper,
gpointer func_data);
diff --git a/gtk/gtkmarshal.list b/gtk/gtkmarshal.list
deleted file mode 100644
index a016dffc6d..0000000000
--- a/gtk/gtkmarshal.list
+++ /dev/null
@@ -1,36 +0,0 @@
-BOOL:NONE
-BOOL:POINTER
-BOOL:POINTER,POINTER,INT,INT
-BOOL:POINTER,INT,INT
-BOOL:POINTER,INT,INT,UINT
-BOOL:POINTER,STRING,STRING,POINTER
-ENUM:ENUM
-INT:POINTER
-INT:POINTER,CHAR,CHAR
-NONE:BOOL
-NONE:BOXED
-NONE:ENUM
-NONE:ENUM,FLOAT
-NONE:ENUM,FLOAT,BOOL
-NONE:INT
-NONE:INT,INT
-NONE:INT,INT,POINTER
-NONE:NONE
-NONE:OBJECT
-NONE:POINTER
-NONE:POINTER,INT
-NONE:POINTER,POINTER
-NONE:POINTER,POINTER,POINTER
-NONE:POINTER,STRING,STRING
-NONE:POINTER,UINT
-NONE:POINTER,UINT,ENUM
-NONE:POINTER,POINTER,UINT,UINT
-NONE:POINTER,INT,INT,POINTER,UINT,UINT
-NONE:POINTER,UINT,UINT
-NONE:POINTER,UINT,UINT
-NONE:STRING
-NONE:STRING,INT,POINTER
-NONE:UINT
-NONE:UINT,POINTER,UINT,ENUM,ENUM,POINTER
-NONE:UINT,POINTER,UINT,UINT,ENUM
-NONE:UINT,STRING
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index b5b9820faa..0bbfae42ac 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -3034,7 +3034,7 @@ get_accel_path (GtkWidget *menu_item,
{
accel_group = gtk_accel_group_from_accel_closure (accel_closure);
- *locked = accel_group->lock_count > 0;
+ *locked = gtk_accel_group_get_is_locked (accel_group);
}
}
}
diff --git a/gtk/gtkmenu.h b/gtk/gtkmenu.h
index 694457a059..6a944c0584 100644
--- a/gtk/gtkmenu.h
+++ b/gtk/gtkmenu.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -203,12 +203,6 @@ void gtk_menu_set_monitor (GtkMenu *menu,
gint gtk_menu_get_monitor (GtkMenu *menu);
GList* gtk_menu_get_for_attach_widget (GtkWidget *widget);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_menu_append(menu,child) gtk_menu_shell_append ((GtkMenuShell *)(menu),(child))
-#define gtk_menu_prepend(menu,child) gtk_menu_shell_prepend ((GtkMenuShell *)(menu),(child))
-#define gtk_menu_insert(menu,child,pos) gtk_menu_shell_insert ((GtkMenuShell *)(menu),(child),(pos))
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_menu_set_reserve_toggle_size (GtkMenu *menu,
gboolean reserve_toggle_size);
gboolean gtk_menu_get_reserve_toggle_size (GtkMenu *menu);
diff --git a/gtk/gtkmenubar.h b/gtk/gtkmenubar.h
index 2acce0b172..050fb4846b 100644
--- a/gtk/gtkmenubar.h
+++ b/gtk/gtkmenubar.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -75,12 +75,6 @@ GtkPackDirection gtk_menu_bar_get_child_pack_direction (GtkMenuBar *menuba
void gtk_menu_bar_set_child_pack_direction (GtkMenuBar *menubar,
GtkPackDirection child_pack_dir);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_menu_bar_append(menu,child) gtk_menu_shell_append ((GtkMenuShell *)(menu),(child))
-#define gtk_menu_bar_prepend(menu,child) gtk_menu_shell_prepend ((GtkMenuShell *)(menu),(child))
-#define gtk_menu_bar_insert(menu,child,pos) gtk_menu_shell_insert ((GtkMenuShell *)(menu),(child),(pos))
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Private functions */
void _gtk_menu_bar_cycle_focus (GtkMenuBar *menubar,
GtkDirectionType dir);
diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c
index 8e03b99c73..76fab0d24d 100644
--- a/gtk/gtkmenuitem.c
+++ b/gtk/gtkmenuitem.c
@@ -812,24 +812,6 @@ gtk_menu_item_get_submenu (GtkMenuItem *menu_item)
return menu_item->submenu;
}
-/**
- * gtk_menu_item_remove_submenu:
- * @menu_item: a #GtkMenuItem
- *
- * Removes the widget's submenu.
- *
- * Deprecated: 2.12: gtk_menu_item_remove_submenu() is deprecated and
- * should not be used in newly written code. Use
- * gtk_menu_item_set_submenu() instead.
- **/
-void
-gtk_menu_item_remove_submenu (GtkMenuItem *menu_item)
-{
- g_return_if_fail (GTK_IS_MENU_ITEM (menu_item));
-
- gtk_menu_item_set_submenu (menu_item, NULL);
-}
-
void _gtk_menu_item_set_placement (GtkMenuItem *menu_item,
GtkSubmenuPlacement placement);
diff --git a/gtk/gtkmenuitem.h b/gtk/gtkmenuitem.h
index b8a1f1a91f..6334785f1b 100644
--- a/gtk/gtkmenuitem.h
+++ b/gtk/gtkmenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -135,11 +135,6 @@ void _gtk_menu_item_popup_submenu (GtkWidget *menu_item,
gboolean with_delay);
void _gtk_menu_item_popdown_submenu (GtkWidget *menu_item);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_menu_item_remove_submenu (GtkMenuItem *menu_item);
-#define gtk_menu_item_right_justify(menu_item) gtk_menu_item_set_right_justified ((menu_item), TRUE)
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_MENU_ITEM_H__ */
diff --git a/gtk/gtkmenushell.h b/gtk/gtkmenushell.h
index 614d3975f2..e0d042bf17 100644
--- a/gtk/gtkmenushell.h
+++ b/gtk/gtkmenushell.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkmenutoolbutton.c b/gtk/gtkmenutoolbutton.c
index 3e3cf07751..460423d348 100644
--- a/gtk/gtkmenutoolbutton.c
+++ b/gtk/gtkmenutoolbutton.c
@@ -21,8 +21,6 @@
#include "config.h"
-#undef GTK_DISABLE_DEPRECATED /* GtkTooltips */
-
#include "gtkmenutoolbutton.h"
#include "gtktogglebutton.h"
#include "gtkarrow.h"
@@ -593,39 +591,12 @@ gtk_menu_tool_button_get_menu (GtkMenuToolButton *button)
}
/**
- * gtk_menu_tool_button_set_arrow_tooltip:
- * @button: a #GtkMenuToolButton
- * @tooltips: the #GtkTooltips object to be used
- * @tip_text: (allow-none): text to be used as tooltip text for tool_item
- * @tip_private: (allow-none): text to be used as private tooltip text
- *
- * Sets the #GtkTooltips object to be used for arrow button which
- * pops up the menu. See gtk_tool_item_set_tooltip() for setting
- * a tooltip on the whole #GtkMenuToolButton.
- *
- * Since: 2.6
- *
- * Deprecated: 2.12: Use gtk_menu_tool_button_set_arrow_tooltip_text()
- * instead.
- **/
-void
-gtk_menu_tool_button_set_arrow_tooltip (GtkMenuToolButton *button,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private)
-{
- g_return_if_fail (GTK_IS_MENU_TOOL_BUTTON (button));
-
- gtk_tooltips_set_tip (tooltips, button->priv->arrow_button, tip_text, tip_private);
-}
-
-/**
* gtk_menu_tool_button_set_arrow_tooltip_text:
* @button: a #GtkMenuToolButton
* @text: text to be used as tooltip text for button's arrow button
*
* Sets the tooltip text to be used as tooltip for the arrow button which
- * pops up the menu. See gtk_tool_item_set_tooltip() for setting a tooltip
+ * pops up the menu. See gtk_tool_item_set_tooltip_text() for setting a tooltip
* on the whole #GtkMenuToolButton.
*
* Since: 2.12
@@ -645,7 +616,7 @@ gtk_menu_tool_button_set_arrow_tooltip_text (GtkMenuToolButton *button,
* @markup: markup text to be used as tooltip text for button's arrow button
*
* Sets the tooltip markup text to be used as tooltip for the arrow button
- * which pops up the menu. See gtk_tool_item_set_tooltip() for setting a
+ * which pops up the menu. See gtk_tool_item_set_tooltip_text() for setting a
* tooltip on the whole #GtkMenuToolButton.
*
* Since: 2.12
diff --git a/gtk/gtkmenutoolbutton.h b/gtk/gtkmenutoolbutton.h
index ec50e34017..916e6acf7b 100644
--- a/gtk/gtkmenutoolbutton.h
+++ b/gtk/gtkmenutoolbutton.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -71,14 +71,6 @@ GtkToolItem *gtk_menu_tool_button_new_from_stock (const gchar *stock_id);
void gtk_menu_tool_button_set_menu (GtkMenuToolButton *button,
GtkWidget *menu);
GtkWidget *gtk_menu_tool_button_get_menu (GtkMenuToolButton *button);
-
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_menu_tool_button_set_arrow_tooltip (GtkMenuToolButton *button,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_menu_tool_button_set_arrow_tooltip_text (GtkMenuToolButton *button,
const gchar *text);
void gtk_menu_tool_button_set_arrow_tooltip_markup (GtkMenuToolButton *button,
diff --git a/gtk/gtkmessagedialog.h b/gtk/gtkmessagedialog.h
index c46c7b3db7..c4ef610693 100644
--- a/gtk/gtkmessagedialog.h
+++ b/gtk/gtkmessagedialog.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkmisc.h b/gtk/gtkmisc.h
index 477c73b605..0cb14163de 100644
--- a/gtk/gtkmisc.h
+++ b/gtk/gtkmisc.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkmodules.h b/gtk/gtkmodules.h
index 84bc86ca63..ca1c52e431 100644
--- a/gtk/gtkmodules.h
+++ b/gtk/gtkmodules.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index d038cc5f53..62008bafd3 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -105,14 +105,9 @@ enum {
PROP_SHOW_TABS,
PROP_SHOW_BORDER,
PROP_SCROLLABLE,
- PROP_TAB_BORDER,
- PROP_TAB_HBORDER,
- PROP_TAB_VBORDER,
PROP_PAGE,
PROP_ENABLE_POPUP,
- PROP_GROUP_ID,
PROP_GROUP,
- PROP_HOMOGENEOUS
};
enum {
@@ -417,15 +412,6 @@ static void gtk_notebook_menu_detacher (GtkWidget *widget,
GtkMenu *menu);
/*** GtkNotebook Private Setters ***/
-static void gtk_notebook_set_homogeneous_tabs_internal (GtkNotebook *notebook,
- gboolean homogeneous);
-static void gtk_notebook_set_tab_border_internal (GtkNotebook *notebook,
- guint border_width);
-static void gtk_notebook_set_tab_hborder_internal (GtkNotebook *notebook,
- guint tab_hborder);
-static void gtk_notebook_set_tab_vborder_internal (GtkNotebook *notebook,
- guint tab_vborder);
-
static void gtk_notebook_update_tab_states (GtkNotebook *notebook);
static gboolean gtk_notebook_mnemonic_activate_switch_page (GtkWidget *child,
gboolean overload,
@@ -597,33 +583,6 @@ gtk_notebook_class_init (GtkNotebookClass *class)
GTK_POS_TOP,
GTK_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
- PROP_TAB_BORDER,
- g_param_spec_uint ("tab-border",
- P_("Tab Border"),
- P_("Width of the border around the tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_WRITABLE));
- g_object_class_install_property (gobject_class,
- PROP_TAB_HBORDER,
- g_param_spec_uint ("tab-hborder",
- P_("Horizontal Tab Border"),
- P_("Width of the horizontal border of tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_TAB_VBORDER,
- g_param_spec_uint ("tab-vborder",
- P_("Vertical Tab Border"),
- P_("Width of the vertical border of tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
PROP_SHOW_TABS,
g_param_spec_boolean ("show-tabs",
P_("Show Tabs"),
@@ -651,22 +610,6 @@ gtk_notebook_class_init (GtkNotebookClass *class)
P_("If TRUE, pressing the right mouse button on the notebook pops up a menu that you can use to go to a page"),
FALSE,
GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_HOMOGENEOUS,
- g_param_spec_boolean ("homogeneous",
- P_("Homogeneous"),
- P_("Whether tabs should have homogeneous sizes"),
- FALSE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_GROUP_ID,
- g_param_spec_int ("group-id",
- P_("Group ID"),
- P_("Group ID for tabs drag and drop"),
- -1,
- G_MAXINT,
- -1,
- GTK_PARAM_READWRITE));
/**
* GtkNotebook:group:
@@ -1530,27 +1473,12 @@ gtk_notebook_set_property (GObject *object,
else
gtk_notebook_popup_disable (notebook);
break;
- case PROP_HOMOGENEOUS:
- gtk_notebook_set_homogeneous_tabs_internal (notebook, g_value_get_boolean (value));
- break;
case PROP_PAGE:
gtk_notebook_set_current_page (notebook, g_value_get_int (value));
break;
case PROP_TAB_POS:
gtk_notebook_set_tab_pos (notebook, g_value_get_enum (value));
break;
- case PROP_TAB_BORDER:
- gtk_notebook_set_tab_border_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_TAB_HBORDER:
- gtk_notebook_set_tab_hborder_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_TAB_VBORDER:
- gtk_notebook_set_tab_vborder_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_GROUP_ID:
- gtk_notebook_set_group_id (notebook, g_value_get_int (value));
- break;
case PROP_GROUP:
gtk_notebook_set_group (notebook, g_value_get_pointer (value));
break;
@@ -1586,24 +1514,12 @@ gtk_notebook_get_property (GObject *object,
case PROP_ENABLE_POPUP:
g_value_set_boolean (value, notebook->menu != NULL);
break;
- case PROP_HOMOGENEOUS:
- g_value_set_boolean (value, notebook->homogeneous);
- break;
case PROP_PAGE:
g_value_set_int (value, gtk_notebook_get_current_page (notebook));
break;
case PROP_TAB_POS:
g_value_set_enum (value, notebook->tab_pos);
break;
- case PROP_TAB_HBORDER:
- g_value_set_uint (value, notebook->tab_hborder);
- break;
- case PROP_TAB_VBORDER:
- g_value_set_uint (value, notebook->tab_vborder);
- break;
- case PROP_GROUP_ID:
- g_value_set_int (value, gtk_notebook_get_group_id (notebook));
- break;
case PROP_GROUP:
g_value_set_pointer (value, priv->group);
break;
@@ -3833,7 +3749,7 @@ gtk_notebook_get_child_property (GtkContainer *container,
label = gtk_notebook_get_tab_label (notebook, child);
if (GTK_IS_LABEL (label))
- g_value_set_string (value, GTK_LABEL (label)->label);
+ g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label)));
else
g_value_set_string (value, NULL);
break;
@@ -3841,7 +3757,7 @@ gtk_notebook_get_child_property (GtkContainer *container,
label = gtk_notebook_get_menu_label (notebook, child);
if (GTK_IS_LABEL (label))
- g_value_set_string (value, GTK_LABEL (label)->label);
+ g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label)));
else
g_value_set_string (value, NULL);
break;
@@ -4727,7 +4643,7 @@ gtk_notebook_update_labels (GtkNotebook *notebook)
{
if (GTK_IS_LABEL (page->tab_label))
gtk_label_set_text (GTK_LABEL (page->menu_label),
- GTK_LABEL (page->tab_label)->label);
+ gtk_label_get_label (GTK_LABEL (page->tab_label)));
else
gtk_label_set_text (GTK_LABEL (page->menu_label), string);
}
@@ -6273,7 +6189,7 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook,
if (page->default_menu)
{
if (GTK_IS_LABEL (page->tab_label))
- page->menu_label = gtk_label_new (GTK_LABEL (page->tab_label)->label);
+ page->menu_label = gtk_label_new (gtk_label_get_label (GTK_LABEL (page->tab_label)));
else
page->menu_label = gtk_label_new ("");
gtk_misc_set_alignment (GTK_MISC (page->menu_label), 0.0, 0.5);
@@ -6310,75 +6226,6 @@ gtk_notebook_menu_detacher (GtkWidget *widget,
notebook->menu = NULL;
}
-/* Private GtkNotebook Setter Functions:
- *
- * gtk_notebook_set_homogeneous_tabs_internal
- * gtk_notebook_set_tab_border_internal
- * gtk_notebook_set_tab_hborder_internal
- * gtk_notebook_set_tab_vborder_internal
- */
-static void
-gtk_notebook_set_homogeneous_tabs_internal (GtkNotebook *notebook,
- gboolean homogeneous)
-{
- if (homogeneous == notebook->homogeneous)
- return;
-
- notebook->homogeneous = homogeneous;
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "homogeneous");
-}
-
-static void
-gtk_notebook_set_tab_border_internal (GtkNotebook *notebook,
- guint border_width)
-{
- notebook->tab_hborder = border_width;
- notebook->tab_vborder = border_width;
-
- if (notebook->show_tabs &&
- gtk_widget_get_visible (GTK_WIDGET (notebook)))
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_freeze_notify (G_OBJECT (notebook));
- g_object_notify (G_OBJECT (notebook), "tab-hborder");
- g_object_notify (G_OBJECT (notebook), "tab-vborder");
- g_object_thaw_notify (G_OBJECT (notebook));
-}
-
-static void
-gtk_notebook_set_tab_hborder_internal (GtkNotebook *notebook,
- guint tab_hborder)
-{
- if (notebook->tab_hborder == tab_hborder)
- return;
-
- notebook->tab_hborder = tab_hborder;
-
- if (notebook->show_tabs &&
- gtk_widget_get_visible (GTK_WIDGET (notebook)))
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "tab-hborder");
-}
-
-static void
-gtk_notebook_set_tab_vborder_internal (GtkNotebook *notebook,
- guint tab_vborder)
-{
- if (notebook->tab_vborder == tab_vborder)
- return;
-
- notebook->tab_vborder = tab_vborder;
-
- if (notebook->show_tabs &&
- gtk_widget_get_visible (GTK_WIDGET (notebook)))
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "tab-vborder");
-}
-
/* Public GtkNotebook Page Insert/Remove Methods :
*
* gtk_notebook_append_page
@@ -7000,73 +6847,6 @@ gtk_notebook_get_tab_pos (GtkNotebook *notebook)
}
/**
- * gtk_notebook_set_homogeneous_tabs:
- * @notebook: a #GtkNotebook
- * @homogeneous: %TRUE if all tabs should be the same size.
- *
- * Sets whether the tabs must have all the same size or not.
- **/
-void
-gtk_notebook_set_homogeneous_tabs (GtkNotebook *notebook,
- gboolean homogeneous)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_homogeneous_tabs_internal (notebook, homogeneous);
-}
-
-/**
- * gtk_notebook_set_tab_border:
- * @notebook: a #GtkNotebook
- * @border_width: width of the border around the tab labels.
- *
- * Sets the width the border around the tab labels
- * in a notebook. This is equivalent to calling
- * gtk_notebook_set_tab_hborder (@notebook, @border_width) followed
- * by gtk_notebook_set_tab_vborder (@notebook, @border_width).
- **/
-void
-gtk_notebook_set_tab_border (GtkNotebook *notebook,
- guint border_width)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_border_internal (notebook, border_width);
-}
-
-/**
- * gtk_notebook_set_tab_hborder:
- * @notebook: a #GtkNotebook
- * @tab_hborder: width of the horizontal border of tab labels.
- *
- * Sets the width of the horizontal border of tab labels.
- **/
-void
-gtk_notebook_set_tab_hborder (GtkNotebook *notebook,
- guint tab_hborder)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_hborder_internal (notebook, tab_hborder);
-}
-
-/**
- * gtk_notebook_set_tab_vborder:
- * @notebook: a #GtkNotebook
- * @tab_vborder: width of the vertical border of tab labels.
- *
- * Sets the width of the vertical border of tab labels.
- **/
-void
-gtk_notebook_set_tab_vborder (GtkNotebook *notebook,
- guint tab_vborder)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_vborder_internal (notebook, tab_vborder);
-}
-
-/**
* gtk_notebook_set_scrollable:
* @notebook: a #GtkNotebook
* @scrollable: %TRUE if scroll arrows should be added
@@ -7687,32 +7467,6 @@ gtk_notebook_set_window_creation_hook (GtkNotebookWindowCreationFunc func,
}
/**
- * gtk_notebook_set_group_id:
- * @notebook: a #GtkNotebook
- * @group_id: a group identificator, or -1 to unset it
- *
- * Sets an group identificator for @notebook, notebooks sharing
- * the same group identificator will be able to exchange tabs
- * via drag and drop. A notebook with group identificator -1 will
- * not be able to exchange tabs with any other notebook.
- *
- * Since: 2.10
- * Deprecated: 2.12: use gtk_notebook_set_group() instead.
- */
-void
-gtk_notebook_set_group_id (GtkNotebook *notebook,
- gint group_id)
-{
- gpointer group;
-
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- /* add 1 to get rid of the -1/NULL difference */
- group = GINT_TO_POINTER (group_id + 1);
- gtk_notebook_set_group (notebook, group);
-}
-
-/**
* gtk_notebook_set_group:
* @notebook: a #GtkNotebook
* @group: (allow-none): a pointer to identify the notebook group, or %NULL to unset it
@@ -7743,30 +7497,6 @@ gtk_notebook_set_group (GtkNotebook *notebook,
}
/**
- * gtk_notebook_get_group_id:
- * @notebook: a #GtkNotebook
- *
- * Gets the current group identificator for @notebook.
- *
- * Return Value: the group identificator, or -1 if none is set.
- *
- * Since: 2.10
- * Deprecated: 2.12: use gtk_notebook_get_group() instead.
- */
-gint
-gtk_notebook_get_group_id (GtkNotebook *notebook)
-{
- GtkNotebookPrivate *priv;
-
- g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1);
-
- priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
-
- /* substract 1 to get rid of the -1/NULL difference */
- return GPOINTER_TO_INT (priv->group) - 1;
-}
-
-/**
* gtk_notebook_get_group:
* @notebook: a #GtkNotebook
*
diff --git a/gtk/gtknotebook.h b/gtk/gtknotebook.h
index 0a14a75617..e58bc5d2d2 100644
--- a/gtk/gtknotebook.h
+++ b/gtk/gtknotebook.h
@@ -25,7 +25,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -173,13 +173,6 @@ void gtk_notebook_remove_page (GtkNotebook *notebook,
void gtk_notebook_set_window_creation_hook (GtkNotebookWindowCreationFunc func,
gpointer data,
GDestroyNotify destroy);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_notebook_set_group_id (GtkNotebook *notebook,
- gint group_id);
-gint gtk_notebook_get_group_id (GtkNotebook *notebook);
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_notebook_set_group (GtkNotebook *notebook,
gpointer group);
gpointer gtk_notebook_get_group (GtkNotebook *notebook);
@@ -214,18 +207,6 @@ gboolean gtk_notebook_get_show_tabs (GtkNotebook *notebook);
void gtk_notebook_set_tab_pos (GtkNotebook *notebook,
GtkPositionType pos);
GtkPositionType gtk_notebook_get_tab_pos (GtkNotebook *notebook);
-
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_notebook_set_homogeneous_tabs (GtkNotebook *notebook,
- gboolean homogeneous);
-void gtk_notebook_set_tab_border (GtkNotebook *notebook,
- guint border_width);
-void gtk_notebook_set_tab_hborder (GtkNotebook *notebook,
- guint tab_hborder);
-void gtk_notebook_set_tab_vborder (GtkNotebook *notebook,
- guint tab_vborder);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_notebook_set_scrollable (GtkNotebook *notebook,
gboolean scrollable);
gboolean gtk_notebook_get_scrollable (GtkNotebook *notebook);
@@ -293,11 +274,6 @@ void gtk_notebook_set_action_widget (GtkNotebook *notebook,
GtkWidget *widget,
GtkPackType pack_type);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_notebook_current_page gtk_notebook_get_current_page
-#define gtk_notebook_set_page gtk_notebook_set_current_page
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_NOTEBOOK_H__ */
diff --git a/gtk/gtkobject.c b/gtk/gtkobject.c
index d0e65ed0fd..9cedfe346f 100644
--- a/gtk/gtkobject.c
+++ b/gtk/gtkobject.c
@@ -30,8 +30,6 @@
#include <string.h>
#include <stdio.h>
-#undef GTK_DISABLE_DEPRECATED
-
#include "gtkobject.h"
#include "gtkintl.h"
#include "gtkmarshalers.h"
@@ -44,10 +42,6 @@ enum {
DESTROY,
LAST_SIGNAL
};
-enum {
- PROP_0,
- PROP_USER_DATA
-};
static void gtk_object_base_class_init (GtkObjectClass *class);
@@ -55,22 +49,12 @@ static void gtk_object_base_class_finalize (GtkObjectClass *class);
static void gtk_object_class_init (GtkObjectClass *klass);
static void gtk_object_init (GtkObject *object,
GtkObjectClass *klass);
-static void gtk_object_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_object_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
static void gtk_object_dispose (GObject *object);
static void gtk_object_real_destroy (GtkObject *object);
static void gtk_object_finalize (GObject *object);
-static void gtk_object_notify_weaks (GtkObject *object);
static gpointer parent_class = NULL;
static guint object_signals[LAST_SIGNAL] = { 0 };
-static GQuark quark_weakrefs = 0;
/****************************************************
@@ -109,9 +93,6 @@ gtk_object_get_type (void)
static void
gtk_object_base_class_init (GtkObjectClass *class)
{
- /* reset instance specifc methods that don't get inherited */
- class->get_arg = NULL;
- class->set_arg = NULL;
}
static void
@@ -119,257 +100,18 @@ gtk_object_base_class_finalize (GtkObjectClass *class)
{
}
-static inline gboolean
-gtk_arg_set_from_value (GtkArg *arg,
- const GValue *value,
- gboolean copy_string)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: GTK_VALUE_CHAR (*arg) = g_value_get_char (value); break;
- case G_TYPE_UCHAR: GTK_VALUE_UCHAR (*arg) = g_value_get_uchar (value); break;
- case G_TYPE_BOOLEAN: GTK_VALUE_BOOL (*arg) = g_value_get_boolean (value); break;
- case G_TYPE_INT: GTK_VALUE_INT (*arg) = g_value_get_int (value); break;
- case G_TYPE_UINT: GTK_VALUE_UINT (*arg) = g_value_get_uint (value); break;
- case G_TYPE_LONG: GTK_VALUE_LONG (*arg) = g_value_get_long (value); break;
- case G_TYPE_ULONG: GTK_VALUE_ULONG (*arg) = g_value_get_ulong (value); break;
- case G_TYPE_ENUM: GTK_VALUE_ENUM (*arg) = g_value_get_enum (value); break;
- case G_TYPE_FLAGS: GTK_VALUE_FLAGS (*arg) = g_value_get_flags (value); break;
- case G_TYPE_FLOAT: GTK_VALUE_FLOAT (*arg) = g_value_get_float (value); break;
- case G_TYPE_DOUBLE: GTK_VALUE_DOUBLE (*arg) = g_value_get_double (value); break;
- case G_TYPE_BOXED: GTK_VALUE_BOXED (*arg) = g_value_get_boxed (value); break;
- case G_TYPE_POINTER: GTK_VALUE_POINTER (*arg) = g_value_get_pointer (value); break;
- case G_TYPE_OBJECT: GTK_VALUE_POINTER (*arg) = g_value_get_object (value); break;
- case G_TYPE_STRING: if (copy_string)
- GTK_VALUE_STRING (*arg) = g_value_dup_string (value);
- else
- GTK_VALUE_STRING (*arg) = (char *) g_value_get_string (value);
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static inline gboolean
-gtk_arg_to_value (GtkArg *arg,
- GValue *value)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: g_value_set_char (value, GTK_VALUE_CHAR (*arg)); break;
- case G_TYPE_UCHAR: g_value_set_uchar (value, GTK_VALUE_UCHAR (*arg)); break;
- case G_TYPE_BOOLEAN: g_value_set_boolean (value, GTK_VALUE_BOOL (*arg)); break;
- case G_TYPE_INT: g_value_set_int (value, GTK_VALUE_INT (*arg)); break;
- case G_TYPE_UINT: g_value_set_uint (value, GTK_VALUE_UINT (*arg)); break;
- case G_TYPE_LONG: g_value_set_long (value, GTK_VALUE_LONG (*arg)); break;
- case G_TYPE_ULONG: g_value_set_ulong (value, GTK_VALUE_ULONG (*arg)); break;
- case G_TYPE_ENUM: g_value_set_enum (value, GTK_VALUE_ENUM (*arg)); break;
- case G_TYPE_FLAGS: g_value_set_flags (value, GTK_VALUE_FLAGS (*arg)); break;
- case G_TYPE_FLOAT: g_value_set_float (value, GTK_VALUE_FLOAT (*arg)); break;
- case G_TYPE_DOUBLE: g_value_set_double (value, GTK_VALUE_DOUBLE (*arg)); break;
- case G_TYPE_STRING: g_value_set_string (value, GTK_VALUE_STRING (*arg)); break;
- case G_TYPE_BOXED: g_value_set_boxed (value, GTK_VALUE_BOXED (*arg)); break;
- case G_TYPE_POINTER: g_value_set_pointer (value, GTK_VALUE_POINTER (*arg)); break;
- case G_TYPE_OBJECT: g_value_set_object (value, GTK_VALUE_POINTER (*arg)); break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-gtk_arg_proxy_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkObjectClass *class = g_type_class_peek (pspec->owner_type);
- GtkArg arg;
-
- g_return_if_fail (class->set_arg != NULL);
-
- memset (&arg, 0, sizeof (arg));
- arg.type = G_VALUE_TYPE (value);
- gtk_arg_set_from_value (&arg, value, FALSE);
- arg.name = pspec->name;
- class->set_arg (GTK_OBJECT (object), &arg, property_id);
-}
-
-static void
-gtk_arg_proxy_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkObjectClass *class = g_type_class_peek (pspec->owner_type);
- GtkArg arg;
-
- g_return_if_fail (class->get_arg != NULL);
-
- memset (&arg, 0, sizeof (arg));
- arg.type = G_VALUE_TYPE (value);
- arg.name = pspec->name;
- class->get_arg (GTK_OBJECT (object), &arg, property_id);
- gtk_arg_to_value (&arg, value);
-}
-
-void
-gtk_object_add_arg_type (const gchar *arg_name,
- GType arg_type,
- guint arg_flags,
- guint arg_id)
-{
- GObjectClass *oclass;
- GParamSpec *pspec;
- gchar *type_name, *pname;
- GType type;
-
- g_return_if_fail (arg_name != NULL);
- g_return_if_fail (arg_type > G_TYPE_NONE);
- g_return_if_fail (arg_id > 0);
- g_return_if_fail (arg_flags & G_PARAM_READWRITE);
- if (arg_flags & G_PARAM_CONSTRUCT)
- g_return_if_fail ((arg_flags & G_PARAM_CONSTRUCT_ONLY) == 0);
- if (arg_flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
- g_return_if_fail (arg_flags & G_PARAM_WRITABLE);
- g_return_if_fail ((arg_flags & ~(G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME)) == 0);
-
- pname = strchr (arg_name, ':');
- g_return_if_fail (pname && pname[1] == ':');
-
- type_name = g_strndup (arg_name, pname - arg_name);
- pname += 2;
- type = g_type_from_name (type_name);
- g_free (type_name);
- g_return_if_fail (G_TYPE_IS_OBJECT (type));
-
- oclass = gtk_type_class (type);
- if (arg_flags & G_PARAM_READABLE)
- {
- if (oclass->get_property && oclass->get_property != gtk_arg_proxy_get_property)
- {
- g_warning (G_STRLOC ": GtkArg compatibility code can't be mixed with customized %s.get_property() implementation",
- g_type_name (type));
- return;
- }
- oclass->get_property = gtk_arg_proxy_get_property;
- }
- if (arg_flags & G_PARAM_WRITABLE)
- {
- if (oclass->set_property && oclass->set_property != gtk_arg_proxy_set_property)
- {
- g_warning (G_STRLOC ": GtkArg compatibility code can't be mixed with customized %s.set_property() implementation",
- g_type_name (type));
- return;
- }
- oclass->set_property = gtk_arg_proxy_set_property;
- }
- switch (G_TYPE_FUNDAMENTAL (arg_type))
- {
- case G_TYPE_ENUM:
- pspec = g_param_spec_enum (pname, NULL, NULL, arg_type, 0, arg_flags);
- break;
- case G_TYPE_FLAGS:
- pspec = g_param_spec_flags (pname, NULL, NULL, arg_type, 0, arg_flags);
- break;
- case G_TYPE_CHAR:
- pspec = g_param_spec_char (pname, NULL, NULL, -128, 127, 0, arg_flags);
- break;
- case G_TYPE_UCHAR:
- pspec = g_param_spec_uchar (pname, NULL, NULL, 0, 255, 0, arg_flags);
- break;
- case G_TYPE_BOOLEAN:
- pspec = g_param_spec_boolean (pname, NULL, NULL, FALSE, arg_flags);
- break;
- case G_TYPE_INT:
- pspec = g_param_spec_int (pname, NULL, NULL, G_MININT, G_MAXINT, 0, arg_flags);
- break;
- case G_TYPE_UINT:
- pspec = g_param_spec_uint (pname, NULL, NULL, 0, G_MAXUINT, 0, arg_flags);
- break;
- case G_TYPE_FLOAT:
- pspec = g_param_spec_float (pname, NULL, NULL, -G_MAXFLOAT, G_MAXFLOAT, 0, arg_flags);
- break;
- case G_TYPE_DOUBLE:
- pspec = g_param_spec_double (pname, NULL, NULL, -G_MAXDOUBLE, G_MAXDOUBLE, 0, arg_flags);
- break;
- case G_TYPE_STRING:
- pspec = g_param_spec_string (pname, NULL, NULL, NULL, arg_flags);
- break;
- case G_TYPE_POINTER:
- pspec = g_param_spec_pointer (pname, NULL, NULL, arg_flags);
- break;
- case G_TYPE_OBJECT:
- pspec = g_param_spec_object (pname, NULL, NULL, arg_type, arg_flags);
- break;
- case G_TYPE_BOXED:
- if (!G_TYPE_IS_FUNDAMENTAL (arg_type))
- {
- pspec = g_param_spec_boxed (pname, NULL, NULL, arg_type, arg_flags);
- break;
- }
- default:
- g_warning (G_STRLOC ": Property type `%s' is not supported by the GtkArg compatibility code",
- g_type_name (arg_type));
- return;
- }
- g_object_class_install_property (oclass, arg_id, pspec);
-}
-
-static guint (*gobject_floating_flag_handler) (GtkObject*,gint) = NULL;
-
-static guint
-gtk_object_floating_flag_handler (GtkObject *object,
- gint job)
-{
- /* FIXME: remove this whole thing once GTK+ breaks ABI */
- if (!GTK_IS_OBJECT (object))
- return gobject_floating_flag_handler (object, job);
- switch (job)
- {
- guint32 oldvalue;
- case +1: /* force floating if possible */
- do
- oldvalue = g_atomic_int_get (&object->flags);
- while (!g_atomic_int_compare_and_exchange ((gint *)&object->flags, oldvalue, oldvalue | GTK_FLOATING));
- return oldvalue & GTK_FLOATING;
- case -1: /* sink if possible */
- do
- oldvalue = g_atomic_int_get (&object->flags);
- while (!g_atomic_int_compare_and_exchange ((gint *)&object->flags, oldvalue, oldvalue & ~(guint32) GTK_FLOATING));
- return oldvalue & GTK_FLOATING;
- default: /* check floating */
- return 0 != (g_atomic_int_get (&object->flags) & GTK_FLOATING);
- }
-}
-
static void
gtk_object_class_init (GtkObjectClass *class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- gboolean is_glib_2_10_1;
parent_class = g_type_class_ref (G_TYPE_OBJECT);
- is_glib_2_10_1 = g_object_compat_control (3, &gobject_floating_flag_handler);
- if (!is_glib_2_10_1)
- g_error ("this version of Gtk+ requires GLib-2.10.1");
- g_object_compat_control (2, gtk_object_floating_flag_handler);
-
- gobject_class->set_property = gtk_object_set_property;
- gobject_class->get_property = gtk_object_get_property;
gobject_class->dispose = gtk_object_dispose;
gobject_class->finalize = gtk_object_finalize;
class->destroy = gtk_object_real_destroy;
- g_object_class_install_property (gobject_class,
- PROP_USER_DATA,
- g_param_spec_pointer ("user-data",
- P_("User Data"),
- P_("Anonymous User Data Pointer"),
- GTK_PARAM_READWRITE));
object_signals[DESTROY] =
g_signal_new (I_("destroy"),
G_TYPE_FROM_CLASS (gobject_class),
@@ -384,12 +126,6 @@ static void
gtk_object_init (GtkObject *object,
GtkObjectClass *klass)
{
- gboolean was_floating;
- /* sink the GInitiallyUnowned floating flag */
- was_floating = gobject_floating_flag_handler (object, -1);
- /* set GTK_FLOATING via gtk_object_floating_flag_handler */
- if (was_floating)
- g_object_force_floating (G_OBJECT (object));
}
/********************************************
@@ -399,7 +135,6 @@ gtk_object_init (GtkObject *object,
void
gtk_object_destroy (GtkObject *object)
{
- g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_OBJECT (object));
if (!(GTK_OBJECT_FLAGS (object) & GTK_IN_DESTRUCTION))
@@ -445,336 +180,8 @@ gtk_object_finalize (GObject *gobject)
"and must be removed with g_object_ref_sink().");
}
- gtk_object_notify_weaks (object);
-
G_OBJECT_CLASS (parent_class)->finalize (gobject);
}
-/*****************************************
- * GtkObject argument handlers
- *
- *****************************************/
-
-static void
-gtk_object_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id)
- {
- case PROP_USER_DATA:
- g_object_set_data (G_OBJECT (object), I_("user_data"), g_value_get_pointer (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-gtk_object_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id)
- {
- case PROP_USER_DATA:
- g_value_set_pointer (value, g_object_get_data (G_OBJECT (object), "user_data"));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-void
-gtk_object_sink (GtkObject *object)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_object_ref_sink (object);
- g_object_unref (object);
-}
-
-/*****************************************
- * Weak references.
- *
- * Weak refs are very similar to the old "destroy" signal. They allow
- * one to register a callback that is called when the weakly
- * referenced object is finalized.
- *
- * They are not implemented as a signal because they really are
- * special and need to be used with great care. Unlike signals, which
- * should be able to execute any code whatsoever.
- *
- * A weakref callback is not allowed to retain a reference to the
- * object. Object data keys may be retrieved in a weak reference
- * callback.
- *
- * A weakref callback is called at most once.
- *
- *****************************************/
-
-typedef struct _GtkWeakRef GtkWeakRef;
-
-struct _GtkWeakRef
-{
- GtkWeakRef *next;
- GDestroyNotify notify;
- gpointer data;
-};
-
-void
-gtk_object_weakref (GtkObject *object,
- GDestroyNotify notify,
- gpointer data)
-{
- GtkWeakRef *weak;
-
- g_return_if_fail (notify != NULL);
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- if (!quark_weakrefs)
- quark_weakrefs = g_quark_from_static_string ("gtk-weakrefs");
-
- weak = g_new (GtkWeakRef, 1);
- weak->next = g_object_get_qdata (G_OBJECT (object), quark_weakrefs);
- weak->notify = notify;
- weak->data = data;
- g_object_set_qdata (G_OBJECT (object), quark_weakrefs, weak);
-}
-
-void
-gtk_object_weakunref (GtkObject *object,
- GDestroyNotify notify,
- gpointer data)
-{
- GtkWeakRef *weaks, *w, **wp;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- if (!quark_weakrefs)
- return;
-
- weaks = g_object_get_qdata (G_OBJECT (object), quark_weakrefs);
- for (wp = &weaks; *wp; wp = &(*wp)->next)
- {
- w = *wp;
- if (w->notify == notify && w->data == data)
- {
- if (w == weaks)
- g_object_set_qdata (G_OBJECT (object), quark_weakrefs, w->next);
- else
- *wp = w->next;
- g_free (w);
- return;
- }
- }
-}
-
-static void
-gtk_object_notify_weaks (GtkObject *object)
-{
- if (quark_weakrefs)
- {
- GtkWeakRef *w1, *w2;
-
- w1 = g_object_get_qdata (G_OBJECT (object), quark_weakrefs);
-
- while (w1)
- {
- w1->notify (w1->data);
- w2 = w1->next;
- g_free (w1);
- w1 = w2;
- }
- }
-}
-
-GtkObject*
-gtk_object_new (GType object_type,
- const gchar *first_property_name,
- ...)
-{
- GtkObject *object;
- va_list var_args;
-
- g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), NULL);
-
- va_start (var_args, first_property_name);
- object = (GtkObject *)g_object_new_valist (object_type, first_property_name, var_args);
- va_end (var_args);
-
- return object;
-}
-
-void
-gtk_object_get (GtkObject *object,
- const gchar *first_property_name,
- ...)
-{
- va_list var_args;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- va_start (var_args, first_property_name);
- g_object_get_valist (G_OBJECT (object), first_property_name, var_args);
- va_end (var_args);
-}
-
-void
-gtk_object_set (GtkObject *object,
- const gchar *first_property_name,
- ...)
-{
- va_list var_args;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- va_start (var_args, first_property_name);
- g_object_set_valist (G_OBJECT (object), first_property_name, var_args);
- va_end (var_args);
-}
-
-/*****************************************
- * GtkObject object_data mechanism
- *
- *****************************************/
-
-void
-gtk_object_set_data_by_id (GtkObject *object,
- GQuark data_id,
- gpointer data)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_datalist_id_set_data (&G_OBJECT (object)->qdata, data_id, data);
-}
-
-void
-gtk_object_set_data (GtkObject *object,
- const gchar *key,
- gpointer data)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_return_if_fail (key != NULL);
-
- g_datalist_set_data (&G_OBJECT (object)->qdata, key, data);
-}
-
-void
-gtk_object_set_data_by_id_full (GtkObject *object,
- GQuark data_id,
- gpointer data,
- GDestroyNotify destroy)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_datalist_id_set_data_full (&G_OBJECT (object)->qdata, data_id, data, destroy);
-}
-
-void
-gtk_object_set_data_full (GtkObject *object,
- const gchar *key,
- gpointer data,
- GDestroyNotify destroy)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_return_if_fail (key != NULL);
-
- g_datalist_set_data_full (&G_OBJECT (object)->qdata, key, data, destroy);
-}
-
-gpointer
-gtk_object_get_data_by_id (GtkObject *object,
- GQuark data_id)
-{
- g_return_val_if_fail (GTK_IS_OBJECT (object), NULL);
-
- return g_datalist_id_get_data (&G_OBJECT (object)->qdata, data_id);
-}
-
-gpointer
-gtk_object_get_data (GtkObject *object,
- const gchar *key)
-{
- g_return_val_if_fail (GTK_IS_OBJECT (object), NULL);
- g_return_val_if_fail (key != NULL, NULL);
-
- return g_datalist_get_data (&G_OBJECT (object)->qdata, key);
-}
-
-void
-gtk_object_remove_data_by_id (GtkObject *object,
- GQuark data_id)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_datalist_id_remove_data (&G_OBJECT (object)->qdata, data_id);
-}
-
-void
-gtk_object_remove_data (GtkObject *object,
- const gchar *key)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_return_if_fail (key != NULL);
-
- g_datalist_remove_data (&G_OBJECT (object)->qdata, key);
-}
-
-void
-gtk_object_remove_no_notify_by_id (GtkObject *object,
- GQuark key_id)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_datalist_id_remove_no_notify (&G_OBJECT (object)->qdata, key_id);
-}
-
-void
-gtk_object_remove_no_notify (GtkObject *object,
- const gchar *key)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_return_if_fail (key != NULL);
-
- g_datalist_remove_no_notify (&G_OBJECT (object)->qdata, key);
-}
-
-void
-gtk_object_set_user_data (GtkObject *object,
- gpointer data)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_object_set_data (G_OBJECT (object), "user_data", data);
-}
-
-gpointer
-gtk_object_get_user_data (GtkObject *object)
-{
- g_return_val_if_fail (GTK_IS_OBJECT (object), NULL);
-
- return g_object_get_data (G_OBJECT (object), "user_data");
-}
-
-GtkObject*
-gtk_object_ref (GtkObject *object)
-{
- g_return_val_if_fail (GTK_IS_OBJECT (object), NULL);
-
- return (GtkObject*) g_object_ref ((GObject*) object);
-}
-
-void
-gtk_object_unref (GtkObject *object)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_object_unref ((GObject*) object);
-}
-
#define __GTK_OBJECT_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtkobject.h b/gtk/gtkobject.h
index a32ecd0bf0..bb141c3d19 100644
--- a/gtk/gtkobject.h
+++ b/gtk/gtkobject.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -82,9 +82,6 @@ G_BEGIN_DECLS
typedef enum
{
GTK_IN_DESTRUCTION = 1 << 0, /* Used internally during dispose */
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
- GTK_FLOATING = 1 << 1,
-#endif
GTK_RESERVED_1 = 1 << 2,
GTK_RESERVED_2 = 1 << 3
} GtkObjectFlags;
@@ -92,9 +89,6 @@ typedef enum
/* Macros for extracting the object_flags from GtkObject.
*/
#define GTK_OBJECT_FLAGS(obj) (GTK_OBJECT (obj)->flags)
-#ifndef GTK_DISABLE_DEPRECATED
-#define GTK_OBJECT_FLOATING(obj) (g_object_is_floating (obj))
-#endif
/* Macros for setting and clearing bits in the object_flags field of GtkObject.
*/
@@ -120,14 +114,6 @@ struct _GtkObjectClass
{
GInitiallyUnownedClass parent_class;
- /* Non overridable class methods to set and get per class arguments */
- void (*set_arg) (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
- void (*get_arg) (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-
/* Default signal handler for the ::destroy signal, which is
* invoked to request that references to the widget be dropped.
* If an object class overrides destroy() in order to perform class
@@ -139,112 +125,12 @@ struct _GtkObjectClass
void (*destroy) (GtkObject *object);
};
-
-
/* Application-level methods */
GType gtk_object_get_type (void) G_GNUC_CONST;
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_object_sink (GtkObject *object);
-#endif
void gtk_object_destroy (GtkObject *object);
-/****************************************************************/
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-GtkObject* gtk_object_new (GType type,
- const gchar *first_property_name,
- ...);
-GtkObject* gtk_object_ref (GtkObject *object);
-void gtk_object_unref (GtkObject *object);
-void gtk_object_weakref (GtkObject *object,
- GDestroyNotify notify,
- gpointer data);
-void gtk_object_weakunref (GtkObject *object,
- GDestroyNotify notify,
- gpointer data);
-
-/* Set 'data' to the "object_data" field of the object. The
- * data is indexed by the "key". If there is already data
- * associated with "key" then the new data will replace it.
- * If 'data' is NULL then this call is equivalent to
- * 'gtk_object_remove_data'.
- * The gtk_object_set_data_full variant acts just the same,
- * but takes an additional argument which is a function to
- * be called when the data is removed.
- * `gtk_object_remove_data' is equivalent to the above,
- * where 'data' is NULL
- * `gtk_object_get_data' gets the data associated with "key".
- */
-void gtk_object_set_data (GtkObject *object,
- const gchar *key,
- gpointer data);
-void gtk_object_set_data_full (GtkObject *object,
- const gchar *key,
- gpointer data,
- GDestroyNotify destroy);
-void gtk_object_remove_data (GtkObject *object,
- const gchar *key);
-gpointer gtk_object_get_data (GtkObject *object,
- const gchar *key);
-void gtk_object_remove_no_notify (GtkObject *object,
- const gchar *key);
-
-/* Set/get the "user_data" object data field of "object". It should
- * be noted that these functions are no different than calling
- * `gtk_object_set_data'/`gtk_object_get_data' with a key of "user_data".
- * They are merely provided as a convenience.
- */
-void gtk_object_set_user_data (GtkObject *object,
- gpointer data);
-gpointer gtk_object_get_user_data (GtkObject *object);
-
-
-/* Object-level methods */
-
-/* Object data method variants that operate on key ids. */
-void gtk_object_set_data_by_id (GtkObject *object,
- GQuark data_id,
- gpointer data);
-void gtk_object_set_data_by_id_full (GtkObject *object,
- GQuark data_id,
- gpointer data,
- GDestroyNotify destroy);
-gpointer gtk_object_get_data_by_id (GtkObject *object,
- GQuark data_id);
-void gtk_object_remove_data_by_id (GtkObject *object,
- GQuark data_id);
-void gtk_object_remove_no_notify_by_id (GtkObject *object,
- GQuark key_id);
-#define gtk_object_data_try_key g_quark_try_string
-#define gtk_object_data_force_id g_quark_from_string
-
-/* GtkArg flag bits for gtk_object_add_arg_type
- */
-typedef enum
-{
- GTK_ARG_READABLE = G_PARAM_READABLE,
- GTK_ARG_WRITABLE = G_PARAM_WRITABLE,
- GTK_ARG_CONSTRUCT = G_PARAM_CONSTRUCT,
- GTK_ARG_CONSTRUCT_ONLY = G_PARAM_CONSTRUCT_ONLY,
- GTK_ARG_CHILD_ARG = 1 << 4
-} GtkArgFlags;
-#define GTK_ARG_READWRITE (GTK_ARG_READABLE | GTK_ARG_WRITABLE)
-void gtk_object_get (GtkObject *object,
- const gchar *first_property_name,
- ...) G_GNUC_NULL_TERMINATED;
-void gtk_object_set (GtkObject *object,
- const gchar *first_property_name,
- ...) G_GNUC_NULL_TERMINATED;
-void gtk_object_add_arg_type (const gchar *arg_name,
- GType arg_type,
- guint arg_flags,
- guint arg_id);
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_OBJECT_H__ */
diff --git a/gtk/gtkoldeditable.c b/gtk/gtkoldeditable.c
deleted file mode 100644
index 983e99fd3a..0000000000
--- a/gtk/gtkoldeditable.c
+++ /dev/null
@@ -1,829 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include <string.h>
-#include "gdk/gdkkeysyms.h"
-#include "gdk/gdki18n.h"
-#include "gtkclipboard.h"
-#include "gtkoldeditable.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkselection.h"
-#include "gtksignal.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-#define MIN_EDITABLE_WIDTH 150
-#define DRAW_TIMEOUT 20
-#define INNER_BORDER 2
-
-enum {
- /* Binding actions */
- ACTIVATE,
- SET_EDITABLE,
- MOVE_CURSOR,
- MOVE_WORD,
- MOVE_PAGE,
- MOVE_TO_ROW,
- MOVE_TO_COLUMN,
- KILL_CHAR,
- KILL_WORD,
- KILL_LINE,
- CUT_CLIPBOARD,
- COPY_CLIPBOARD,
- PASTE_CLIPBOARD,
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- ARG_TEXT_POSITION,
- ARG_EDITABLE
-};
-
-/* values for selection info */
-
-enum {
- TARGET_STRING,
- TARGET_TEXT,
- TARGET_COMPOUND_TEXT
-};
-
-static void gtk_old_editable_editable_init (GtkEditableClass *iface);
-static void gtk_old_editable_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_old_editable_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void *gtk_old_editable_get_public_chars (GtkOldEditable *old_editable,
- gint start,
- gint end);
-
-static gint gtk_old_editable_selection_clear (GtkWidget *widget,
- GdkEventSelection *event);
-static void gtk_old_editable_selection_get (GtkWidget *widget,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
-static void gtk_old_editable_selection_received (GtkWidget *widget,
- GtkSelectionData *selection_data,
- guint time);
-
-static void gtk_old_editable_set_selection (GtkOldEditable *old_editable,
- gint start,
- gint end);
-
-static void gtk_old_editable_real_set_editable (GtkOldEditable *old_editable,
- gboolean is_editable);
-static void gtk_old_editable_real_cut_clipboard (GtkOldEditable *old_editable);
-static void gtk_old_editable_real_copy_clipboard (GtkOldEditable *old_editable);
-static void gtk_old_editable_real_paste_clipboard (GtkOldEditable *old_editable);
-
-static void gtk_old_editable_insert_text (GtkEditable *editable,
- const gchar *new_text,
- gint new_text_length,
- gint *position);
-static void gtk_old_editable_delete_text (GtkEditable *editable,
- gint start_pos,
- gint end_pos);
-static gchar * gtk_old_editable_get_chars (GtkEditable *editable,
- gint start,
- gint end);
-static void gtk_old_editable_set_selection_bounds (GtkEditable *editable,
- gint start,
- gint end);
-static gboolean gtk_old_editable_get_selection_bounds (GtkEditable *editable,
- gint *start,
- gint *end);
-static void gtk_old_editable_set_position (GtkEditable *editable,
- gint position);
-static gint gtk_old_editable_get_position (GtkEditable *editable);
-static void gtk_old_editable_finalize (GObject *object);
-
-static guint editable_signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GtkOldEditable, gtk_old_editable, GTK_TYPE_WIDGET,
- G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
- gtk_old_editable_editable_init))
-
-static void
-gtk_old_editable_class_init (GtkOldEditableClass *class)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- gobject_class = (GObjectClass*) class;
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
-
- gobject_class->finalize = gtk_old_editable_finalize;
-
- object_class->set_arg = gtk_old_editable_set_arg;
- object_class->get_arg = gtk_old_editable_get_arg;
-
- widget_class->selection_clear_event = gtk_old_editable_selection_clear;
- widget_class->selection_received = gtk_old_editable_selection_received;
- widget_class->selection_get = gtk_old_editable_selection_get;
-
- class->activate = NULL;
- class->set_editable = gtk_old_editable_real_set_editable;
-
- class->move_cursor = NULL;
- class->move_word = NULL;
- class->move_page = NULL;
- class->move_to_row = NULL;
- class->move_to_column = NULL;
-
- class->kill_char = NULL;
- class->kill_word = NULL;
- class->kill_line = NULL;
-
- class->cut_clipboard = gtk_old_editable_real_cut_clipboard;
- class->copy_clipboard = gtk_old_editable_real_copy_clipboard;
- class->paste_clipboard = gtk_old_editable_real_paste_clipboard;
-
- class->update_text = NULL;
- class->get_chars = NULL;
- class->set_selection = NULL;
- class->set_position = NULL;
-
- editable_signals[ACTIVATE] =
- gtk_signal_new (I_("activate"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, activate),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- widget_class->activate_signal = editable_signals[ACTIVATE];
-
- editable_signals[SET_EDITABLE] =
- gtk_signal_new (I_("set-editable"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, set_editable),
- _gtk_marshal_VOID__BOOLEAN,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_BOOL);
-
- editable_signals[MOVE_CURSOR] =
- gtk_signal_new (I_("move-cursor"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_cursor),
- _gtk_marshal_VOID__INT_INT,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_WORD] =
- gtk_signal_new (I_("move-word"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_word),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_PAGE] =
- gtk_signal_new (I_("move-page"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_page),
- _gtk_marshal_VOID__INT_INT,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_TO_ROW] =
- gtk_signal_new (I_("move-to-row"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_to_row),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_TO_COLUMN] =
- gtk_signal_new (I_("move-to-column"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_to_column),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_CHAR] =
- gtk_signal_new (I_("kill-char"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_char),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_WORD] =
- gtk_signal_new (I_("kill-word"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_word),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_LINE] =
- gtk_signal_new (I_("kill-line"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_line),
- _gtk_marshal_VOID__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[CUT_CLIPBOARD] =
- gtk_signal_new (I_("cut-clipboard"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, cut_clipboard),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
-
- editable_signals[COPY_CLIPBOARD] =
- gtk_signal_new (I_("copy-clipboard"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, copy_clipboard),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
-
- editable_signals[PASTE_CLIPBOARD] =
- gtk_signal_new (I_("paste-clipboard"),
- GTK_RUN_LAST | GTK_RUN_ACTION,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkOldEditableClass, paste_clipboard),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
-
- gtk_object_add_arg_type ("GtkOldEditable::text-position", GTK_TYPE_INT, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_TEXT_POSITION);
- gtk_object_add_arg_type ("GtkOldEditable::editable", GTK_TYPE_BOOL, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_EDITABLE);
-}
-
-static void
-gtk_old_editable_editable_init (GtkEditableClass *iface)
-{
- iface->do_insert_text = gtk_old_editable_insert_text;
- iface->do_delete_text = gtk_old_editable_delete_text;
- iface->get_chars = gtk_old_editable_get_chars;
- iface->set_selection_bounds = gtk_old_editable_set_selection_bounds;
- iface->get_selection_bounds = gtk_old_editable_get_selection_bounds;
- iface->set_position = gtk_old_editable_set_position;
- iface->get_position = gtk_old_editable_get_position;
-}
-
-static void
-gtk_old_editable_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkEditable *editable = GTK_EDITABLE (object);
-
- switch (arg_id)
- {
- case ARG_TEXT_POSITION:
- gtk_editable_set_position (editable, GTK_VALUE_INT (*arg));
- break;
- case ARG_EDITABLE:
- gtk_signal_emit (object, editable_signals[SET_EDITABLE],
- GTK_VALUE_BOOL (*arg) != FALSE);
- break;
- default:
- break;
- }
-}
-
-static void
-gtk_old_editable_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkOldEditable *old_editable;
-
- old_editable = GTK_OLD_EDITABLE (object);
-
- switch (arg_id)
- {
- case ARG_TEXT_POSITION:
- GTK_VALUE_INT (*arg) = old_editable->current_pos;
- break;
- case ARG_EDITABLE:
- GTK_VALUE_BOOL (*arg) = old_editable->editable;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-gtk_old_editable_init (GtkOldEditable *old_editable)
-{
- static const GtkTargetEntry targets[] = {
- { "UTF8_STRING", 0, 0 },
- { "STRING", 0, 0 },
- { "TEXT", 0, 0 },
- { "COMPOUND_TEXT", 0, 0 }
- };
-
- gtk_widget_set_can_focus (GTK_WIDGET (old_editable), TRUE);
-
- old_editable->selection_start_pos = 0;
- old_editable->selection_end_pos = 0;
- old_editable->has_selection = FALSE;
- old_editable->editable = 1;
- old_editable->visible = 1;
- old_editable->clipboard_text = NULL;
-
- gtk_selection_add_targets (GTK_WIDGET (old_editable), GDK_SELECTION_PRIMARY,
- targets, G_N_ELEMENTS (targets));
-}
-
-static void
-gtk_old_editable_finalize (GObject *object)
-{
- gtk_selection_clear_targets (GTK_WIDGET (object), GDK_SELECTION_PRIMARY);
-
- G_OBJECT_CLASS (gtk_old_editable_parent_class)->finalize (object);
-}
-
-static void
-gtk_old_editable_insert_text (GtkEditable *editable,
- const gchar *new_text,
- gint new_text_length,
- gint *position)
-{
- gchar buf[64];
- gchar *text;
-
- g_object_ref (editable);
-
- if (new_text_length <= 63)
- text = buf;
- else
- text = g_new (gchar, new_text_length + 1);
-
- text[new_text_length] = '\0';
- strncpy (text, new_text, new_text_length);
-
- g_signal_emit_by_name (editable, "insert-text", text, new_text_length,
- position);
- g_signal_emit_by_name (editable, "changed");
-
- if (new_text_length > 63)
- g_free (text);
-
- g_object_unref (editable);
-}
-
-static void
-gtk_old_editable_delete_text (GtkEditable *editable,
- gint start_pos,
- gint end_pos)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (editable);
-
- g_object_ref (old_editable);
-
- g_signal_emit_by_name (editable, "delete-text", start_pos, end_pos);
- g_signal_emit_by_name (editable, "changed");
-
- if (old_editable->selection_start_pos == old_editable->selection_end_pos &&
- old_editable->has_selection)
- gtk_old_editable_claim_selection (old_editable, FALSE, GDK_CURRENT_TIME);
-
- g_object_unref (old_editable);
-}
-
-static void
-gtk_old_editable_update_text (GtkOldEditable *old_editable,
- gint start_pos,
- gint end_pos)
-{
- GtkOldEditableClass *klass = GTK_OLD_EDITABLE_GET_CLASS (old_editable);
- klass->update_text (GTK_OLD_EDITABLE (old_editable), start_pos, end_pos);
-}
-
-static gchar *
-gtk_old_editable_get_chars (GtkEditable *editable,
- gint start,
- gint end)
-{
- GtkOldEditableClass *klass = GTK_OLD_EDITABLE_GET_CLASS (editable);
- return klass->get_chars (GTK_OLD_EDITABLE (editable), start, end);
-}
-
-/*
- * Like gtk_editable_get_chars, but if the editable is not
- * visible, return asterisks; also convert result to UTF-8.
- */
-static void *
-gtk_old_editable_get_public_chars (GtkOldEditable *old_editable,
- gint start,
- gint end)
-{
- gchar *str = NULL;
- const gchar *charset;
- gboolean need_conversion = !g_get_charset (&charset);
-
- if (old_editable->visible)
- {
- GError *error = NULL;
- gchar *tmp = gtk_editable_get_chars (GTK_EDITABLE (old_editable), start, end);
-
- if (need_conversion)
- {
- str = g_convert (tmp, -1,
- "UTF-8", charset,
- NULL, NULL, &error);
-
- if (!str)
- {
- g_warning ("Cannot convert text from charset to UTF-8 %s: %s", charset, error->message);
- g_error_free (error);
- }
-
- g_free (tmp);
- }
- else
- str = tmp;
- }
- else
- {
- gint i;
- gint nchars = end - start;
-
- if (nchars < 0)
- nchars = -nchars;
-
- str = g_new (gchar, nchars + 1);
- for (i = 0; i<nchars; i++)
- str[i] = '*';
- str[i] = '\0';
- }
-
- return str;
-}
-
-static void
-gtk_old_editable_set_selection (GtkOldEditable *old_editable,
- gint start_pos,
- gint end_pos)
-{
- GtkOldEditableClass *klass = GTK_OLD_EDITABLE_GET_CLASS (old_editable);
- klass->set_selection (old_editable, start_pos, end_pos);
-}
-
-static void
-gtk_old_editable_set_position (GtkEditable *editable,
- gint position)
-{
- GtkOldEditableClass *klass = GTK_OLD_EDITABLE_GET_CLASS (editable);
-
- klass->set_position (GTK_OLD_EDITABLE (editable), position);
-}
-
-static gint
-gtk_old_editable_get_position (GtkEditable *editable)
-{
- return GTK_OLD_EDITABLE (editable)->current_pos;
-}
-
-static gint
-gtk_old_editable_selection_clear (GtkWidget *widget,
- GdkEventSelection *event)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
-
- /* Let the selection handling code know that the selection
- * has been changed, since we've overriden the default handler */
- if (!GTK_WIDGET_CLASS (gtk_old_editable_parent_class)->selection_clear_event (widget, event))
- return FALSE;
-
- if (old_editable->has_selection)
- {
- old_editable->has_selection = FALSE;
- gtk_old_editable_update_text (old_editable, old_editable->selection_start_pos,
- old_editable->selection_end_pos);
- }
-
- return TRUE;
-}
-
-static void
-gtk_old_editable_selection_get (GtkWidget *widget,
- GtkSelectionData *selection_data,
- guint info,
- guint time)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
- gint selection_start_pos;
- gint selection_end_pos;
-
- gchar *str;
-
- selection_start_pos = MIN (old_editable->selection_start_pos, old_editable->selection_end_pos);
- selection_end_pos = MAX (old_editable->selection_start_pos, old_editable->selection_end_pos);
-
- str = gtk_old_editable_get_public_chars (old_editable,
- selection_start_pos,
- selection_end_pos);
-
- if (str)
- {
- gtk_selection_data_set_text (selection_data, str, -1);
- g_free (str);
- }
-}
-
-static void
-gtk_old_editable_paste_received (GtkOldEditable *old_editable,
- const gchar *text,
- gboolean is_clipboard)
-{
- const gchar *str = NULL;
- const gchar *charset;
- gboolean need_conversion = FALSE;
-
- if (text)
- {
- GError *error = NULL;
-
- need_conversion = !g_get_charset (&charset);
-
- if (need_conversion)
- {
- str = g_convert_with_fallback (text, -1,
- charset, "UTF-8", NULL,
- NULL, NULL, &error);
- if (!str)
- {
- g_warning ("Cannot convert text from UTF-8 to %s: %s",
- charset, error->message);
- g_error_free (error);
- return;
- }
- }
- else
- str = text;
- }
-
- if (str)
- {
- gboolean reselect;
- gint old_pos;
- gint tmp_pos;
-
- reselect = FALSE;
-
- if ((old_editable->selection_start_pos != old_editable->selection_end_pos) &&
- (!old_editable->has_selection || is_clipboard))
- {
- reselect = TRUE;
-
- /* Don't want to call gtk_editable_delete_selection here if we are going
- * to reclaim the selection to avoid extra server traffic */
- if (old_editable->has_selection)
- {
- gtk_editable_delete_text (GTK_EDITABLE (old_editable),
- MIN (old_editable->selection_start_pos, old_editable->selection_end_pos),
- MAX (old_editable->selection_start_pos, old_editable->selection_end_pos));
- }
- else
- gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
- }
-
- tmp_pos = old_pos = old_editable->current_pos;
-
- gtk_editable_insert_text (GTK_EDITABLE (old_editable), str, -1, &tmp_pos);
-
- if (reselect)
- gtk_old_editable_set_selection (old_editable, old_pos, old_editable->current_pos);
-
- if (str && str != text)
- g_free ((gchar *) str);
- }
-}
-
-static void
-gtk_old_editable_selection_received (GtkWidget *widget,
- GtkSelectionData *selection_data,
- guint time)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
-
- guchar *text = gtk_selection_data_get_text (selection_data);
-
- if (!text)
- {
- /* If we asked for UTF8 and didn't get it, try text; if we asked
- * for text and didn't get it, try string. If we asked for
- * anything else and didn't get it, give up.
- */
- if (selection_data->target == gdk_atom_intern_static_string ("UTF8_STRING"))
- {
- gtk_selection_convert (widget, GDK_SELECTION_PRIMARY,
- gdk_atom_intern_static_string ("TEXT"),
- time);
- return;
- }
- else if (selection_data->target == gdk_atom_intern_static_string ("TEXT"))
- {
- gtk_selection_convert (widget, GDK_SELECTION_PRIMARY,
- GDK_TARGET_STRING,
- time);
- return;
- }
- }
-
- if (text)
- {
- gtk_old_editable_paste_received (old_editable, (gchar *) text, FALSE);
- g_free (text);
- }
-}
-
-static void
-old_editable_text_received_cb (GtkClipboard *clipboard,
- const gchar *text,
- gpointer data)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (data);
-
- gtk_old_editable_paste_received (old_editable, text, TRUE);
- g_object_unref (G_OBJECT (old_editable));
-}
-
-/**
- * gtk_old_editable_claim_selection:
- * @old_editable: a #GtkOldEditable
- * @claim: if %TRUE, claim ownership of the selection, if %FALSE, give
- * up ownership
- * @time_: timestamp for this operation
- *
- * Claims or gives up ownership of the selection.
- */
-void
-gtk_old_editable_claim_selection (GtkOldEditable *old_editable,
- gboolean claim,
- guint32 time)
-{
- GtkWidget *widget;
- GdkDisplay *display;
-
- g_return_if_fail (GTK_IS_OLD_EDITABLE (old_editable));
- widget = GTK_WIDGET (old_editable);
- g_return_if_fail (gtk_widget_get_realized (widget));
-
- display = gtk_widget_get_display (widget);
- old_editable->has_selection = FALSE;
-
- if (claim)
- {
- if (gtk_selection_owner_set_for_display (display, widget,
- GDK_SELECTION_PRIMARY, time))
- old_editable->has_selection = TRUE;
- }
- else
- {
- if (gdk_selection_owner_get_for_display (display, GDK_SELECTION_PRIMARY) == widget->window)
- gtk_selection_owner_set_for_display (display,
- NULL,
- GDK_SELECTION_PRIMARY, time);
- }
-}
-
-static void
-gtk_old_editable_set_selection_bounds (GtkEditable *editable,
- gint start,
- gint end)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (editable);
-
- if (gtk_widget_get_realized (GTK_WIDGET (editable)))
- gtk_old_editable_claim_selection (old_editable, start != end, GDK_CURRENT_TIME);
-
- gtk_old_editable_set_selection (old_editable, start, end);
-}
-
-static gboolean
-gtk_old_editable_get_selection_bounds (GtkEditable *editable,
- gint *start,
- gint *end)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (editable);
-
- *start = old_editable->selection_start_pos;
- *end = old_editable->selection_end_pos;
-
- return (old_editable->selection_start_pos != old_editable->selection_end_pos);
-}
-
-static void
-gtk_old_editable_real_set_editable (GtkOldEditable *old_editable,
- gboolean is_editable)
-{
- is_editable = is_editable != FALSE;
-
- if (old_editable->editable != is_editable)
- {
- old_editable->editable = is_editable;
- gtk_widget_queue_draw (GTK_WIDGET (old_editable));
- }
-}
-
-static void
-gtk_old_editable_real_cut_clipboard (GtkOldEditable *old_editable)
-{
- gtk_old_editable_real_copy_clipboard (old_editable);
- gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
-}
-
-static void
-gtk_old_editable_real_copy_clipboard (GtkOldEditable *old_editable)
-{
- gint selection_start_pos;
- gint selection_end_pos;
-
- selection_start_pos = MIN (old_editable->selection_start_pos, old_editable->selection_end_pos);
- selection_end_pos = MAX (old_editable->selection_start_pos, old_editable->selection_end_pos);
-
- if (selection_start_pos != selection_end_pos)
- {
- gchar *text = gtk_old_editable_get_public_chars (old_editable,
- selection_start_pos,
- selection_end_pos);
-
- if (text)
- {
- GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (old_editable),
- GDK_SELECTION_CLIPBOARD);
-
- gtk_clipboard_set_text (clipboard, text, -1);
- g_free (text);
- }
- }
-}
-
-static void
-gtk_old_editable_real_paste_clipboard (GtkOldEditable *old_editable)
-{
- GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (old_editable),
- GDK_SELECTION_CLIPBOARD);
-
- g_object_ref (G_OBJECT (old_editable));
- gtk_clipboard_request_text (clipboard, old_editable_text_received_cb, old_editable);
-}
-
-/**
- * gtk_old_editable_changed:
- * @old_editable: a #GtkOldEditable
- *
- * Emits the ::changed signal on @old_editable.
- */
-void
-gtk_old_editable_changed (GtkOldEditable *old_editable)
-{
- g_return_if_fail (GTK_IS_OLD_EDITABLE (old_editable));
-
- g_signal_emit_by_name (old_editable, "changed");
-}
-
-#define __GTK_OLD_EDITABLE_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkoldeditable.h b/gtk/gtkoldeditable.h
deleted file mode 100644
index ba497cd1cc..0000000000
--- a/gtk/gtkoldeditable.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_OLD_EDITABLE_H__
-#define __GTK_OLD_EDITABLE_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_OLD_EDITABLE (gtk_old_editable_get_type ())
-#define GTK_OLD_EDITABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_OLD_EDITABLE, GtkOldEditable))
-#define GTK_OLD_EDITABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_OLD_EDITABLE, GtkOldEditableClass))
-#define GTK_IS_OLD_EDITABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_OLD_EDITABLE))
-#define GTK_IS_OLD_EDITABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_OLD_EDITABLE))
-#define GTK_OLD_EDITABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_OLD_EDITABLE, GtkOldEditableClass))
-
-
-typedef struct _GtkOldEditable GtkOldEditable;
-typedef struct _GtkOldEditableClass GtkOldEditableClass;
-
-typedef void (*GtkTextFunction) (GtkOldEditable *editable, guint32 time_);
-
-struct _GtkOldEditable
-{
- GtkWidget widget;
-
- /*< public >*/
- guint current_pos;
-
- guint selection_start_pos;
- guint selection_end_pos;
- guint has_selection : 1;
-
- /*< private >*/
- guint editable : 1;
- guint visible : 1;
-
- gchar *clipboard_text;
-};
-
-struct _GtkOldEditableClass
-{
- GtkWidgetClass parent_class;
-
- /* Bindings actions */
- void (* activate) (GtkOldEditable *editable);
- void (* set_editable) (GtkOldEditable *editable,
- gboolean is_editable);
- void (* move_cursor) (GtkOldEditable *editable,
- gint x,
- gint y);
- void (* move_word) (GtkOldEditable *editable,
- gint n);
- void (* move_page) (GtkOldEditable *editable,
- gint x,
- gint y);
- void (* move_to_row) (GtkOldEditable *editable,
- gint row);
- void (* move_to_column) (GtkOldEditable *editable,
- gint row);
- void (* kill_char) (GtkOldEditable *editable,
- gint direction);
- void (* kill_word) (GtkOldEditable *editable,
- gint direction);
- void (* kill_line) (GtkOldEditable *editable,
- gint direction);
- void (* cut_clipboard) (GtkOldEditable *editable);
- void (* copy_clipboard) (GtkOldEditable *editable);
- void (* paste_clipboard) (GtkOldEditable *editable);
-
- /* Virtual functions. get_chars is in paricular not a signal because
- * it returns malloced memory. The others are not signals because
- * they would not be particularly useful as such. (All changes to
- * selection and position do not go through these functions)
- */
- void (* update_text) (GtkOldEditable *editable,
- gint start_pos,
- gint end_pos);
- gchar* (* get_chars) (GtkOldEditable *editable,
- gint start_pos,
- gint end_pos);
- void (* set_selection)(GtkOldEditable *editable,
- gint start_pos,
- gint end_pos);
- void (* set_position) (GtkOldEditable *editable,
- gint position);
-};
-
-GType gtk_old_editable_get_type (void) G_GNUC_CONST;
-void gtk_old_editable_claim_selection (GtkOldEditable *old_editable,
- gboolean claim,
- guint32 time_);
-void gtk_old_editable_changed (GtkOldEditable *old_editable);
-
-G_END_DECLS
-
-#endif /* __GTK_OLD_EDITABLE_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkoptionmenu.c b/gtk/gtkoptionmenu.c
deleted file mode 100644
index c53018c478..0000000000
--- a/gtk/gtkoptionmenu.c
+++ /dev/null
@@ -1,1036 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Jsh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include "gdk/gdkkeysyms.h"
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "gtkmenu.h"
-#include "gtkmenuitem.h"
-#include "gtkmarshalers.h"
-#include "gtkoptionmenu.h"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-#define CHILD_LEFT_SPACING 4
-#define CHILD_RIGHT_SPACING 1
-#define CHILD_TOP_SPACING 1
-#define CHILD_BOTTOM_SPACING 1
-
-typedef struct _GtkOptionMenuProps GtkOptionMenuProps;
-
-struct _GtkOptionMenuProps
-{
- gboolean interior_focus;
- GtkRequisition indicator_size;
- GtkBorder indicator_spacing;
- gint focus_width;
- gint focus_pad;
-};
-
-static const GtkOptionMenuProps default_props = {
- TRUE,
- { 7, 13 },
- { 7, 5, 2, 2 }, /* Left, right, top, bottom */
- 1,
- 0
-};
-
-static void gtk_option_menu_destroy (GtkObject *object);
-static void gtk_option_menu_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_option_menu_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_option_menu_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_option_menu_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_option_menu_paint (GtkWidget *widget,
- GdkRectangle *area);
-static gint gtk_option_menu_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static gint gtk_option_menu_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_option_menu_key_press (GtkWidget *widget,
- GdkEventKey *event);
-static void gtk_option_menu_selection_done (GtkMenuShell *menu_shell,
- GtkOptionMenu *option_menu);
-static void gtk_option_menu_update_contents (GtkOptionMenu *option_menu);
-static void gtk_option_menu_remove_contents (GtkOptionMenu *option_menu);
-static void gtk_option_menu_calc_size (GtkOptionMenu *option_menu);
-static void gtk_option_menu_position (GtkMenu *menu,
- gint *x,
- gint *y,
- gint *scroll_offet,
- gpointer user_data);
-static void gtk_option_menu_show_all (GtkWidget *widget);
-static void gtk_option_menu_hide_all (GtkWidget *widget);
-static gboolean gtk_option_menu_mnemonic_activate (GtkWidget *widget,
- gboolean group_cycling);
-static GType gtk_option_menu_child_type (GtkContainer *container);
-static gint gtk_option_menu_scroll_event (GtkWidget *widget,
- GdkEventScroll *event);
-
-enum
-{
- CHANGED,
- LAST_SIGNAL
-};
-
-enum
-{
- PROP_0,
- PROP_MENU
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (GtkOptionMenu, gtk_option_menu, GTK_TYPE_BUTTON)
-
-static void
-gtk_option_menu_class_init (GtkOptionMenuClass *class)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- gobject_class = (GObjectClass*) class;
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- container_class = (GtkContainerClass*) class;
-
- signals[CHANGED] =
- g_signal_new (I_("changed"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkOptionMenuClass, changed),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
- gobject_class->set_property = gtk_option_menu_set_property;
- gobject_class->get_property = gtk_option_menu_get_property;
- object_class->destroy = gtk_option_menu_destroy;
-
- widget_class->size_request = gtk_option_menu_size_request;
- widget_class->size_allocate = gtk_option_menu_size_allocate;
- widget_class->expose_event = gtk_option_menu_expose;
- widget_class->button_press_event = gtk_option_menu_button_press;
- widget_class->key_press_event = gtk_option_menu_key_press;
- widget_class->scroll_event = gtk_option_menu_scroll_event;
- widget_class->show_all = gtk_option_menu_show_all;
- widget_class->hide_all = gtk_option_menu_hide_all;
- widget_class->mnemonic_activate = gtk_option_menu_mnemonic_activate;
-
- container_class->child_type = gtk_option_menu_child_type;
-
- g_object_class_install_property (gobject_class,
- PROP_MENU,
- g_param_spec_object ("menu",
- P_("Menu"),
- P_("The menu of options"),
- GTK_TYPE_MENU,
- GTK_PARAM_READWRITE));
-
- gtk_widget_class_install_style_property (widget_class,
- g_param_spec_boxed ("indicator-size",
- P_("Indicator Size"),
- P_("Size of dropdown indicator"),
- GTK_TYPE_REQUISITION,
- GTK_PARAM_READABLE));
- gtk_widget_class_install_style_property (widget_class,
- g_param_spec_boxed ("indicator-spacing",
- P_("Indicator Spacing"),
- P_("Spacing around indicator"),
- GTK_TYPE_BORDER,
- GTK_PARAM_READABLE));
-}
-
-static GType
-gtk_option_menu_child_type (GtkContainer *container)
-{
- return G_TYPE_NONE;
-}
-
-static void
-gtk_option_menu_init (GtkOptionMenu *option_menu)
-{
- GtkWidget *widget = GTK_WIDGET (option_menu);
-
- gtk_widget_set_can_focus (widget, TRUE);
- gtk_widget_set_can_default (widget, FALSE);
- gtk_widget_set_receives_default (widget, FALSE);
-
- option_menu->menu = NULL;
- option_menu->menu_item = NULL;
- option_menu->width = 0;
- option_menu->height = 0;
-}
-
-GtkWidget*
-gtk_option_menu_new (void)
-{
- return g_object_new (GTK_TYPE_OPTION_MENU, NULL);
-}
-
-GtkWidget*
-gtk_option_menu_get_menu (GtkOptionMenu *option_menu)
-{
- g_return_val_if_fail (GTK_IS_OPTION_MENU (option_menu), NULL);
-
- return option_menu->menu;
-}
-
-static void
-gtk_option_menu_detacher (GtkWidget *widget,
- GtkMenu *menu)
-{
- GtkOptionMenu *option_menu;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
-
- option_menu = GTK_OPTION_MENU (widget);
- g_return_if_fail (option_menu->menu == (GtkWidget*) menu);
-
- gtk_option_menu_remove_contents (option_menu);
- g_signal_handlers_disconnect_by_func (option_menu->menu,
- gtk_option_menu_selection_done,
- option_menu);
- g_signal_handlers_disconnect_by_func (option_menu->menu,
- gtk_option_menu_calc_size,
- option_menu);
-
- option_menu->menu = NULL;
- g_object_notify (G_OBJECT (option_menu), "menu");
-}
-
-void
-gtk_option_menu_set_menu (GtkOptionMenu *option_menu,
- GtkWidget *menu)
-{
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
- g_return_if_fail (GTK_IS_MENU (menu));
-
- if (option_menu->menu != menu)
- {
- gtk_option_menu_remove_menu (option_menu);
-
- option_menu->menu = menu;
- gtk_menu_attach_to_widget (GTK_MENU (menu),
- GTK_WIDGET (option_menu),
- gtk_option_menu_detacher);
-
- gtk_option_menu_calc_size (option_menu);
-
- g_signal_connect_after (option_menu->menu, "selection-done",
- G_CALLBACK (gtk_option_menu_selection_done),
- option_menu);
- g_signal_connect_swapped (option_menu->menu, "size-request",
- G_CALLBACK (gtk_option_menu_calc_size),
- option_menu);
-
- if (GTK_WIDGET (option_menu)->parent)
- gtk_widget_queue_resize (GTK_WIDGET (option_menu));
-
- gtk_option_menu_update_contents (option_menu);
-
- g_object_notify (G_OBJECT (option_menu), "menu");
- }
-}
-
-void
-gtk_option_menu_remove_menu (GtkOptionMenu *option_menu)
-{
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- if (option_menu->menu)
- {
- if (GTK_MENU_SHELL (option_menu->menu)->active)
- gtk_menu_shell_cancel (GTK_MENU_SHELL (option_menu->menu));
-
- gtk_menu_detach (GTK_MENU (option_menu->menu));
- }
-}
-
-void
-gtk_option_menu_set_history (GtkOptionMenu *option_menu,
- guint index)
-{
- GtkWidget *menu_item;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- if (option_menu->menu)
- {
- gtk_menu_set_active (GTK_MENU (option_menu->menu), index);
- menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
-
- if (menu_item != option_menu->menu_item)
- gtk_option_menu_update_contents (option_menu);
- }
-}
-
-/**
- * gtk_option_menu_get_history:
- * @option_menu: a #GtkOptionMenu
- *
- * Retrieves the index of the currently selected menu item. The menu
- * items are numbered from top to bottom, starting with 0.
- *
- * Return value: index of the selected menu item, or -1 if there are no menu items
- * Deprecated: 2.4: Use #GtkComboBox instead.
- **/
-gint
-gtk_option_menu_get_history (GtkOptionMenu *option_menu)
-{
- GtkWidget *active_widget;
-
- g_return_val_if_fail (GTK_IS_OPTION_MENU (option_menu), -1);
-
- if (option_menu->menu)
- {
- active_widget = gtk_menu_get_active (GTK_MENU (option_menu->menu));
-
- if (active_widget)
- return g_list_index (GTK_MENU_SHELL (option_menu->menu)->children,
- active_widget);
- else
- return -1;
- }
- else
- return -1;
-}
-
-static void
-gtk_option_menu_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkOptionMenu *option_menu = GTK_OPTION_MENU (object);
-
- switch (prop_id)
- {
- case PROP_MENU:
- gtk_option_menu_set_menu (option_menu, g_value_get_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_option_menu_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkOptionMenu *option_menu = GTK_OPTION_MENU (object);
-
- switch (prop_id)
- {
- case PROP_MENU:
- g_value_set_object (value, option_menu->menu);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_option_menu_destroy (GtkObject *object)
-{
- GtkOptionMenu *option_menu = GTK_OPTION_MENU (object);
-
- if (option_menu->menu)
- gtk_widget_destroy (option_menu->menu);
-
- GTK_OBJECT_CLASS (gtk_option_menu_parent_class)->destroy (object);
-}
-
-static void
-gtk_option_menu_get_props (GtkOptionMenu *option_menu,
- GtkOptionMenuProps *props)
-{
- GtkRequisition *indicator_size;
- GtkBorder *indicator_spacing;
-
- gtk_widget_style_get (GTK_WIDGET (option_menu),
- "indicator-size", &indicator_size,
- "indicator-spacing", &indicator_spacing,
- "interior-focus", &props->interior_focus,
- "focus-line-width", &props->focus_width,
- "focus-padding", &props->focus_pad,
- NULL);
-
- if (indicator_size)
- props->indicator_size = *indicator_size;
- else
- props->indicator_size = default_props.indicator_size;
-
- if (indicator_spacing)
- props->indicator_spacing = *indicator_spacing;
- else
- props->indicator_spacing = default_props.indicator_spacing;
-
- gtk_requisition_free (indicator_size);
- gtk_border_free (indicator_spacing);
-}
-
-static void
-gtk_option_menu_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkOptionMenu *option_menu = GTK_OPTION_MENU (widget);
- GtkOptionMenuProps props;
- gint tmp;
- GtkRequisition child_requisition = { 0, 0 };
-
- gtk_option_menu_get_props (option_menu, &props);
-
- if (GTK_BIN (option_menu)->child && gtk_widget_get_visible (GTK_BIN (option_menu)->child))
- {
- gtk_widget_size_request (GTK_BIN (option_menu)->child, &child_requisition);
-
- requisition->width += child_requisition.width;
- requisition->height += child_requisition.height;
- }
-
- requisition->width = ((GTK_CONTAINER (widget)->border_width +
- GTK_WIDGET (widget)->style->xthickness + props.focus_pad) * 2 +
- MAX (child_requisition.width, option_menu->width) +
- props.indicator_size.width +
- props.indicator_spacing.left + props.indicator_spacing.right +
- CHILD_LEFT_SPACING + CHILD_RIGHT_SPACING + props.focus_width * 2);
- requisition->height = ((GTK_CONTAINER (widget)->border_width +
- GTK_WIDGET (widget)->style->ythickness + props.focus_pad) * 2 +
- MAX (child_requisition.height, option_menu->height) +
- CHILD_TOP_SPACING + CHILD_BOTTOM_SPACING + props.focus_width * 2);
-
- tmp = (requisition->height - MAX (child_requisition.height, option_menu->height) +
- props.indicator_size.height + props.indicator_spacing.top + props.indicator_spacing.bottom);
- requisition->height = MAX (requisition->height, tmp);
-}
-
-static void
-gtk_option_menu_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkWidget *child;
- GtkButton *button = GTK_BUTTON (widget);
- GtkAllocation child_allocation;
- GtkOptionMenuProps props;
- gint border_width;
-
- gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
- border_width = GTK_CONTAINER (widget)->border_width;
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (button->event_window,
- allocation->x + border_width, allocation->y + border_width,
- allocation->width - border_width * 2, allocation->height - border_width * 2);
-
- child = GTK_BIN (widget)->child;
- if (child && gtk_widget_get_visible (child))
- {
- gint xthickness = GTK_WIDGET (widget)->style->xthickness;
- gint ythickness = GTK_WIDGET (widget)->style->ythickness;
-
- child_allocation.x = widget->allocation.x + border_width + xthickness + props.focus_width + props.focus_pad + CHILD_LEFT_SPACING;
- child_allocation.y = widget->allocation.y + border_width + ythickness + props.focus_width + props.focus_pad + CHILD_TOP_SPACING;
- child_allocation.width = MAX (1, allocation->width - (border_width + xthickness + props.focus_width + props.focus_pad) * 2 -
- props.indicator_size.width - props.indicator_spacing.left - props.indicator_spacing.right -
- CHILD_LEFT_SPACING - CHILD_RIGHT_SPACING);
- child_allocation.height = MAX (1, allocation->height - (border_width + ythickness + props.focus_width + props.focus_pad) * 2 -
- CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING);
-
- if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL)
- child_allocation.x += props.indicator_size.width + props.indicator_spacing.left + props.indicator_spacing.right;
-
- gtk_widget_size_allocate (child, &child_allocation);
- }
-}
-
-static void
-gtk_option_menu_paint (GtkWidget *widget,
- GdkRectangle *area)
-{
- GdkRectangle button_area;
- GtkOptionMenuProps props;
- gint border_width;
- gint tab_x;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
- g_return_if_fail (area != NULL);
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- border_width = GTK_CONTAINER (widget)->border_width;
- gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
-
- button_area.x = widget->allocation.x + border_width;
- button_area.y = widget->allocation.y + border_width;
- button_area.width = widget->allocation.width - 2 * border_width;
- button_area.height = widget->allocation.height - 2 * border_width;
-
- if (!props.interior_focus && gtk_widget_has_focus (widget))
- {
- button_area.x += props.focus_width + props.focus_pad;
- button_area.y += props.focus_width + props.focus_pad;
- button_area.width -= 2 * (props.focus_width + props.focus_pad);
- button_area.height -= 2 * (props.focus_width + props.focus_pad);
- }
-
- gtk_paint_box (widget->style, widget->window,
- gtk_widget_get_state (widget), GTK_SHADOW_OUT,
- area, widget, "optionmenu",
- button_area.x, button_area.y,
- button_area.width, button_area.height);
-
- if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL)
- tab_x = button_area.x + props.indicator_spacing.right +
- widget->style->xthickness;
- else
- tab_x = button_area.x + button_area.width -
- props.indicator_size.width - props.indicator_spacing.right -
- widget->style->xthickness;
-
- gtk_paint_tab (widget->style, widget->window,
- gtk_widget_get_state (widget), GTK_SHADOW_OUT,
- area, widget, "optionmenutab",
- tab_x,
- button_area.y + (button_area.height - props.indicator_size.height) / 2,
- props.indicator_size.width, props.indicator_size.height);
-
- if (gtk_widget_has_focus (widget))
- {
- if (props.interior_focus)
- {
- button_area.x += widget->style->xthickness + props.focus_pad;
- button_area.y += widget->style->ythickness + props.focus_pad;
- button_area.width -= 2 * (widget->style->xthickness + props.focus_pad) +
- props.indicator_spacing.left +
- props.indicator_spacing.right +
- props.indicator_size.width;
- button_area.height -= 2 * (widget->style->ythickness + props.focus_pad);
- if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL)
- button_area.x += props.indicator_spacing.left +
- props.indicator_spacing.right +
- props.indicator_size.width;
- }
- else
- {
- button_area.x -= props.focus_width + props.focus_pad;
- button_area.y -= props.focus_width + props.focus_pad;
- button_area.width += 2 * (props.focus_width + props.focus_pad);
- button_area.height += 2 * (props.focus_width + props.focus_pad);
- }
-
- gtk_paint_focus (widget->style, widget->window, gtk_widget_get_state (widget),
- area, widget, "button",
- button_area.x,
- button_area.y,
- button_area.width,
- button_area.height);
- }
- }
-}
-
-static gint
-gtk_option_menu_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- g_return_val_if_fail (GTK_IS_OPTION_MENU (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- gtk_option_menu_paint (widget, &event->area);
-
-
- /* The following code tries to draw the child in two places at
- * once. It fails miserably for several reasons
- *
- * - If the child is not no-window, removing generates
- * more expose events. Bad, bad, bad.
- *
- * - Even if the child is no-window, removing it now (properly)
- * clears the space where it was, so it does no good
- */
-
-#if 0
- remove_child = FALSE;
- child = GTK_BUTTON (widget)->child;
-
- if (!child)
- {
- if (!GTK_OPTION_MENU (widget)->menu)
- return FALSE;
- gtk_option_menu_update_contents (GTK_OPTION_MENU (widget));
- child = GTK_BUTTON (widget)->child;
- if (!child)
- return FALSE;
- remove_child = TRUE;
- }
-
- child_event = *event;
-
- if (!gtk_widget_get_has_window (child) &&
- gtk_widget_intersect (child, &event->area, &child_event.area))
- gtk_widget_event (child, (GdkEvent*) &child_event);
-
- if (remove_child)
- gtk_option_menu_remove_contents (GTK_OPTION_MENU (widget));
-#else
- if (GTK_BIN (widget)->child)
- gtk_container_propagate_expose (GTK_CONTAINER (widget),
- GTK_BIN (widget)->child,
- event);
-#endif /* 0 */
- }
-
- return FALSE;
-}
-
-static gint
-gtk_option_menu_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkOptionMenu *option_menu;
- GtkWidget *menu_item;
-
- g_return_val_if_fail (GTK_IS_OPTION_MENU (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- option_menu = GTK_OPTION_MENU (widget);
-
- if ((event->type == GDK_BUTTON_PRESS) &&
- (event->button == 1))
- {
- gtk_option_menu_remove_contents (option_menu);
- gtk_menu_popup (GTK_MENU (option_menu->menu), NULL, NULL,
- gtk_option_menu_position, option_menu,
- event->button, event->time);
- menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
- if (menu_item)
- gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->menu), menu_item);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-gtk_option_menu_key_press (GtkWidget *widget,
- GdkEventKey *event)
-{
- GtkOptionMenu *option_menu;
- GtkWidget *menu_item;
-
- g_return_val_if_fail (GTK_IS_OPTION_MENU (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- option_menu = GTK_OPTION_MENU (widget);
-
- switch (event->keyval)
- {
- case GDK_KP_Space:
- case GDK_space:
- gtk_option_menu_remove_contents (option_menu);
- gtk_menu_popup (GTK_MENU (option_menu->menu), NULL, NULL,
- gtk_option_menu_position, option_menu,
- 0, event->time);
- menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
- if (menu_item)
- gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->menu), menu_item);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-gtk_option_menu_selection_done (GtkMenuShell *menu_shell,
- GtkOptionMenu *option_menu)
-{
- g_return_if_fail (menu_shell != NULL);
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- gtk_option_menu_update_contents (option_menu);
-}
-
-static void
-gtk_option_menu_changed (GtkOptionMenu *option_menu)
-{
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- g_signal_emit (option_menu, signals[CHANGED], 0);
-}
-
-static void
-gtk_option_menu_select_first_sensitive (GtkOptionMenu *option_menu)
-{
- if (option_menu->menu)
- {
- GList *children = GTK_MENU_SHELL (option_menu->menu)->children;
- gint index = 0;
-
- while (children)
- {
- if (gtk_widget_get_sensitive (children->data))
- {
- gtk_option_menu_set_history (option_menu, index);
- return;
- }
-
- children = children->next;
- index++;
- }
- }
-}
-
-static void
-gtk_option_menu_item_state_changed_cb (GtkWidget *widget,
- GtkStateType previous_state,
- GtkOptionMenu *option_menu)
-{
- GtkWidget *child = GTK_BIN (option_menu)->child;
-
- if (child && gtk_widget_get_sensitive (child) != gtk_widget_is_sensitive (widget))
- gtk_widget_set_sensitive (child, gtk_widget_is_sensitive (widget));
-}
-
-static void
-gtk_option_menu_item_destroy_cb (GtkWidget *widget,
- GtkOptionMenu *option_menu)
-{
- GtkWidget *child = GTK_BIN (option_menu)->child;
-
- if (child)
- {
- g_object_ref (child);
- gtk_option_menu_remove_contents (option_menu);
- gtk_widget_destroy (child);
- g_object_unref (child);
-
- gtk_option_menu_select_first_sensitive (option_menu);
- }
-}
-
-static void
-gtk_option_menu_update_contents (GtkOptionMenu *option_menu)
-{
- GtkWidget *child;
- GtkRequisition child_requisition;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- if (option_menu->menu)
- {
- GtkWidget *old_item = option_menu->menu_item;
-
- gtk_option_menu_remove_contents (option_menu);
-
- option_menu->menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
- if (option_menu->menu_item)
- {
- g_object_ref (option_menu->menu_item);
- child = GTK_BIN (option_menu->menu_item)->child;
- if (child)
- {
- if (!gtk_widget_is_sensitive (option_menu->menu_item))
- gtk_widget_set_sensitive (child, FALSE);
- gtk_widget_reparent (child, GTK_WIDGET (option_menu));
- }
-
- g_signal_connect (option_menu->menu_item, "state-changed",
- G_CALLBACK (gtk_option_menu_item_state_changed_cb), option_menu);
- g_signal_connect (option_menu->menu_item, "destroy",
- G_CALLBACK (gtk_option_menu_item_destroy_cb), option_menu);
-
- gtk_widget_size_request (child, &child_requisition);
- gtk_widget_size_allocate (GTK_WIDGET (option_menu),
- &(GTK_WIDGET (option_menu)->allocation));
-
- if (GTK_WIDGET_DRAWABLE (option_menu))
- gtk_widget_queue_draw (GTK_WIDGET (option_menu));
- }
-
- if (old_item != option_menu->menu_item)
- gtk_option_menu_changed (option_menu);
- }
-}
-
-static void
-gtk_option_menu_remove_contents (GtkOptionMenu *option_menu)
-{
- GtkWidget *child;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- if (option_menu->menu_item)
- {
- child = GTK_BIN (option_menu)->child;
-
- if (child)
- {
- gtk_widget_set_sensitive (child, TRUE);
- gtk_widget_set_state (child, GTK_STATE_NORMAL);
- gtk_widget_reparent (child, option_menu->menu_item);
- }
-
- g_signal_handlers_disconnect_by_func (option_menu->menu_item,
- gtk_option_menu_item_state_changed_cb,
- option_menu);
- g_signal_handlers_disconnect_by_func (option_menu->menu_item,
- gtk_option_menu_item_destroy_cb,
- option_menu);
-
- g_object_unref (option_menu->menu_item);
- option_menu->menu_item = NULL;
- }
-}
-
-static void
-gtk_option_menu_calc_size (GtkOptionMenu *option_menu)
-{
- GtkWidget *child;
- GList *children;
- GtkRequisition child_requisition;
- gint old_width = option_menu->width;
- gint old_height = option_menu->height;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
-
- option_menu->width = 0;
- option_menu->height = 0;
-
- if (option_menu->menu)
- {
- children = GTK_MENU_SHELL (option_menu->menu)->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child))
- {
- GtkWidget *inner = GTK_BIN (child)->child;
-
- if (inner)
- {
- gtk_widget_size_request (inner, &child_requisition);
-
- option_menu->width = MAX (option_menu->width, child_requisition.width);
- option_menu->height = MAX (option_menu->height, child_requisition.height);
- }
- }
- }
- }
-
- if (old_width != option_menu->width || old_height != option_menu->height)
- gtk_widget_queue_resize (GTK_WIDGET (option_menu));
-}
-
-static void
-gtk_option_menu_position (GtkMenu *menu,
- gint *x,
- gint *y,
- gboolean *push_in,
- gpointer user_data)
-{
- GtkOptionMenu *option_menu;
- GtkWidget *active;
- GtkWidget *child;
- GtkWidget *widget;
- GtkRequisition requisition;
- GList *children;
- gint screen_width;
- gint menu_xpos;
- gint menu_ypos;
- gint menu_width;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (user_data));
-
- option_menu = GTK_OPTION_MENU (user_data);
- widget = GTK_WIDGET (option_menu);
-
- gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition);
- menu_width = requisition.width;
-
- active = gtk_menu_get_active (GTK_MENU (option_menu->menu));
- gdk_window_get_origin (widget->window, &menu_xpos, &menu_ypos);
-
- /* set combo box type hint for menu popup */
- gtk_window_set_type_hint (GTK_WINDOW (GTK_MENU (option_menu->menu)->toplevel),
- GDK_WINDOW_TYPE_HINT_COMBO);
-
- menu_xpos += widget->allocation.x;
- menu_ypos += widget->allocation.y + widget->allocation.height / 2 - 2;
-
- if (active != NULL)
- {
- gtk_widget_get_child_requisition (active, &requisition);
- menu_ypos -= requisition.height / 2;
- }
-
- children = GTK_MENU_SHELL (option_menu->menu)->children;
- while (children)
- {
- child = children->data;
-
- if (active == child)
- break;
-
- if (gtk_widget_get_visible (child))
- {
- gtk_widget_get_child_requisition (child, &requisition);
- menu_ypos -= requisition.height;
- }
-
- children = children->next;
- }
-
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
- menu_xpos = menu_xpos + widget->allocation.width - menu_width;
-
- /* Clamp the position on screen */
- screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
-
- if (menu_xpos < 0)
- menu_xpos = 0;
- else if ((menu_xpos + menu_width) > screen_width)
- menu_xpos -= ((menu_xpos + menu_width) - screen_width);
-
- *x = menu_xpos;
- *y = menu_ypos;
- *push_in = TRUE;
-}
-
-
-static void
-gtk_option_menu_show_all (GtkWidget *widget)
-{
- GtkContainer *container;
- GtkOptionMenu *option_menu;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
- container = GTK_CONTAINER (widget);
- option_menu = GTK_OPTION_MENU (widget);
-
- gtk_widget_show (widget);
- gtk_container_foreach (container, (GtkCallback) gtk_widget_show_all, NULL);
- if (option_menu->menu)
- gtk_widget_show_all (option_menu->menu);
- if (option_menu->menu_item)
- gtk_widget_show_all (option_menu->menu_item);
-}
-
-
-static void
-gtk_option_menu_hide_all (GtkWidget *widget)
-{
- GtkContainer *container;
-
- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
- container = GTK_CONTAINER (widget);
-
- gtk_widget_hide (widget);
- gtk_container_foreach (container, (GtkCallback) gtk_widget_hide_all, NULL);
-}
-
-static gboolean
-gtk_option_menu_mnemonic_activate (GtkWidget *widget,
- gboolean group_cycling)
-{
- gtk_widget_grab_focus (widget);
- return TRUE;
-}
-
-static gint
-gtk_option_menu_scroll_event (GtkWidget *widget,
- GdkEventScroll *event)
-{
- GtkOptionMenu *option_menu = GTK_OPTION_MENU (widget);
- gint index;
- gint n_children;
- gint index_dir;
- GList *l;
- GtkMenuItem *item;
-
- index = gtk_option_menu_get_history (option_menu);
-
- if (index != -1)
- {
- n_children = g_list_length (GTK_MENU_SHELL (option_menu->menu)->children);
-
- if (event->direction == GDK_SCROLL_UP)
- index_dir = -1;
- else
- index_dir = 1;
-
-
- while (TRUE)
- {
- index += index_dir;
-
- if (index < 0)
- break;
- if (index >= n_children)
- break;
-
- l = g_list_nth (GTK_MENU_SHELL (option_menu->menu)->children, index);
- item = GTK_MENU_ITEM (l->data);
- if (gtk_widget_get_visible (GTK_WIDGET (item)) &&
- gtk_widget_is_sensitive (GTK_WIDGET (item)))
- {
- gtk_option_menu_set_history (option_menu, index);
- gtk_menu_item_activate (GTK_MENU_ITEM (item));
- break;
- }
-
- }
- }
-
- return TRUE;
-}
-
-#define __GTK_OPTION_MENU_C__
-#include "gtkaliasdef.c"
-
diff --git a/gtk/gtkoptionmenu.h b/gtk/gtkoptionmenu.h
deleted file mode 100644
index 8521020edd..0000000000
--- a/gtk/gtkoptionmenu.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_OPTION_MENU_H__
-#define __GTK_OPTION_MENU_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_OPTION_MENU (gtk_option_menu_get_type ())
-#define GTK_OPTION_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_OPTION_MENU, GtkOptionMenu))
-#define GTK_OPTION_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_OPTION_MENU, GtkOptionMenuClass))
-#define GTK_IS_OPTION_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_OPTION_MENU))
-#define GTK_IS_OPTION_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_OPTION_MENU))
-#define GTK_OPTION_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_OPTION_MENU, GtkOptionMenuClass))
-
-
-typedef struct _GtkOptionMenu GtkOptionMenu;
-typedef struct _GtkOptionMenuClass GtkOptionMenuClass;
-
-struct _GtkOptionMenu
-{
- GtkButton button;
-
- GtkWidget *menu;
- GtkWidget *menu_item;
-
- guint16 width;
- guint16 height;
-};
-
-struct _GtkOptionMenuClass
-{
- GtkButtonClass parent_class;
-
- void (*changed) (GtkOptionMenu *option_menu);
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-
-GType gtk_option_menu_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_option_menu_new (void);
-GtkWidget* gtk_option_menu_get_menu (GtkOptionMenu *option_menu);
-void gtk_option_menu_set_menu (GtkOptionMenu *option_menu,
- GtkWidget *menu);
-void gtk_option_menu_remove_menu (GtkOptionMenu *option_menu);
-gint gtk_option_menu_get_history (GtkOptionMenu *option_menu);
-void gtk_option_menu_set_history (GtkOptionMenu *option_menu,
- guint index_);
-
-
-G_END_DECLS
-
-#endif /* __GTK_OPTION_MENU_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkpagesetup.h b/gtk/gtkpagesetup.h
index d5eaea6d5d..b310e5c93a 100644
--- a/gtk/gtkpagesetup.h
+++ b/gtk/gtkpagesetup.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkpagesetupunixdialog.h b/gtk/gtkpagesetupunixdialog.h
index f64d004d9b..58d7b611f8 100644
--- a/gtk/gtkpagesetupunixdialog.h
+++ b/gtk/gtkpagesetupunixdialog.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtkunixprint.h> can be included directly."
#endif
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index a24468697b..ae27929c1d 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -1570,17 +1570,6 @@ gtk_paned_get_child2 (GtkPaned *paned)
return paned->child2;
}
-void
-gtk_paned_compute_position (GtkPaned *paned,
- gint allocation,
- gint child1_req,
- gint child2_req)
-{
- g_return_if_fail (GTK_IS_PANED (paned));
-
- gtk_paned_calc_position (paned, allocation, child1_req, child2_req);
-}
-
static void
gtk_paned_calc_position (GtkPaned *paned,
gint allocation,
diff --git a/gtk/gtkpaned.h b/gtk/gtkpaned.h
index 1da08a88f1..27e8201de2 100644
--- a/gtk/gtkpaned.h
+++ b/gtk/gtkpaned.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -129,15 +129,6 @@ GtkWidget * gtk_paned_get_child2 (GtkPaned *paned);
GdkWindow * gtk_paned_get_handle_window (GtkPaned *paned);
-#ifndef GTK_DISABLE_DEPRECATED
-/* Internal function */
-void gtk_paned_compute_position (GtkPaned *paned,
- gint allocation,
- gint child1_req,
- gint child2_req);
-#define gtk_paned_gutter_size(p,s) (void) 0
-#define gtk_paned_set_gutter_size(p,s) (void) 0
-#endif /* GTK_DISABLE_DEPRECATED */
G_END_DECLS
diff --git a/gtk/gtkpapersize.h b/gtk/gtkpapersize.h
index 18302cae77..a3ef2f1067 100644
--- a/gtk/gtkpapersize.h
+++ b/gtk/gtkpapersize.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkpixmap.c b/gtk/gtkpixmap.c
deleted file mode 100644
index e22e5edb78..0000000000
--- a/gtk/gtkpixmap.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * Insensitive pixmap building code by Eckehard Berns from GNOME Stock
- * Copyright (C) 1997, 1998 Free Software Foundation
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-#include <math.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#define __GTK_PIXMAP_C__
-
-#include "gtkcontainer.h"
-#include "gtkpixmap.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-
-static gint gtk_pixmap_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static void gtk_pixmap_finalize (GObject *object);
-static void build_insensitive_pixmap (GtkPixmap *gtkpixmap);
-
-G_DEFINE_TYPE (GtkPixmap, gtk_pixmap, GTK_TYPE_MISC)
-
-static void
-gtk_pixmap_class_init (GtkPixmapClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- GtkWidgetClass *widget_class;
-
- widget_class = (GtkWidgetClass*) class;
-
- gobject_class->finalize = gtk_pixmap_finalize;
-
- widget_class->expose_event = gtk_pixmap_expose;
-}
-
-static void
-gtk_pixmap_init (GtkPixmap *pixmap)
-{
- gtk_widget_set_has_window (GTK_WIDGET (pixmap), FALSE);
-
- pixmap->pixmap = NULL;
- pixmap->mask = NULL;
-}
-
-/**
- * gtk_pixmap_new:
- * @mask: (allow-none):
- */
-GtkWidget*
-gtk_pixmap_new (GdkPixmap *val,
- GdkBitmap *mask)
-{
- GtkPixmap *pixmap;
-
- g_return_val_if_fail (val != NULL, NULL);
-
- pixmap = gtk_type_new (gtk_pixmap_get_type ());
-
- pixmap->build_insensitive = TRUE;
- gtk_pixmap_set (pixmap, val, mask);
-
- return GTK_WIDGET (pixmap);
-}
-
-static void
-gtk_pixmap_finalize (GObject *object)
-{
- gtk_pixmap_set (GTK_PIXMAP (object), NULL, NULL);
-
- G_OBJECT_CLASS (gtk_pixmap_parent_class)->finalize (object);
-}
-
-void
-gtk_pixmap_set (GtkPixmap *pixmap,
- GdkPixmap *val,
- GdkBitmap *mask)
-{
- gint width;
- gint height;
- gint oldwidth;
- gint oldheight;
-
- g_return_if_fail (GTK_IS_PIXMAP (pixmap));
- if(GDK_IS_DRAWABLE(val))
- g_return_if_fail (gdk_colormap_get_visual (gtk_widget_get_colormap (GTK_WIDGET (pixmap)))->depth == gdk_drawable_get_depth (GDK_DRAWABLE (val)));
-
- if (pixmap->pixmap != val)
- {
- oldwidth = GTK_WIDGET (pixmap)->requisition.width;
- oldheight = GTK_WIDGET (pixmap)->requisition.height;
- if (pixmap->pixmap)
- g_object_unref (pixmap->pixmap);
- if (pixmap->pixmap_insensitive)
- g_object_unref (pixmap->pixmap_insensitive);
- pixmap->pixmap = val;
- pixmap->pixmap_insensitive = NULL;
- if (pixmap->pixmap)
- {
- g_object_ref (pixmap->pixmap);
- gdk_drawable_get_size (pixmap->pixmap, &width, &height);
- GTK_WIDGET (pixmap)->requisition.width =
- width + GTK_MISC (pixmap)->xpad * 2;
- GTK_WIDGET (pixmap)->requisition.height =
- height + GTK_MISC (pixmap)->ypad * 2;
- }
- else
- {
- GTK_WIDGET (pixmap)->requisition.width = 0;
- GTK_WIDGET (pixmap)->requisition.height = 0;
- }
- if (gtk_widget_get_visible (GTK_WIDGET (pixmap)))
- {
- if ((GTK_WIDGET (pixmap)->requisition.width != oldwidth) ||
- (GTK_WIDGET (pixmap)->requisition.height != oldheight))
- gtk_widget_queue_resize (GTK_WIDGET (pixmap));
- else
- gtk_widget_queue_draw (GTK_WIDGET (pixmap));
- }
- }
-
- if (pixmap->mask != mask)
- {
- if (pixmap->mask)
- g_object_unref (pixmap->mask);
- pixmap->mask = mask;
- if (pixmap->mask)
- g_object_ref (pixmap->mask);
- }
-}
-
-void
-gtk_pixmap_get (GtkPixmap *pixmap,
- GdkPixmap **val,
- GdkBitmap **mask)
-{
- g_return_if_fail (GTK_IS_PIXMAP (pixmap));
-
- if (val)
- *val = pixmap->pixmap;
- if (mask)
- *mask = pixmap->mask;
-}
-
-static gint
-gtk_pixmap_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- GtkPixmap *pixmap;
- GtkMisc *misc;
- gint x, y;
- gfloat xalign;
-
- g_return_val_if_fail (GTK_IS_PIXMAP (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- pixmap = GTK_PIXMAP (widget);
- misc = GTK_MISC (widget);
-
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
- xalign = misc->xalign;
- else
- xalign = 1.0 - misc->xalign;
-
- x = floor (widget->allocation.x + misc->xpad
- + ((widget->allocation.width - widget->requisition.width) * xalign));
- y = floor (widget->allocation.y + misc->ypad
- + ((widget->allocation.height - widget->requisition.height) * misc->yalign));
-
- if (pixmap->mask)
- {
- gdk_gc_set_clip_mask (widget->style->black_gc, pixmap->mask);
- gdk_gc_set_clip_origin (widget->style->black_gc, x, y);
- }
-
- if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE
- && pixmap->build_insensitive)
- {
- if (!pixmap->pixmap_insensitive)
- build_insensitive_pixmap (pixmap);
- gdk_draw_drawable (widget->window,
- widget->style->black_gc,
- pixmap->pixmap_insensitive,
- 0, 0, x, y, -1, -1);
- }
- else
- {
- gdk_draw_drawable (widget->window,
- widget->style->black_gc,
- pixmap->pixmap,
- 0, 0, x, y, -1, -1);
- }
-
- if (pixmap->mask)
- {
- gdk_gc_set_clip_mask (widget->style->black_gc, NULL);
- gdk_gc_set_clip_origin (widget->style->black_gc, 0, 0);
- }
- }
- return FALSE;
-}
-
-void
-gtk_pixmap_set_build_insensitive (GtkPixmap *pixmap, gboolean build)
-{
- g_return_if_fail (GTK_IS_PIXMAP (pixmap));
-
- pixmap->build_insensitive = build;
-
- if (gtk_widget_get_visible (GTK_WIDGET (pixmap)))
- {
- gtk_widget_queue_draw (GTK_WIDGET (pixmap));
- }
-}
-
-static void
-build_insensitive_pixmap (GtkPixmap *gtkpixmap)
-{
- GdkPixmap *pixmap = gtkpixmap->pixmap;
- GdkPixmap *insensitive;
- gint w, h;
- GdkPixbuf *pixbuf;
- GdkPixbuf *stated;
-
- gdk_drawable_get_size (pixmap, &w, &h);
-
- pixbuf = gdk_pixbuf_get_from_drawable (NULL,
- pixmap,
- gtk_widget_get_colormap (GTK_WIDGET (gtkpixmap)),
- 0, 0,
- 0, 0,
- w, h);
-
- stated = gdk_pixbuf_copy (pixbuf);
-
- gdk_pixbuf_saturate_and_pixelate (pixbuf, stated,
- 0.8, TRUE);
-
- g_object_unref (pixbuf);
- pixbuf = NULL;
-
- insensitive = gdk_pixmap_new (GTK_WIDGET (gtkpixmap)->window, w, h, -1);
-
- gdk_draw_pixbuf (insensitive,
- GTK_WIDGET (gtkpixmap)->style->white_gc,
- stated,
- 0, 0,
- 0, 0,
- w, h,
- GDK_RGB_DITHER_NORMAL,
- 0, 0);
-
- gtkpixmap->pixmap_insensitive = insensitive;
-
- g_object_unref (stated);
-}
-
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkpixmap.h b/gtk/gtkpixmap.h
deleted file mode 100644
index 21fa349938..0000000000
--- a/gtk/gtkpixmap.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_PIXMAP_C__)
-
-#ifndef __GTK_PIXMAP_H__
-#define __GTK_PIXMAP_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_PIXMAP (gtk_pixmap_get_type ())
-#define GTK_PIXMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PIXMAP, GtkPixmap))
-#define GTK_PIXMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PIXMAP, GtkPixmapClass))
-#define GTK_IS_PIXMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PIXMAP))
-#define GTK_IS_PIXMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PIXMAP))
-#define GTK_PIXMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PIXMAP, GtkPixmapClass))
-
-
-typedef struct _GtkPixmap GtkPixmap;
-typedef struct _GtkPixmapClass GtkPixmapClass;
-
-struct _GtkPixmap
-{
- GtkMisc misc;
-
- GdkPixmap *pixmap;
- GdkBitmap *mask;
-
- GdkPixmap *pixmap_insensitive;
- guint build_insensitive : 1;
-};
-
-struct _GtkPixmapClass
-{
- GtkMiscClass parent_class;
-};
-
-
-GType gtk_pixmap_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_pixmap_new (GdkPixmap *pixmap,
- GdkBitmap *mask);
-void gtk_pixmap_set (GtkPixmap *pixmap,
- GdkPixmap *val,
- GdkBitmap *mask);
-void gtk_pixmap_get (GtkPixmap *pixmap,
- GdkPixmap **val,
- GdkBitmap **mask);
-
-void gtk_pixmap_set_build_insensitive (GtkPixmap *pixmap,
- gboolean build);
-
-
-G_END_DECLS
-
-#endif /* __GTK_PIXMAP_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkplug.h b/gtk/gtkplug.h
index 3ea9971960..c96ca774fa 100644
--- a/gtk/gtkplug.h
+++ b/gtk/gtkplug.h
@@ -23,7 +23,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkpreview.c b/gtk/gtkpreview.c
deleted file mode 100644
index 458fed4efe..0000000000
--- a/gtk/gtkpreview.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <math.h>
-#include <string.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "gtkpreview.h"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-
-#define PREVIEW_CLASS(w) GTK_PREVIEW_CLASS (GTK_OBJECT (w)->klass)
-
-enum {
- PROP_0,
- PROP_EXPAND
-};
-
-
-static void gtk_preview_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_preview_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_preview_finalize (GObject *object);
-static void gtk_preview_realize (GtkWidget *widget);
-static void gtk_preview_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gint gtk_preview_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static void gtk_preview_make_buffer (GtkPreview *preview);
-static void gtk_fill_lookup_array (guchar *array);
-
-static GtkPreviewClass *preview_class = NULL;
-static gint install_cmap = FALSE;
-
-
-G_DEFINE_TYPE (GtkPreview, gtk_preview, GTK_TYPE_WIDGET)
-
-static void
-gtk_preview_class_init (GtkPreviewClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class;
-
- widget_class = (GtkWidgetClass*) klass;
-
- preview_class = klass;
-
- gobject_class->finalize = gtk_preview_finalize;
-
- gobject_class->set_property = gtk_preview_set_property;
- gobject_class->get_property = gtk_preview_get_property;
-
- widget_class->realize = gtk_preview_realize;
- widget_class->size_allocate = gtk_preview_size_allocate;
- widget_class->expose_event = gtk_preview_expose;
-
- klass->info.lookup = NULL;
-
- klass->info.gamma = 1.0;
-
- g_object_class_install_property (gobject_class,
- PROP_EXPAND,
- g_param_spec_boolean ("expand",
- P_("Expand"),
- P_("Whether the preview widget should take up the entire space it is allocated"),
- FALSE,
- GTK_PARAM_READWRITE));
-}
-
-static void
-gtk_preview_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkPreview *preview = GTK_PREVIEW (object);
-
- switch (prop_id)
- {
- case PROP_EXPAND:
- gtk_preview_set_expand (preview, g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_preview_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkPreview *preview;
-
- preview = GTK_PREVIEW (object);
-
- switch (prop_id)
- {
- case PROP_EXPAND:
- g_value_set_boolean (value, preview->expand);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-void
-gtk_preview_reset (void)
-{
- /* unimplemented */
-}
-
-static void
-gtk_preview_init (GtkPreview *preview)
-{
- preview->buffer = NULL;
- preview->buffer_width = 0;
- preview->buffer_height = 0;
- preview->expand = FALSE;
-}
-
-void
-gtk_preview_uninit (void)
-{
- /* unimplemented */
-}
-
-GtkWidget*
-gtk_preview_new (GtkPreviewType type)
-{
- GtkPreview *preview;
-
- preview = gtk_type_new (gtk_preview_get_type ());
- preview->type = type;
-
- if (type == GTK_PREVIEW_COLOR)
- preview->bpp = 3;
- else
- preview->bpp = 1;
-
- preview->dither = GDK_RGB_DITHER_NORMAL;
-
- return GTK_WIDGET (preview);
-}
-
-void
-gtk_preview_size (GtkPreview *preview,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_PREVIEW (preview));
-
- if ((width != GTK_WIDGET (preview)->requisition.width) ||
- (height != GTK_WIDGET (preview)->requisition.height))
- {
- GTK_WIDGET (preview)->requisition.width = width;
- GTK_WIDGET (preview)->requisition.height = height;
-
- g_free (preview->buffer);
- preview->buffer = NULL;
- }
-}
-
-void
-gtk_preview_put (GtkPreview *preview,
- GdkWindow *window,
- GdkGC *gc,
- gint srcx,
- gint srcy,
- gint destx,
- gint desty,
- gint width,
- gint height)
-{
- GdkRectangle r1, r2, r3;
- guchar *src;
- guint bpp;
- guint rowstride;
-
- g_return_if_fail (GTK_IS_PREVIEW (preview));
- g_return_if_fail (window != NULL);
-
- if (!preview->buffer)
- return;
-
- r1.x = 0;
- r1.y = 0;
- r1.width = preview->buffer_width;
- r1.height = preview->buffer_height;
-
- r2.x = srcx;
- r2.y = srcy;
- r2.width = width;
- r2.height = height;
-
- if (!gdk_rectangle_intersect (&r1, &r2, &r3))
- return;
-
- bpp = preview->bpp;
- rowstride = preview->rowstride;
-
- src = preview->buffer + r3.y * rowstride + r3.x * bpp;
-
- if (preview->type == GTK_PREVIEW_COLOR)
- gdk_draw_rgb_image (window,
- gc,
- destx + (r3.x - srcx),
- desty + (r3.y - srcy),
- r3.width,
- r3.height,
- preview->dither,
- src,
- rowstride);
- else
- gdk_draw_gray_image (window,
- gc,
- destx + (r3.x - srcx),
- desty + (r3.y - srcy),
- r3.width,
- r3.height,
- preview->dither,
- src,
- rowstride);
-
-}
-
-void
-gtk_preview_draw_row (GtkPreview *preview,
- guchar *data,
- gint x,
- gint y,
- gint w)
-{
- guint bpp;
- guint rowstride;
-
- g_return_if_fail (GTK_IS_PREVIEW (preview));
- g_return_if_fail (data != NULL);
-
- bpp = (preview->type == GTK_PREVIEW_COLOR ? 3 : 1);
- rowstride = (preview->buffer_width * bpp + 3) & -4;
-
- if ((w <= 0) || (y < 0))
- return;
-
- g_return_if_fail (data != NULL);
-
- gtk_preview_make_buffer (preview);
-
- if (x + w > preview->buffer_width)
- return;
-
- if (y + 1 > preview->buffer_height)
- return;
-
- if (preview_class->info.gamma == 1.0)
- memcpy (preview->buffer + y * rowstride + x * bpp, data, w * bpp);
- else
- {
- guint i, size;
- guchar *src, *dst;
- guchar *lookup;
-
- if (preview_class->info.lookup != NULL)
- lookup = preview_class->info.lookup;
- else
- {
- preview_class->info.lookup = g_new (guchar, 256);
- gtk_fill_lookup_array (preview_class->info.lookup);
- lookup = preview_class->info.lookup;
- }
- size = w * bpp;
- src = data;
- dst = preview->buffer + y * rowstride + x * bpp;
- for (i = 0; i < size; i++)
- *dst++ = lookup[*src++];
- }
-}
-
-void
-gtk_preview_set_expand (GtkPreview *preview,
- gboolean expand)
-{
- g_return_if_fail (GTK_IS_PREVIEW (preview));
-
- expand = expand != FALSE;
-
- if (preview->expand != expand)
- {
- preview->expand = expand;
- gtk_widget_queue_resize (GTK_WIDGET (preview));
-
- g_object_notify (G_OBJECT (preview), "expand");
- }
-}
-
-void
-gtk_preview_set_gamma (double _gamma)
-{
- if (!preview_class)
- preview_class = gtk_type_class (gtk_preview_get_type ());
-
- if (preview_class->info.gamma != _gamma)
- {
- preview_class->info.gamma = _gamma;
- if (preview_class->info.lookup != NULL)
- {
- g_free (preview_class->info.lookup);
- preview_class->info.lookup = NULL;
- }
- }
-}
-
-void
-gtk_preview_set_color_cube (guint nred_shades,
- guint ngreen_shades,
- guint nblue_shades,
- guint ngray_shades)
-{
- /* unimplemented */
-}
-
-void
-gtk_preview_set_install_cmap (gint _install_cmap)
-{
- /* effectively unimplemented */
- install_cmap = _install_cmap;
-}
-
-void
-gtk_preview_set_reserved (gint nreserved)
-{
-
- /* unimplemented */
-}
-
-void
-gtk_preview_set_dither (GtkPreview *preview,
- GdkRgbDither dither)
-{
- preview->dither = dither;
-}
-
-GdkVisual*
-gtk_preview_get_visual (void)
-{
- return gdk_screen_get_rgb_visual (gdk_screen_get_default ());
-}
-
-GdkColormap*
-gtk_preview_get_cmap (void)
-{
- return gdk_screen_get_rgb_colormap (gdk_screen_get_default ());
-}
-
-GtkPreviewInfo*
-gtk_preview_get_info (void)
-{
- if (!preview_class)
- preview_class = gtk_type_class (gtk_preview_get_type ());
-
- return &preview_class->info;
-}
-
-
-static void
-gtk_preview_finalize (GObject *object)
-{
- GtkPreview *preview = GTK_PREVIEW (object);
-
- g_free (preview->buffer);
-
- G_OBJECT_CLASS (gtk_preview_parent_class)->finalize (object);
-}
-
-static void
-gtk_preview_realize (GtkWidget *widget)
-{
- GtkPreview *preview = GTK_PREVIEW (widget);
- GdkWindowAttr attributes;
- gint attributes_mask;
-
- gtk_widget_set_realized (widget, TRUE);
-
- attributes.window_type = GDK_WINDOW_CHILD;
-
- if (preview->expand)
- {
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- }
- else
- {
- attributes.width = MIN (widget->requisition.width, widget->allocation.width);
- attributes.height = MIN (widget->requisition.height, widget->allocation.height);
- }
-
- attributes.x = widget->allocation.x + (widget->allocation.width - attributes.width) / 2;
- attributes.y = widget->allocation.y + (widget->allocation.height - attributes.height) / 2;;
-
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
- attributes_mask = GDK_WA_X | GDK_WA_Y;
-
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, widget);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
- gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
-}
-
-static void
-gtk_preview_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkPreview *preview = GTK_PREVIEW (widget);
- gint width, height;
-
- widget->allocation = *allocation;
-
- if (gtk_widget_get_realized (widget))
- {
- if (preview->expand)
- {
- width = widget->allocation.width;
- height = widget->allocation.height;
- }
- else
- {
- width = MIN (widget->allocation.width, widget->requisition.width);
- height = MIN (widget->allocation.height, widget->requisition.height);
- }
-
- gdk_window_move_resize (widget->window,
- widget->allocation.x + (widget->allocation.width - width) / 2,
- widget->allocation.y + (widget->allocation.height - height) / 2,
- width, height);
- }
-}
-
-static gint
-gtk_preview_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- GtkPreview *preview;
- gint width, height;
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- preview = GTK_PREVIEW (widget);
-
- gdk_drawable_get_size (widget->window, &width, &height);
-
- gtk_preview_put (GTK_PREVIEW (widget),
- widget->window, widget->style->black_gc,
- event->area.x - (width - preview->buffer_width)/2,
- event->area.y - (height - preview->buffer_height)/2,
- event->area.x, event->area.y,
- event->area.width, event->area.height);
- }
-
- return FALSE;
-}
-
-static void
-gtk_preview_make_buffer (GtkPreview *preview)
-{
- GtkWidget *widget;
- gint width;
- gint height;
-
- g_return_if_fail (GTK_IS_PREVIEW (preview));
-
- widget = GTK_WIDGET (preview);
-
- if (preview->expand &&
- (widget->allocation.width != 0) &&
- (widget->allocation.height != 0))
- {
- width = widget->allocation.width;
- height = widget->allocation.height;
- }
- else
- {
- width = widget->requisition.width;
- height = widget->requisition.height;
- }
-
- if (!preview->buffer ||
- (preview->buffer_width != width) ||
- (preview->buffer_height != height))
- {
- g_free (preview->buffer);
-
- preview->buffer_width = width;
- preview->buffer_height = height;
-
- preview->rowstride = (preview->buffer_width * preview->bpp + 3) & -4;
- preview->buffer = g_new0 (guchar,
- preview->buffer_height *
- preview->rowstride);
- }
-}
-
-/* This is used for implementing gamma. */
-static void
-gtk_fill_lookup_array (guchar *array)
-{
- double one_over_gamma;
- double ind;
- int val;
- int i;
-
- one_over_gamma = 1.0 / preview_class->info.gamma;
-
- for (i = 0; i < 256; i++)
- {
- ind = (double) i / 255.0;
- val = (int) (255 * pow (ind, one_over_gamma));
- array[i] = val;
- }
-}
-
-#define __GTK_PREVIEW_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkpreview.h b/gtk/gtkpreview.h
deleted file mode 100644
index 5e87c94aa3..0000000000
--- a/gtk/gtkpreview.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_PREVIEW_H__
-#define __GTK_PREVIEW_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_PREVIEW (gtk_preview_get_type ())
-#define GTK_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PREVIEW, GtkPreview))
-#define GTK_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PREVIEW, GtkPreviewClass))
-#define GTK_IS_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PREVIEW))
-#define GTK_IS_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PREVIEW))
-#define GTK_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PREVIEW, GtkPreviewClass))
-
-
-typedef struct _GtkPreview GtkPreview;
-typedef struct _GtkPreviewInfo GtkPreviewInfo;
-typedef union _GtkDitherInfo GtkDitherInfo;
-typedef struct _GtkPreviewClass GtkPreviewClass;
-
-struct _GtkPreview
-{
- GtkWidget widget;
-
- guchar *buffer;
- guint16 buffer_width;
- guint16 buffer_height;
-
- guint16 bpp;
- guint16 rowstride;
-
- GdkRgbDither dither;
-
- guint type : 1;
- guint expand : 1;
-};
-
-struct _GtkPreviewInfo
-{
- guchar *lookup;
-
- gdouble gamma;
-};
-
-union _GtkDitherInfo
-{
- gushort s[2];
- guchar c[4];
-};
-
-struct _GtkPreviewClass
-{
- GtkWidgetClass parent_class;
-
- GtkPreviewInfo info;
-
-};
-
-
-GType gtk_preview_get_type (void) G_GNUC_CONST;
-void gtk_preview_uninit (void);
-GtkWidget* gtk_preview_new (GtkPreviewType type);
-void gtk_preview_size (GtkPreview *preview,
- gint width,
- gint height);
-void gtk_preview_put (GtkPreview *preview,
- GdkWindow *window,
- GdkGC *gc,
- gint srcx,
- gint srcy,
- gint destx,
- gint desty,
- gint width,
- gint height);
-void gtk_preview_draw_row (GtkPreview *preview,
- guchar *data,
- gint x,
- gint y,
- gint w);
-void gtk_preview_set_expand (GtkPreview *preview,
- gboolean expand);
-
-void gtk_preview_set_gamma (double gamma_);
-void gtk_preview_set_color_cube (guint nred_shades,
- guint ngreen_shades,
- guint nblue_shades,
- guint ngray_shades);
-void gtk_preview_set_install_cmap (gint install_cmap);
-void gtk_preview_set_reserved (gint nreserved);
-void gtk_preview_set_dither (GtkPreview *preview,
- GdkRgbDither dither);
-GdkVisual* gtk_preview_get_visual (void);
-GdkColormap* gtk_preview_get_cmap (void);
-GtkPreviewInfo* gtk_preview_get_info (void);
-
-/* This function reinitializes the preview colormap and visual from
- * the current gamma/color_cube/install_cmap settings. It must only
- * be called if there are no previews or users's of the preview
- * colormap in existence.
- */
-void gtk_preview_reset (void);
-
-
-G_END_DECLS
-
-#endif /* __GTK_PREVIEW_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtkprintcontext.h b/gtk/gtkprintcontext.h
index 30572d6835..b38fd15ac4 100644
--- a/gtk/gtkprintcontext.h
+++ b/gtk/gtkprintcontext.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkprinter.h b/gtk/gtkprinter.h
index 527582c95d..e2cb534963 100644
--- a/gtk/gtkprinter.h
+++ b/gtk/gtkprinter.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtkunixprint.h> can be included directly."
#endif
diff --git a/gtk/gtkprintjob.h b/gtk/gtkprintjob.h
index fd821840f9..9d2c25b548 100644
--- a/gtk/gtkprintjob.h
+++ b/gtk/gtkprintjob.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtkunixprint.h> can be included directly."
#endif
diff --git a/gtk/gtkprintoperation.h b/gtk/gtkprintoperation.h
index ef9a2879f3..fed196a3e7 100644
--- a/gtk/gtkprintoperation.h
+++ b/gtk/gtkprintoperation.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkprintoperationpreview.h b/gtk/gtkprintoperationpreview.h
index a36b4afb71..850b0806e0 100644
--- a/gtk/gtkprintoperationpreview.h
+++ b/gtk/gtkprintoperationpreview.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkprintsettings.h b/gtk/gtkprintsettings.h
index 267854c351..102c6c497a 100644
--- a/gtk/gtkprintsettings.h
+++ b/gtk/gtkprintsettings.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkprintunixdialog.h b/gtk/gtkprintunixdialog.h
index 4ff22e4ed8..f0bb798012 100644
--- a/gtk/gtkprintunixdialog.h
+++ b/gtk/gtkprintunixdialog.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_UNIX_PRINT_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtkunixprint.h> can be included directly."
#endif
diff --git a/gtk/gtkprogress.c b/gtk/gtkprogress.c
index 8f46de45da..fd5585f204 100644
--- a/gtk/gtkprogress.c
+++ b/gtk/gtkprogress.c
@@ -274,7 +274,7 @@ static gboolean
gtk_progress_expose (GtkWidget *widget,
GdkEventExpose *event)
{
- if (GTK_WIDGET_DRAWABLE (widget))
+ if (gtk_widget_is_drawable (widget))
gdk_draw_drawable (widget->window,
widget->style->black_gc,
GTK_PROGRESS (widget)->offscreen_pixmap,
@@ -636,7 +636,7 @@ gtk_progress_set_text_alignment (GtkProgress *progress,
}
g_object_thaw_notify (G_OBJECT (progress));
- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))
+ if (gtk_widget_is_drawable (GTK_WIDGET (progress)))
gtk_widget_queue_resize (GTK_WIDGET (progress));
}
}
@@ -703,7 +703,7 @@ gtk_progress_set_activity_mode (GtkProgress *progress,
if (progress->activity_mode)
GTK_PROGRESS_GET_CLASS (progress)->act_mode_enter (progress);
- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))
+ if (gtk_widget_is_drawable (GTK_WIDGET (progress)))
gtk_widget_queue_resize (GTK_WIDGET (progress));
g_object_notify (G_OBJECT (progress), "activity-mode");
diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c
index 798c6b43ef..853667db8a 100644
--- a/gtk/gtkprogressbar.c
+++ b/gtk/gtkprogressbar.c
@@ -52,12 +52,6 @@ enum {
PROP_TEXT,
PROP_ELLIPSIZE,
- /* Deprecated args */
- PROP_ADJUSTMENT,
- PROP_BAR_STYLE,
- PROP_ACTIVITY_STEP,
- PROP_ACTIVITY_BLOCKS,
- PROP_DISCRETE_BLOCKS
};
static void gtk_progress_bar_set_property (GObject *object,
@@ -87,6 +81,14 @@ static void gtk_progress_bar_set_activity_step_internal (GtkProgressBar *pbar,
static void gtk_progress_bar_set_activity_blocks_internal (GtkProgressBar *pbar,
guint blocks);
+typedef struct
+{
+ gchar* text;
+ gdouble fraction;
+} GtkProgressBarPrivate;
+
+#define GTK_PROGRESS_BAR_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_PROGRESS_BAR, GtkProgressBarPrivate))
G_DEFINE_TYPE (GtkProgressBar, gtk_progress_bar, GTK_TYPE_PROGRESS)
@@ -113,14 +115,6 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
progress_class->act_mode_enter = gtk_progress_bar_act_mode_enter;
g_object_class_install_property (gobject_class,
- PROP_ADJUSTMENT,
- g_param_spec_object ("adjustment",
- P_("Adjustment"),
- P_("The GtkAdjustment connected to the progress bar (Deprecated)"),
- GTK_TYPE_ADJUSTMENT,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
PROP_ORIENTATION,
g_param_spec_enum ("orientation",
P_("Orientation"),
@@ -128,39 +122,6 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
GTK_TYPE_PROGRESS_BAR_ORIENTATION,
GTK_PROGRESS_LEFT_TO_RIGHT,
GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_BAR_STYLE,
- g_param_spec_enum ("bar-style",
- P_("Bar style"),
- P_("Specifies the visual style of the bar in percentage mode (Deprecated)"),
- GTK_TYPE_PROGRESS_BAR_STYLE,
- GTK_PROGRESS_CONTINUOUS,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_ACTIVITY_STEP,
- g_param_spec_uint ("activity-step",
- P_("Activity Step"),
- P_("The increment used for each iteration in activity mode (Deprecated)"),
- 0, G_MAXUINT, 3,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_ACTIVITY_BLOCKS,
- g_param_spec_uint ("activity-blocks",
- P_("Activity Blocks"),
- P_("The number of blocks which can fit in the progress bar area in activity mode (Deprecated)"),
- 2, G_MAXUINT, 5,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_DISCRETE_BLOCKS,
- g_param_spec_uint ("discrete-blocks",
- P_("Discrete Blocks"),
- P_("The number of discrete blocks in a progress bar (when shown in the discrete style)"),
- 2, G_MAXUINT, 10,
- GTK_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_FRACTION,
@@ -274,11 +235,15 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
P_("The minimum vertical height of the progress bar"),
1, G_MAXINT, MIN_VERTICAL_BAR_HEIGHT,
G_PARAM_READWRITE));
+
+ g_type_class_add_private (class, sizeof (GtkProgressBarPrivate));
}
static void
gtk_progress_bar_init (GtkProgressBar *pbar)
{
+ GtkProgressBarPrivate* priv;
+
pbar->bar_style = GTK_PROGRESS_CONTINUOUS;
pbar->blocks = 10;
pbar->in_block = -1;
@@ -289,6 +254,11 @@ gtk_progress_bar_init (GtkProgressBar *pbar)
pbar->activity_step = 3;
pbar->activity_blocks = 5;
pbar->ellipsize = PANGO_ELLIPSIZE_NONE;
+
+ /* FIXME: Put priv in the structure once we break ABI */
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
+ priv->text = NULL;
+ priv->fraction = 0.0;
}
static void
@@ -303,25 +273,9 @@ gtk_progress_bar_set_property (GObject *object,
switch (prop_id)
{
- case PROP_ADJUSTMENT:
- gtk_progress_set_adjustment (GTK_PROGRESS (pbar),
- GTK_ADJUSTMENT (g_value_get_object (value)));
- break;
case PROP_ORIENTATION:
gtk_progress_bar_set_orientation (pbar, g_value_get_enum (value));
break;
- case PROP_BAR_STYLE:
- gtk_progress_bar_set_bar_style_internal (pbar, g_value_get_enum (value));
- break;
- case PROP_ACTIVITY_STEP:
- gtk_progress_bar_set_activity_step_internal (pbar, g_value_get_uint (value));
- break;
- case PROP_ACTIVITY_BLOCKS:
- gtk_progress_bar_set_activity_blocks_internal (pbar, g_value_get_uint (value));
- break;
- case PROP_DISCRETE_BLOCKS:
- gtk_progress_bar_set_discrete_blocks_internal (pbar, g_value_get_uint (value));
- break;
case PROP_FRACTION:
gtk_progress_bar_set_fraction (pbar, g_value_get_double (value));
break;
@@ -347,37 +301,24 @@ gtk_progress_bar_get_property (GObject *object,
GParamSpec *pspec)
{
GtkProgressBar *pbar;
+ GtkProgressBarPrivate* priv;
pbar = GTK_PROGRESS_BAR (object);
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
switch (prop_id)
{
- case PROP_ADJUSTMENT:
- g_value_set_object (value, GTK_PROGRESS (pbar)->adjustment);
- break;
case PROP_ORIENTATION:
g_value_set_enum (value, pbar->orientation);
break;
- case PROP_BAR_STYLE:
- g_value_set_enum (value, pbar->bar_style);
- break;
- case PROP_ACTIVITY_STEP:
- g_value_set_uint (value, pbar->activity_step);
- break;
- case PROP_ACTIVITY_BLOCKS:
- g_value_set_uint (value, pbar->activity_blocks);
- break;
- case PROP_DISCRETE_BLOCKS:
- g_value_set_uint (value, pbar->blocks);
- break;
case PROP_FRACTION:
- g_value_set_double (value, gtk_progress_get_current_percentage (GTK_PROGRESS (pbar)));
+ g_value_set_double (value, priv->fraction);
break;
case PROP_PULSE_STEP:
g_value_set_double (value, pbar->pulse_fraction);
break;
case PROP_TEXT:
- g_value_set_string (value, gtk_progress_bar_get_text (pbar));
+ g_value_set_string (value, priv->text);
break;
case PROP_ELLIPSIZE:
g_value_set_enum (value, pbar->ellipsize);
@@ -398,28 +339,6 @@ gtk_progress_bar_new (void)
return pbar;
}
-/**
- * gtk_progress_bar_new_with_adjustment:
- * @adjustment: (allow-none):
- *
- * Creates a new #GtkProgressBar with an associated #GtkAdjustment.
- *
- * Returns: (transfer none): a #GtkProgressBar.
- */
-GtkWidget*
-gtk_progress_bar_new_with_adjustment (GtkAdjustment *adjustment)
-{
- GtkWidget *pbar;
-
- g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), NULL);
-
- pbar = g_object_new (GTK_TYPE_PROGRESS_BAR,
- "adjustment", adjustment,
- NULL);
-
- return pbar;
-}
-
static void
gtk_progress_bar_real_update (GtkProgress *progress)
{
@@ -541,8 +460,8 @@ static void
gtk_progress_bar_size_request (GtkWidget *widget,
GtkRequisition *requisition)
{
- GtkProgress *progress;
GtkProgressBar *pbar;
+ GtkProgressBarPrivate *priv;
gchar *buf;
PangoRectangle logical_rect;
PangoLayout *layout;
@@ -558,19 +477,14 @@ gtk_progress_bar_size_request (GtkWidget *widget,
"yspacing", &yspacing,
NULL);
- progress = GTK_PROGRESS (widget);
pbar = GTK_PROGRESS_BAR (widget);
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
width = 2 * widget->style->xthickness + xspacing;
height = 2 * widget->style->ythickness + yspacing;
- if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE)
+ if ((buf = priv->text))
{
- if (!progress->adjustment)
- gtk_progress_set_adjustment (progress, NULL);
-
- buf = gtk_progress_get_text_from_value (progress, progress->adjustment->upper);
-
layout = gtk_widget_create_pango_layout (widget, buf);
pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
@@ -596,7 +510,6 @@ gtk_progress_bar_size_request (GtkWidget *widget,
height += logical_rect.height;
g_object_unref (layout);
- g_free (buf);
}
if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
@@ -968,6 +881,7 @@ static void
gtk_progress_bar_paint (GtkProgress *progress)
{
GtkProgressBar *pbar;
+ GtkProgressBarPrivate *priv;
GtkWidget *widget;
GtkProgressBarOrientation orientation;
@@ -975,6 +889,7 @@ gtk_progress_bar_paint (GtkProgress *progress)
g_return_if_fail (GTK_IS_PROGRESS_BAR (progress));
pbar = GTK_PROGRESS_BAR (progress);
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
widget = GTK_WIDGET (progress);
orientation = pbar->orientation;
@@ -1000,7 +915,7 @@ gtk_progress_bar_paint (GtkProgress *progress)
{
gtk_progress_bar_paint_activity (pbar, orientation);
- if (GTK_PROGRESS (pbar)->show_text)
+ if (priv->text)
{
gint offset;
gint amount;
@@ -1027,7 +942,7 @@ gtk_progress_bar_paint (GtkProgress *progress)
{
gtk_progress_bar_paint_continuous (pbar, amount, orientation);
- if (GTK_PROGRESS (pbar)->show_text)
+ if (priv->text)
gtk_progress_bar_paint_text (pbar, -1, amount, orientation);
}
else
@@ -1116,16 +1031,12 @@ void
gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
gdouble fraction)
{
+ GtkProgressBarPrivate* priv;
+
g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
- /* If we know the percentage, we don't want activity mode. */
- gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), FALSE);
-
- /* We use the deprecated GtkProgress interface internally.
- * Once everything's been deprecated for a good long time,
- * we can clean up all this code.
- */
- gtk_progress_set_percentage (GTK_PROGRESS (pbar), fraction);
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
+ priv->fraction = fraction;
g_object_notify (G_OBJECT (pbar), "fraction");
}
@@ -1145,8 +1056,9 @@ gtk_progress_bar_pulse (GtkProgressBar *pbar)
{
g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
- /* If we don't know the percentage, we must want activity mode. */
- gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), TRUE);
+ GTK_PROGRESS_GET_CLASS (pbar)->act_mode_enter (GTK_PROGRESS (pbar));
+ if (gtk_widget_is_drawable (GTK_WIDGET (pbar)))
+ gtk_widget_queue_resize (GTK_WIDGET (pbar));
/* Sigh. */
gtk_progress_bar_real_update (GTK_PROGRESS (pbar));
@@ -1163,16 +1075,13 @@ void
gtk_progress_bar_set_text (GtkProgressBar *pbar,
const gchar *text)
{
+ GtkProgressBarPrivate *priv;
+
g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
- gtk_progress_set_show_text (GTK_PROGRESS (pbar), text && *text);
- gtk_progress_set_format_string (GTK_PROGRESS (pbar), text);
-
- /* We don't support formats in this interface, but turn
- * them back on for NULL, which should put us back to
- * the initial state.
- */
- GTK_PROGRESS (pbar)->use_text_format = (text == NULL);
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
+ g_free (priv->text);
+ priv->text = text && *text ? g_strdup (text) : NULL;
g_object_notify (G_OBJECT (pbar), "text");
}
@@ -1196,19 +1105,6 @@ gtk_progress_bar_set_pulse_step (GtkProgressBar *pbar,
g_object_notify (G_OBJECT (pbar), "pulse-step");
}
-void
-gtk_progress_bar_update (GtkProgressBar *pbar,
- gdouble percentage)
-{
- g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
-
- /* Use of gtk_progress_bar_update() is deprecated !
- * Use gtk_progress_bar_set_percentage ()
- */
-
- gtk_progress_set_percentage (GTK_PROGRESS (pbar), percentage);
-}
-
/**
* gtk_progress_bar_set_orientation:
* @pbar: a #GtkProgressBar
@@ -1249,12 +1145,12 @@ gtk_progress_bar_set_orientation (GtkProgressBar *pbar,
G_CONST_RETURN gchar*
gtk_progress_bar_get_text (GtkProgressBar *pbar)
{
+ GtkProgressBarPrivate* priv;
+
g_return_val_if_fail (GTK_IS_PROGRESS_BAR (pbar), NULL);
- if (GTK_PROGRESS (pbar)->use_text_format)
- return NULL;
- else
- return GTK_PROGRESS (pbar)->format;
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
+ return priv->text;
}
/**
@@ -1268,9 +1164,12 @@ gtk_progress_bar_get_text (GtkProgressBar *pbar)
gdouble
gtk_progress_bar_get_fraction (GtkProgressBar *pbar)
{
+ GtkProgressBarPrivate* priv;
+
g_return_val_if_fail (GTK_IS_PROGRESS_BAR (pbar), 0);
- return gtk_progress_get_current_percentage (GTK_PROGRESS (pbar));
+ priv = GTK_PROGRESS_BAR_GET_PRIVATE (pbar);
+ return priv->fraction;
}
/**
diff --git a/gtk/gtkprogressbar.h b/gtk/gtkprogressbar.h
index 6f09b2ce8a..cefe6f12f7 100644
--- a/gtk/gtkprogressbar.h
+++ b/gtk/gtkprogressbar.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -146,27 +146,6 @@ void gtk_progress_bar_set_ellipsize (GtkProgressBar *pbar,
PangoEllipsizeMode gtk_progress_bar_get_ellipsize (GtkProgressBar *pbar);
-#ifndef GTK_DISABLE_DEPRECATED
-
-/* Everything below here is deprecated */
-GtkWidget* gtk_progress_bar_new_with_adjustment (GtkAdjustment *adjustment);
-void gtk_progress_bar_set_bar_style (GtkProgressBar *pbar,
- GtkProgressBarStyle style);
-void gtk_progress_bar_set_discrete_blocks (GtkProgressBar *pbar,
- guint blocks);
-/* set_activity_step() is not only deprecated, it doesn't even work.
- * (Of course, it wasn't usable anyway, you had to set it from a size_allocate
- * handler or something)
- */
-void gtk_progress_bar_set_activity_step (GtkProgressBar *pbar,
- guint step);
-void gtk_progress_bar_set_activity_blocks (GtkProgressBar *pbar,
- guint blocks);
-void gtk_progress_bar_update (GtkProgressBar *pbar,
- gdouble percentage);
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_PROGRESS_BAR_H__ */
diff --git a/gtk/gtkradioaction.h b/gtk/gtkradioaction.h
index 2b7d72361c..d4a971254c 100644
--- a/gtk/gtkradioaction.h
+++ b/gtk/gtkradioaction.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkradiobutton.h b/gtk/gtkradiobutton.h
index c39e214db2..fb075131f6 100644
--- a/gtk/gtkradiobutton.h
+++ b/gtk/gtkradiobutton.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -85,10 +85,6 @@ GSList* gtk_radio_button_get_group (GtkRadioButton *radio
void gtk_radio_button_set_group (GtkRadioButton *radio_button,
GSList *group);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_radio_button_group gtk_radio_button_get_group
-#endif
-
G_END_DECLS
#endif /* __GTK_RADIO_BUTTON_H__ */
diff --git a/gtk/gtkradiomenuitem.h b/gtk/gtkradiomenuitem.h
index 46daa4dc5c..7382bfb7e7 100644
--- a/gtk/gtkradiomenuitem.h
+++ b/gtk/gtkradiomenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -85,10 +85,6 @@ GSList* gtk_radio_menu_item_get_group (GtkRadioMenuItem *
void gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item,
GSList *group);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_radio_menu_item_group gtk_radio_menu_item_get_group
-#endif
-
G_END_DECLS
#endif /* __GTK_RADIO_MENU_ITEM_H__ */
diff --git a/gtk/gtkradiotoolbutton.h b/gtk/gtkradiotoolbutton.h
index 768c7630b6..7f77efd429 100644
--- a/gtk/gtkradiotoolbutton.h
+++ b/gtk/gtkradiotoolbutton.h
@@ -20,7 +20,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrange.h b/gtk/gtkrange.h
index abfbc7c137..abbd105fb1 100644
--- a/gtk/gtkrange.h
+++ b/gtk/gtkrange.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrc.c b/gtk/gtkrc.c
index 556e92be8e..7ddd3311f8 100644
--- a/gtk/gtkrc.c
+++ b/gtk/gtkrc.c
@@ -1304,22 +1304,6 @@ _gtk_rc_style_unset_rc_property (GtkRcStyle *rc_style,
}
}
-void
-gtk_rc_style_ref (GtkRcStyle *rc_style)
-{
- g_return_if_fail (GTK_IS_RC_STYLE (rc_style));
-
- g_object_ref (rc_style);
-}
-
-void
-gtk_rc_style_unref (GtkRcStyle *rc_style)
-{
- g_return_if_fail (GTK_IS_RC_STYLE (rc_style));
-
- g_object_unref (rc_style);
-}
-
static GtkRcStyle *
gtk_rc_style_real_create_rc_style (GtkRcStyle *style)
{
@@ -2162,86 +2146,6 @@ gtk_rc_get_style_by_paths (GtkSettings *settings,
return NULL;
}
-static GSList *
-gtk_rc_add_rc_sets (GSList *slist,
- GtkRcStyle *rc_style,
- const gchar *pattern,
- GtkPathType path_type)
-{
- GtkRcStyle *new_style;
- GtkRcSet *rc_set;
- guint i;
-
- new_style = gtk_rc_style_new ();
- *new_style = *rc_style;
- new_style->name = g_strdup (rc_style->name);
- if (rc_style->font_desc)
- new_style->font_desc = pango_font_description_copy (rc_style->font_desc);
-
- for (i = 0; i < 5; i++)
- new_style->bg_pixmap_name[i] = g_strdup (rc_style->bg_pixmap_name[i]);
-
- rc_set = g_new (GtkRcSet, 1);
- rc_set->type = path_type;
-
- if (path_type == GTK_PATH_WIDGET_CLASS)
- {
- rc_set->pspec = NULL;
- rc_set->path = _gtk_rc_parse_widget_class_path (pattern);
- }
- else
- {
- rc_set->pspec = g_pattern_spec_new (pattern);
- rc_set->path = NULL;
- }
-
- rc_set->rc_style = rc_style;
-
- return g_slist_prepend (slist, rc_set);
-}
-
-void
-gtk_rc_add_widget_name_style (GtkRcStyle *rc_style,
- const gchar *pattern)
-{
- GtkRcContext *context;
-
- g_return_if_fail (rc_style != NULL);
- g_return_if_fail (pattern != NULL);
-
- context = gtk_rc_context_get (gtk_settings_get_default ());
-
- context->rc_sets_widget = gtk_rc_add_rc_sets (context->rc_sets_widget, rc_style, pattern, GTK_PATH_WIDGET);
-}
-
-void
-gtk_rc_add_widget_class_style (GtkRcStyle *rc_style,
- const gchar *pattern)
-{
- GtkRcContext *context;
-
- g_return_if_fail (rc_style != NULL);
- g_return_if_fail (pattern != NULL);
-
- context = gtk_rc_context_get (gtk_settings_get_default ());
-
- context->rc_sets_widget_class = gtk_rc_add_rc_sets (context->rc_sets_widget_class, rc_style, pattern, GTK_PATH_WIDGET_CLASS);
-}
-
-void
-gtk_rc_add_class_style (GtkRcStyle *rc_style,
- const gchar *pattern)
-{
- GtkRcContext *context;
-
- g_return_if_fail (rc_style != NULL);
- g_return_if_fail (pattern != NULL);
-
- context = gtk_rc_context_get (gtk_settings_get_default ());
-
- context->rc_sets_class = gtk_rc_add_rc_sets (context->rc_sets_class, rc_style, pattern, GTK_PATH_CLASS);
-}
-
GScanner*
gtk_rc_scanner_new (void)
{
diff --git a/gtk/gtkrc.h b/gtk/gtkrc.h
index 0d5e0cebaf..fb923c2f6b 100644
--- a/gtk/gtkrc.h
+++ b/gtk/gtkrc.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -159,25 +159,10 @@ void gtk_rc_parse (const gchar *filename);
void gtk_rc_parse_string (const gchar *rc_string);
gboolean gtk_rc_reparse_all (void);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_rc_add_widget_name_style (GtkRcStyle *rc_style,
- const gchar *pattern);
-void gtk_rc_add_widget_class_style (GtkRcStyle *rc_style,
- const gchar *pattern);
-void gtk_rc_add_class_style (GtkRcStyle *rc_style,
- const gchar *pattern);
-#endif /* GTK_DISABLE_DEPRECATED */
-
-
GType gtk_rc_style_get_type (void) G_GNUC_CONST;
GtkRcStyle* gtk_rc_style_new (void);
GtkRcStyle* gtk_rc_style_copy (GtkRcStyle *orig);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_rc_style_ref (GtkRcStyle *rc_style);
-void gtk_rc_style_unref (GtkRcStyle *rc_style);
-#endif
-
gchar* gtk_rc_find_module_in_path (const gchar *module_file);
gchar* gtk_rc_get_theme_dir (void);
gchar* gtk_rc_get_module_dir (void);
diff --git a/gtk/gtkrecentaction.h b/gtk/gtkrecentaction.h
index 96d5ca6a19..777a8baf7b 100644
--- a/gtk/gtkrecentaction.h
+++ b/gtk/gtkrecentaction.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrecentchooser.c b/gtk/gtkrecentchooser.c
index bb84ef5e07..71a5bcfcd8 100644
--- a/gtk/gtkrecentchooser.c
+++ b/gtk/gtkrecentchooser.c
@@ -607,72 +607,6 @@ recent_chooser_has_show_numbers (GtkRecentChooser *chooser)
}
/**
- * gtk_recent_chooser_set_show_numbers:
- * @chooser: a #GtkRecentChooser
- * @show_numbers: %TRUE to show numbers, %FALSE otherwise
- *
- * Whether to show recently used resources prepended by a unique number.
- *
- * Deprecated: 2.12: Use gtk_recent_chooser_menu_set_show_numbers() instead.
- *
- * Since: 2.10
- */
-void
-gtk_recent_chooser_set_show_numbers (GtkRecentChooser *chooser,
- gboolean show_numbers)
-{
- g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
-
- if (!recent_chooser_has_show_numbers (chooser))
- {
- g_warning ("Choosers of type `%s' do not support showing numbers",
- G_OBJECT_TYPE_NAME (chooser));
-
- return;
- }
-
- g_object_set (chooser, "show-numbers", show_numbers, NULL);
-}
-
-/**
- * gtk_recent_chooser_get_show_numbers:
- * @chooser: a #GtkRecentChooser
- *
- * Returns whether @chooser should display recently used resources
- * prepended by a unique number.
- *
- * Deprecated: 2.12: use gtk_recent_chooser_menu_get_show_numbers() instead.
- *
- * Return value: %TRUE if the recent chooser should show display numbers,
- * %FALSE otherwise.
- *
- * Since: 2.10
- */
-gboolean
-gtk_recent_chooser_get_show_numbers (GtkRecentChooser *chooser)
-{
- GParamSpec *pspec;
- gboolean show_numbers;
-
- g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
-
- pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (chooser),
- "show-numbers");
- if (!pspec || pspec->value_type != G_TYPE_BOOLEAN)
- {
- g_warning ("Choosers of type `%s' do not support showing numbers",
- G_OBJECT_TYPE_NAME (chooser));
-
- return FALSE;
- }
-
- g_object_get (chooser, "show-numbers", &show_numbers, NULL);
-
- return show_numbers;
-}
-
-
-/**
* gtk_recent_chooser_set_sort_type:
* @chooser: a #GtkRecentChooser
* @sort_type: sort order that the chooser should use
diff --git a/gtk/gtkrecentchooser.h b/gtk/gtkrecentchooser.h
index 2b5dd7e55f..8b891e1d51 100644
--- a/gtk/gtkrecentchooser.h
+++ b/gtk/gtkrecentchooser.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -138,11 +138,6 @@ gboolean gtk_recent_chooser_get_local_only (GtkRecentChooser *cho
void gtk_recent_chooser_set_show_tips (GtkRecentChooser *chooser,
gboolean show_tips);
gboolean gtk_recent_chooser_get_show_tips (GtkRecentChooser *chooser);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_recent_chooser_set_show_numbers (GtkRecentChooser *chooser,
- gboolean show_numbers);
-gboolean gtk_recent_chooser_get_show_numbers (GtkRecentChooser *chooser);
-#endif /* GTK_DISABLE_DEPRECATED */
void gtk_recent_chooser_set_show_icons (GtkRecentChooser *chooser,
gboolean show_icons);
gboolean gtk_recent_chooser_get_show_icons (GtkRecentChooser *chooser);
diff --git a/gtk/gtkrecentchooserdialog.h b/gtk/gtkrecentchooserdialog.h
index d8c12214a8..cfcce51362 100644
--- a/gtk/gtkrecentchooserdialog.h
+++ b/gtk/gtkrecentchooserdialog.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrecentchoosermenu.h b/gtk/gtkrecentchoosermenu.h
index 6b401d6918..c30547a786 100644
--- a/gtk/gtkrecentchoosermenu.h
+++ b/gtk/gtkrecentchoosermenu.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrecentchooserwidget.h b/gtk/gtkrecentchooserwidget.h
index d5aa58f51f..0a01428471 100644
--- a/gtk/gtkrecentchooserwidget.h
+++ b/gtk/gtkrecentchooserwidget.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrecentfilter.h b/gtk/gtkrecentfilter.h
index 3be8e5e979..8dc64a85f9 100644
--- a/gtk/gtkrecentfilter.h
+++ b/gtk/gtkrecentfilter.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkrecentmanager.c b/gtk/gtkrecentmanager.c
index 4181d4a0e2..a9ee6d37e7 100644
--- a/gtk/gtkrecentmanager.c
+++ b/gtk/gtkrecentmanager.c
@@ -641,58 +641,6 @@ gtk_recent_manager_get_default (void)
}
/**
- * gtk_recent_manager_get_for_screen:
- * @screen: a #GdkScreen
- *
- * Gets the recent manager object associated with @screen; if this
- * function has not previously been called for the given screen,
- * a new recent manager object will be created and associated with
- * the screen. Recent manager objects are fairly expensive to create,
- * so using this function is usually a better choice than calling
- * gtk_recent_manager_new() and setting the screen yourself; by using
- * this function a single recent manager object will be shared between
- * users.
- *
- * Return value: A unique #GtkRecentManager associated with the given
- * screen. This recent manager is associated to the with the screen
- * and can be used as long as the screen is open. Do not ref or
- * unref it.
- *
- * Deprecated: 2.12: This function has been deprecated and should
- * not be used in newly written code. Calling this function is
- * equivalent to calling gtk_recent_manager_get_default().
- *
- * Since: 2.10
- */
-GtkRecentManager *
-gtk_recent_manager_get_for_screen (GdkScreen *screen)
-{
- return gtk_recent_manager_get_default ();
-}
-
-/**
- * gtk_recent_manager_set_screen:
- * @manager: a #GtkRecentManager
- * @screen: a #GdkScreen
- *
- * Sets the screen for a recent manager; the screen is used to
- * track the user's currently configured recently used documents
- * storage.
- *
- * Since: 2.10
- *
- * Deprecated: 2.12: This function has been deprecated and should
- * not be used in newly written code. Calling this function has
- * no effect.
- */
-void
-gtk_recent_manager_set_screen (GtkRecentManager *manager,
- GdkScreen *screen)
-{
-
-}
-
-/**
* gtk_recent_manager_set_limit:
* @manager: a #GtkRecentManager
* @limit: the maximum number of items to return, or -1.
diff --git a/gtk/gtkrecentmanager.h b/gtk/gtkrecentmanager.h
index ccc6581594..d13fcf4148 100644
--- a/gtk/gtkrecentmanager.h
+++ b/gtk/gtkrecentmanager.h
@@ -18,7 +18,7 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -140,12 +140,6 @@ GType gtk_recent_manager_get_type (void) G_GNUC_CONST;
GtkRecentManager *gtk_recent_manager_new (void);
GtkRecentManager *gtk_recent_manager_get_default (void);
-#ifndef GTK_DISABLE_DEPRECATED
-GtkRecentManager *gtk_recent_manager_get_for_screen (GdkScreen *screen);
-void gtk_recent_manager_set_screen (GtkRecentManager *manager,
- GdkScreen *screen);
-#endif
-
gboolean gtk_recent_manager_add_item (GtkRecentManager *manager,
const gchar *uri);
gboolean gtk_recent_manager_add_full (GtkRecentManager *manager,
diff --git a/gtk/gtkruler.h b/gtk/gtkruler.h
index ed149e3af6..2702125809 100644
--- a/gtk/gtkruler.h
+++ b/gtk/gtkruler.h
@@ -34,7 +34,7 @@
* distribution.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkscale.h b/gtk/gtkscale.h
index 4221dd281c..204aa79891 100644
--- a/gtk/gtkscale.h
+++ b/gtk/gtkscale.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkscalebutton.c b/gtk/gtkscalebutton.c
index 7259622001..029123b10b 100644
--- a/gtk/gtkscalebutton.c
+++ b/gtk/gtkscalebutton.c
@@ -707,46 +707,6 @@ gtk_scale_button_set_adjustment (GtkScaleButton *button,
}
/**
- * gtk_scale_button_get_orientation:
- * @button: a #GtkScaleButton
- *
- * Gets the orientation of the #GtkScaleButton's popup window.
- *
- * Returns: the #GtkScaleButton's orientation.
- *
- * Since: 2.14
- *
- * Deprecated: 2.16: Use gtk_orientable_get_orientation() instead.
- **/
-GtkOrientation
-gtk_scale_button_get_orientation (GtkScaleButton *button)
-{
- g_return_val_if_fail (GTK_IS_SCALE_BUTTON (button), GTK_ORIENTATION_VERTICAL);
-
- return button->priv->orientation;
-}
-
-/**
- * gtk_scale_button_set_orientation:
- * @button: a #GtkScaleButton
- * @orientation: the new orientation
- *
- * Sets the orientation of the #GtkScaleButton's popup window.
- *
- * Since: 2.14
- *
- * Deprecated: 2.16: Use gtk_orientable_set_orientation() instead.
- **/
-void
-gtk_scale_button_set_orientation (GtkScaleButton *button,
- GtkOrientation orientation)
-{
- g_return_if_fail (GTK_IS_SCALE_BUTTON (button));
-
- gtk_scale_button_set_orientation_private (button, orientation);
-}
-
-/**
* gtk_scale_button_get_plus_button:
* @button: a #GtkScaleButton
*
diff --git a/gtk/gtkscalebutton.h b/gtk/gtkscalebutton.h
index 61239098db..fc6cc583c9 100644
--- a/gtk/gtkscalebutton.h
+++ b/gtk/gtkscalebutton.h
@@ -33,7 +33,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -99,14 +99,6 @@ GtkWidget * gtk_scale_button_get_plus_button (GtkScaleButton *button);
GtkWidget * gtk_scale_button_get_minus_button (GtkScaleButton *button);
GtkWidget * gtk_scale_button_get_popup (GtkScaleButton *button);
-#ifndef GTK_DISABLE_DEPRECATED
-
-GtkOrientation gtk_scale_button_get_orientation (GtkScaleButton *button);
-void gtk_scale_button_set_orientation (GtkScaleButton *button,
- GtkOrientation orientation);
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_SCALE_BUTTON_H__ */
diff --git a/gtk/gtkscrollbar.h b/gtk/gtkscrollbar.h
index 524335da14..eab137e68c 100644
--- a/gtk/gtkscrollbar.h
+++ b/gtk/gtkscrollbar.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkscrolledwindow.h b/gtk/gtkscrolledwindow.h
index a82b3b0967..c5d50663f7 100644
--- a/gtk/gtkscrolledwindow.h
+++ b/gtk/gtkscrolledwindow.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c
index cbc2b3ec35..5c7db9cc7f 100644
--- a/gtk/gtkselection.c
+++ b/gtk/gtkselection.c
@@ -2177,7 +2177,7 @@ gtk_selection_init (void)
}
/**
- * gtk_selection_clear:
+ * _gtk_selection_clear:
* @widget: a #GtkWidget
* @event: the event
*
@@ -2185,15 +2185,9 @@ gtk_selection_init (void)
* signal.
*
* Return value: %TRUE if the event was handled, otherwise false
- *
- * Since: 2.2
- *
- * Deprecated: 2.4: Instead of calling this function, chain up from
- * your selection-clear-event handler. Calling this function
- * from any other context is illegal.
**/
gboolean
-gtk_selection_clear (GtkWidget *widget,
+_gtk_selection_clear (GtkWidget *widget,
GdkEventSelection *event)
{
/* Note that we filter clear events in gdkselection-x11.c, so
diff --git a/gtk/gtkselection.h b/gtk/gtkselection.h
index 55bfcad89a..ae689d552e 100644
--- a/gtk/gtkselection.h
+++ b/gtk/gtkselection.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -197,10 +197,8 @@ gboolean gtk_targets_include_uri (GdkAtom *targets,
void gtk_selection_remove_all (GtkWidget *widget);
/* Event handlers */
-#if !defined(GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
-gboolean gtk_selection_clear (GtkWidget *widget,
+gboolean _gtk_selection_clear (GtkWidget *widget,
GdkEventSelection *event);
-#endif
gboolean _gtk_selection_request (GtkWidget *widget,
GdkEventSelection *event);
gboolean _gtk_selection_incr_event (GdkWindow *window,
diff --git a/gtk/gtkseparator.h b/gtk/gtkseparator.h
index e0f6467358..b2ae0fba0c 100644
--- a/gtk/gtkseparator.h
+++ b/gtk/gtkseparator.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkseparatormenuitem.h b/gtk/gtkseparatormenuitem.h
index 8b9bb5920f..146174bd3d 100644
--- a/gtk/gtkseparatormenuitem.h
+++ b/gtk/gtkseparatormenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkseparatortoolitem.h b/gtk/gtkseparatortoolitem.h
index f015f65443..1547742c23 100644
--- a/gtk/gtkseparatortoolitem.h
+++ b/gtk/gtkseparatortoolitem.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtksettings.h b/gtk/gtksettings.h
index 4be0772c63..36fb9a5db9 100644
--- a/gtk/gtksettings.h
+++ b/gtk/gtksettings.h
@@ -16,7 +16,7 @@
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtksignal.c b/gtk/gtksignal.c
deleted file mode 100644
index c855582da5..0000000000
--- a/gtk/gtksignal.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include <config.h>
-#include "gtksignal.h"
-#include "gtkalias.h"
-
-/* the real parameter limit is of course given by GSignal, bu we need
- * an upper limit for the implementations. so this should be adjusted
- * with any future changes on the GSignal side of things.
- */
-#define SIGNAL_MAX_PARAMS 12
-
-
-/* --- functions --- */
-guint
-gtk_signal_newv (const gchar *name,
- GtkSignalRunType signal_flags,
- GType object_type,
- guint function_offset,
- GSignalCMarshaller marshaller,
- GType return_val,
- guint n_params,
- GType *params)
-{
- GClosure *closure;
-
- g_return_val_if_fail (n_params < SIGNAL_MAX_PARAMS, 0);
-
- closure = function_offset ? g_signal_type_cclosure_new (object_type, function_offset) : NULL;
-
- return g_signal_newv (name, object_type, (GSignalFlags)signal_flags, closure,
- NULL, NULL, marshaller, return_val, n_params, params);
-}
-
-guint
-gtk_signal_new (const gchar *name,
- GtkSignalRunType signal_flags,
- GType object_type,
- guint function_offset,
- GSignalCMarshaller marshaller,
- GType return_val,
- guint n_params,
- ...)
-{
- GType *params;
- guint signal_id;
-
- if (n_params)
- {
- va_list args;
- guint i;
-
- params = g_new (GType, n_params);
- va_start (args, n_params);
- for (i = 0; i < n_params; i++)
- params[i] = va_arg (args, GType);
- va_end (args);
- }
- else
- params = NULL;
- signal_id = gtk_signal_newv (name,
- signal_flags,
- object_type,
- function_offset,
- marshaller,
- return_val,
- n_params,
- params);
- g_free (params);
-
- return signal_id;
-}
-
-void
-gtk_signal_emit_stop_by_name (GtkObject *object,
- const gchar *name)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_signal_stop_emission (object, g_signal_lookup (name, G_OBJECT_TYPE (object)), 0);
-}
-
-void
-gtk_signal_connect_object_while_alive (GtkObject *object,
- const gchar *name,
- GCallback func,
- GtkObject *alive_object)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_signal_connect_closure_by_id (object,
- g_signal_lookup (name, G_OBJECT_TYPE (object)), 0,
- g_cclosure_new_object_swap (func, G_OBJECT (alive_object)),
- FALSE);
-}
-
-void
-gtk_signal_connect_while_alive (GtkObject *object,
- const gchar *name,
- GCallback func,
- gpointer func_data,
- GtkObject *alive_object)
-{
- GClosure *closure;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- closure = g_cclosure_new (func, func_data, NULL);
- g_object_watch_closure (G_OBJECT (alive_object), closure);
- g_signal_connect_closure_by_id (object,
- g_signal_lookup (name, G_OBJECT_TYPE (object)), 0,
- closure,
- FALSE);
-}
-
-gulong
-gtk_signal_connect_full (GtkObject *object,
- const gchar *name,
- GCallback func,
- GtkCallbackMarshal unsupported,
- gpointer data,
- GDestroyNotify destroy_func,
- gint object_signal,
- gint after)
-{
- g_return_val_if_fail (GTK_IS_OBJECT (object), 0);
- g_return_val_if_fail (unsupported == NULL, 0);
-
- return g_signal_connect_closure_by_id (object,
- g_signal_lookup (name, G_OBJECT_TYPE (object)), 0,
- (object_signal
- ? g_cclosure_new_swap
- : g_cclosure_new) (func,
- data,
- (GClosureNotify) destroy_func),
- after);
-}
-
-void
-gtk_signal_compat_matched (GtkObject *object,
- GCallback func,
- gpointer data,
- GSignalMatchType match,
- guint action)
-{
- guint n_handlers;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- switch (action)
- {
- case 0: n_handlers = g_signal_handlers_disconnect_matched (object, match, 0, 0, NULL, (gpointer) func, data); break;
- case 1: n_handlers = g_signal_handlers_block_matched (object, match, 0, 0, NULL, (gpointer) func, data); break;
- case 2: n_handlers = g_signal_handlers_unblock_matched (object, match, 0, 0, NULL, (gpointer) func, data); break;
- default: n_handlers = 0; break;
- }
-
- if (!n_handlers)
- g_warning ("unable to find signal handler for object(%s:%p) with func(%p) and data(%p)",
- G_OBJECT_TYPE_NAME (object), object, func, data);
-}
-
-static inline gboolean
-gtk_arg_to_value (GtkArg *arg,
- GValue *value)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: g_value_set_char (value, GTK_VALUE_CHAR (*arg)); break;
- case G_TYPE_UCHAR: g_value_set_uchar (value, GTK_VALUE_UCHAR (*arg)); break;
- case G_TYPE_BOOLEAN: g_value_set_boolean (value, GTK_VALUE_BOOL (*arg)); break;
- case G_TYPE_INT: g_value_set_int (value, GTK_VALUE_INT (*arg)); break;
- case G_TYPE_UINT: g_value_set_uint (value, GTK_VALUE_UINT (*arg)); break;
- case G_TYPE_LONG: g_value_set_long (value, GTK_VALUE_LONG (*arg)); break;
- case G_TYPE_ULONG: g_value_set_ulong (value, GTK_VALUE_ULONG (*arg)); break;
- case G_TYPE_ENUM: g_value_set_enum (value, GTK_VALUE_ENUM (*arg)); break;
- case G_TYPE_FLAGS: g_value_set_flags (value, GTK_VALUE_FLAGS (*arg)); break;
- case G_TYPE_FLOAT: g_value_set_float (value, GTK_VALUE_FLOAT (*arg)); break;
- case G_TYPE_DOUBLE: g_value_set_double (value, GTK_VALUE_DOUBLE (*arg)); break;
- case G_TYPE_STRING: g_value_set_string (value, GTK_VALUE_STRING (*arg)); break;
- case G_TYPE_BOXED: g_value_set_boxed (value, GTK_VALUE_BOXED (*arg)); break;
- case G_TYPE_POINTER: g_value_set_pointer (value, GTK_VALUE_POINTER (*arg)); break;
- case G_TYPE_OBJECT: g_value_set_object (value, GTK_VALUE_POINTER (*arg)); break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static inline gboolean
-gtk_arg_static_to_value (GtkArg *arg,
- GValue *value)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: g_value_set_char (value, GTK_VALUE_CHAR (*arg)); break;
- case G_TYPE_UCHAR: g_value_set_uchar (value, GTK_VALUE_UCHAR (*arg)); break;
- case G_TYPE_BOOLEAN: g_value_set_boolean (value, GTK_VALUE_BOOL (*arg)); break;
- case G_TYPE_INT: g_value_set_int (value, GTK_VALUE_INT (*arg)); break;
- case G_TYPE_UINT: g_value_set_uint (value, GTK_VALUE_UINT (*arg)); break;
- case G_TYPE_LONG: g_value_set_long (value, GTK_VALUE_LONG (*arg)); break;
- case G_TYPE_ULONG: g_value_set_ulong (value, GTK_VALUE_ULONG (*arg)); break;
- case G_TYPE_ENUM: g_value_set_enum (value, GTK_VALUE_ENUM (*arg)); break;
- case G_TYPE_FLAGS: g_value_set_flags (value, GTK_VALUE_FLAGS (*arg)); break;
- case G_TYPE_FLOAT: g_value_set_float (value, GTK_VALUE_FLOAT (*arg)); break;
- case G_TYPE_DOUBLE: g_value_set_double (value, GTK_VALUE_DOUBLE (*arg)); break;
- case G_TYPE_STRING: g_value_set_static_string (value, GTK_VALUE_STRING (*arg)); break;
- case G_TYPE_BOXED: g_value_set_static_boxed (value, GTK_VALUE_BOXED (*arg)); break;
- case G_TYPE_POINTER: g_value_set_pointer (value, GTK_VALUE_POINTER (*arg)); break;
- case G_TYPE_OBJECT: g_value_set_object (value, GTK_VALUE_POINTER (*arg)); break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static inline gboolean
-gtk_arg_set_from_value (GtkArg *arg,
- GValue *value,
- gboolean copy_string)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: GTK_VALUE_CHAR (*arg) = g_value_get_char (value); break;
- case G_TYPE_UCHAR: GTK_VALUE_UCHAR (*arg) = g_value_get_uchar (value); break;
- case G_TYPE_BOOLEAN: GTK_VALUE_BOOL (*arg) = g_value_get_boolean (value); break;
- case G_TYPE_INT: GTK_VALUE_INT (*arg) = g_value_get_int (value); break;
- case G_TYPE_UINT: GTK_VALUE_UINT (*arg) = g_value_get_uint (value); break;
- case G_TYPE_LONG: GTK_VALUE_LONG (*arg) = g_value_get_long (value); break;
- case G_TYPE_ULONG: GTK_VALUE_ULONG (*arg) = g_value_get_ulong (value); break;
- case G_TYPE_ENUM: GTK_VALUE_ENUM (*arg) = g_value_get_enum (value); break;
- case G_TYPE_FLAGS: GTK_VALUE_FLAGS (*arg) = g_value_get_flags (value); break;
- case G_TYPE_FLOAT: GTK_VALUE_FLOAT (*arg) = g_value_get_float (value); break;
- case G_TYPE_DOUBLE: GTK_VALUE_DOUBLE (*arg) = g_value_get_double (value); break;
- case G_TYPE_BOXED: GTK_VALUE_BOXED (*arg) = g_value_get_boxed (value); break;
- case G_TYPE_POINTER: GTK_VALUE_POINTER (*arg) = g_value_get_pointer (value); break;
- case G_TYPE_OBJECT: GTK_VALUE_POINTER (*arg) = g_value_get_object (value); break;
- case G_TYPE_STRING: if (copy_string)
- GTK_VALUE_STRING (*arg) = g_value_dup_string (value);
- else
- GTK_VALUE_STRING (*arg) = (char *) g_value_get_string (value);
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static inline gboolean
-gtk_argloc_set_from_value (GtkArg *arg,
- GValue *value,
- gboolean copy_string)
-{
- switch (G_TYPE_FUNDAMENTAL (arg->type))
- {
- case G_TYPE_CHAR: *GTK_RETLOC_CHAR (*arg) = g_value_get_char (value); break;
- case G_TYPE_UCHAR: *GTK_RETLOC_UCHAR (*arg) = g_value_get_uchar (value); break;
- case G_TYPE_BOOLEAN: *GTK_RETLOC_BOOL (*arg) = g_value_get_boolean (value); break;
- case G_TYPE_INT: *GTK_RETLOC_INT (*arg) = g_value_get_int (value); break;
- case G_TYPE_UINT: *GTK_RETLOC_UINT (*arg) = g_value_get_uint (value); break;
- case G_TYPE_LONG: *GTK_RETLOC_LONG (*arg) = g_value_get_long (value); break;
- case G_TYPE_ULONG: *GTK_RETLOC_ULONG (*arg) = g_value_get_ulong (value); break;
- case G_TYPE_ENUM: *GTK_RETLOC_ENUM (*arg) = g_value_get_enum (value); break;
- case G_TYPE_FLAGS: *GTK_RETLOC_FLAGS (*arg) = g_value_get_flags (value); break;
- case G_TYPE_FLOAT: *GTK_RETLOC_FLOAT (*arg) = g_value_get_float (value); break;
- case G_TYPE_DOUBLE: *GTK_RETLOC_DOUBLE (*arg) = g_value_get_double (value); break;
- case G_TYPE_BOXED: *GTK_RETLOC_BOXED (*arg) = g_value_get_boxed (value); break;
- case G_TYPE_POINTER: *GTK_RETLOC_POINTER (*arg) = g_value_get_pointer (value); break;
- case G_TYPE_OBJECT: *GTK_RETLOC_POINTER (*arg) = g_value_get_object (value); break;
- case G_TYPE_STRING: if (copy_string)
- *GTK_RETLOC_STRING (*arg) = g_value_dup_string (value);
- else
- *GTK_RETLOC_STRING (*arg) = (char *) g_value_get_string (value);
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-void
-gtk_signal_emitv (GtkObject *object,
- guint signal_id,
- GtkArg *args)
-{
- GSignalQuery query;
- GValue params[SIGNAL_MAX_PARAMS + 1] = { { 0, }, };
- GValue rvalue = { 0, };
- guint i;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- g_signal_query (signal_id, &query);
- g_return_if_fail (query.signal_id != 0);
- g_return_if_fail (g_type_is_a (GTK_OBJECT_TYPE (object), query.itype));
- g_return_if_fail (query.n_params < SIGNAL_MAX_PARAMS);
- if (query.n_params > 0)
- g_return_if_fail (args != NULL);
-
- g_value_init (params + 0, GTK_OBJECT_TYPE (object));
- g_value_set_object (params + 0, G_OBJECT (object));
- for (i = 0; i < query.n_params; i++)
- {
- GValue *value = params + 1 + i;
- GtkArg *arg = args + i;
-
- g_value_init (value, arg->type & ~G_SIGNAL_TYPE_STATIC_SCOPE);
- if (!gtk_arg_static_to_value (arg, value))
- {
- g_warning ("%s: failed to convert arg type `%s' to value type `%s'",
- G_STRLOC, g_type_name (arg->type & ~G_SIGNAL_TYPE_STATIC_SCOPE),
- g_type_name (G_VALUE_TYPE (value)));
- return;
- }
- }
- if (query.return_type != G_TYPE_NONE)
- g_value_init (&rvalue, query.return_type);
-
- g_signal_emitv (params, signal_id, 0, &rvalue);
-
- if (query.return_type != G_TYPE_NONE)
- {
- gtk_argloc_set_from_value (args + query.n_params, &rvalue, TRUE);
- g_value_unset (&rvalue);
- }
- for (i = 0; i < query.n_params; i++)
- g_value_unset (params + 1 + i);
- g_value_unset (params + 0);
-}
-
-void
-gtk_signal_emit (GtkObject *object,
- guint signal_id,
- ...)
-{
- va_list var_args;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- va_start (var_args, signal_id);
- g_signal_emit_valist (G_OBJECT (object), signal_id, 0, var_args);
- va_end (var_args);
-}
-
-void
-gtk_signal_emit_by_name (GtkObject *object,
- const gchar *name,
- ...)
-{
- GSignalQuery query;
- va_list var_args;
-
- g_return_if_fail (GTK_IS_OBJECT (object));
- g_return_if_fail (name != NULL);
-
- g_signal_query (g_signal_lookup (name, GTK_OBJECT_TYPE (object)), &query);
- g_return_if_fail (query.signal_id != 0);
-
- va_start (var_args, name);
- g_signal_emit_valist (G_OBJECT (object), query.signal_id, 0, var_args);
- va_end (var_args);
-}
-
-void
-gtk_signal_emitv_by_name (GtkObject *object,
- const gchar *name,
- GtkArg *args)
-{
- g_return_if_fail (GTK_IS_OBJECT (object));
-
- gtk_signal_emitv (object, g_signal_lookup (name, GTK_OBJECT_TYPE (object)), args);
-}
-
-#define __GTK_SIGNAL_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtksignal.h b/gtk/gtksignal.h
deleted file mode 100644
index dbb5c430b6..0000000000
--- a/gtk/gtksignal.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_SIGNAL_H__
-#define __GTK_SIGNAL_H__
-
-#include <gtk/gtk.h>
-#include <gtk/gtkmarshal.h>
-
-G_BEGIN_DECLS
-
-#define gtk_signal_default_marshaller g_cclosure_marshal_VOID__VOID
-
-
-/* --- compat defines --- */
-#define GTK_SIGNAL_OFFSET G_STRUCT_OFFSET
-#define gtk_signal_lookup(name,object_type) \
- g_signal_lookup ((name), (object_type))
-#define gtk_signal_name(signal_id) \
- g_signal_name (signal_id)
-#define gtk_signal_emit_stop(object,signal_id) \
- g_signal_stop_emission ((object), (signal_id), 0)
-#define gtk_signal_connect(object,name,func,func_data) \
- gtk_signal_connect_full ((object), (name), (func), NULL, (func_data), NULL, 0, 0)
-#define gtk_signal_connect_after(object,name,func,func_data) \
- gtk_signal_connect_full ((object), (name), (func), NULL, (func_data), NULL, 0, 1)
-#define gtk_signal_connect_object(object,name,func,slot_object) \
- gtk_signal_connect_full ((object), (name), (func), NULL, (slot_object), NULL, 1, 0)
-#define gtk_signal_connect_object_after(object,name,func,slot_object) \
- gtk_signal_connect_full ((object), (name), (func), NULL, (slot_object), NULL, 1, 1)
-#define gtk_signal_disconnect(object,handler_id) \
- g_signal_handler_disconnect ((object), (handler_id))
-#define gtk_signal_handler_block(object,handler_id) \
- g_signal_handler_block ((object), (handler_id))
-#define gtk_signal_handler_unblock(object,handler_id) \
- g_signal_handler_unblock ((object), (handler_id))
-#define gtk_signal_disconnect_by_func(object,func,data) \
- gtk_signal_compat_matched ((object), (func), (data), \
- (GSignalMatchType)(G_SIGNAL_MATCH_FUNC | \
- G_SIGNAL_MATCH_DATA), 0)
-#define gtk_signal_disconnect_by_data(object,data) \
- gtk_signal_compat_matched ((object), 0, (data), G_SIGNAL_MATCH_DATA, 0)
-#define gtk_signal_handler_block_by_func(object,func,data) \
- gtk_signal_compat_matched ((object), (func), (data), \
- (GSignalMatchType)(G_SIGNAL_MATCH_FUNC | \
- G_SIGNAL_MATCH_DATA), 1)
-#define gtk_signal_handler_block_by_data(object,data) \
- gtk_signal_compat_matched ((object), 0, (data), G_SIGNAL_MATCH_DATA, 1)
-#define gtk_signal_handler_unblock_by_func(object,func,data) \
- gtk_signal_compat_matched ((object), (func), (data), \
- (GSignalMatchType)(G_SIGNAL_MATCH_FUNC | \
- G_SIGNAL_MATCH_DATA), 2)
-#define gtk_signal_handler_unblock_by_data(object,data) \
- gtk_signal_compat_matched ((object), 0, (data), G_SIGNAL_MATCH_DATA, 2)
-#define gtk_signal_handler_pending(object,signal_id,may_be_blocked) \
- g_signal_has_handler_pending ((object), (signal_id), 0, (may_be_blocked))
-#define gtk_signal_handler_pending_by_func(object,signal_id,may_be_blocked,func,data) \
- (g_signal_handler_find ((object), \
- (GSignalMatchType)(G_SIGNAL_MATCH_ID | \
- G_SIGNAL_MATCH_FUNC | \
- G_SIGNAL_MATCH_DATA | \
- ((may_be_blocked) ? 0 : G_SIGNAL_MATCH_UNBLOCKED)),\
- (signal_id), 0, 0, (func), (data)) != 0)
-
-
-/* --- compat functions --- */
-guint gtk_signal_newv (const gchar *name,
- GtkSignalRunType signal_flags,
- GType object_type,
- guint function_offset,
- GSignalCMarshaller marshaller,
- GType return_val,
- guint n_args,
- GType *args);
-guint gtk_signal_new (const gchar *name,
- GtkSignalRunType signal_flags,
- GType object_type,
- guint function_offset,
- GSignalCMarshaller marshaller,
- GType return_val,
- guint n_args,
- ...);
-void gtk_signal_emit_stop_by_name (GtkObject *object,
- const gchar *name);
-void gtk_signal_connect_object_while_alive (GtkObject *object,
- const gchar *name,
- GCallback func,
- GtkObject *alive_object);
-void gtk_signal_connect_while_alive (GtkObject *object,
- const gchar *name,
- GCallback func,
- gpointer func_data,
- GtkObject *alive_object);
-gulong gtk_signal_connect_full (GtkObject *object,
- const gchar *name,
- GCallback func,
- GtkCallbackMarshal unsupported,
- gpointer data,
- GDestroyNotify destroy_func,
- gint object_signal,
- gint after);
-void gtk_signal_emitv (GtkObject *object,
- guint signal_id,
- GtkArg *args);
-void gtk_signal_emit (GtkObject *object,
- guint signal_id,
- ...);
-void gtk_signal_emit_by_name (GtkObject *object,
- const gchar *name,
- ...);
-void gtk_signal_emitv_by_name (GtkObject *object,
- const gchar *name,
- GtkArg *args);
-void gtk_signal_compat_matched (GtkObject *object,
- GCallback func,
- gpointer data,
- GSignalMatchType match,
- guint action);
-
-G_END_DECLS
-
-#endif /* __GTK_SIGNAL_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtksizegroup.h b/gtk/gtksizegroup.h
index 28a06e9567..a41f8958ae 100644
--- a/gtk/gtksizegroup.h
+++ b/gtk/gtksizegroup.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtksocket.c b/gtk/gtksocket.c
index 3531af47fc..dfb20f001d 100644
--- a/gtk/gtksocket.c
+++ b/gtk/gtksocket.c
@@ -290,32 +290,6 @@ gtk_socket_new (void)
}
/**
- * gtk_socket_steal:
- * @socket_: a #GtkSocket
- * @wid: the window ID of an existing toplevel window.
- *
- * Reparents a pre-existing toplevel window into a #GtkSocket. This is
- * meant to embed clients that do not know about embedding into a
- * #GtkSocket, however doing so is inherently unreliable, and using
- * this function is not recommended.
- *
- * The #GtkSocket must have already be added into a toplevel window
- * before you can make this call.
- **/
-void
-gtk_socket_steal (GtkSocket *socket,
- GdkNativeWindow wid)
-{
- g_return_if_fail (GTK_IS_SOCKET (socket));
- g_return_if_fail (GTK_WIDGET_ANCHORED (socket));
-
- if (!gtk_widget_get_realized (GTK_WIDGET (socket)))
- gtk_widget_realize (GTK_WIDGET (socket));
-
- _gtk_socket_add_window (socket, wid, TRUE);
-}
-
-/**
* gtk_socket_add_id:
* @socket_: a #GtkSocket
* @window_id: the window ID of a client participating in the XEMBED protocol.
diff --git a/gtk/gtksocket.h b/gtk/gtksocket.h
index db347c06f0..e3cd3a36ce 100644
--- a/gtk/gtksocket.h
+++ b/gtk/gtksocket.h
@@ -23,7 +23,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -92,11 +92,6 @@ void gtk_socket_add_id (GtkSocket *socket_,
GdkNativeWindow gtk_socket_get_id (GtkSocket *socket_);
GdkWindow* gtk_socket_get_plug_window (GtkSocket *socket_);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_socket_steal (GtkSocket *socket_,
- GdkNativeWindow wid);
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_SOCKET_H__ */
diff --git a/gtk/gtkspinbutton.h b/gtk/gtkspinbutton.h
index 6767953792..4f43a4a2a1 100644
--- a/gtk/gtkspinbutton.h
+++ b/gtk/gtkspinbutton.h
@@ -27,7 +27,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -186,11 +186,6 @@ void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button,
gboolean gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button);
void gtk_spin_button_update (GtkSpinButton *spin_button);
-
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_spin_button_get_value_as_float gtk_spin_button_get_value
-#endif
-
G_END_DECLS
#endif /* __GTK_SPIN_BUTTON_H__ */
diff --git a/gtk/gtkstatusbar.h b/gtk/gtkstatusbar.h
index ff0597655c..77558df23a 100644
--- a/gtk/gtkstatusbar.h
+++ b/gtk/gtkstatusbar.h
@@ -25,7 +25,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkstatusicon.c b/gtk/gtkstatusicon.c
index 146b8f09c9..e6ec4057b8 100644
--- a/gtk/gtkstatusicon.c
+++ b/gtk/gtkstatusicon.c
@@ -2267,24 +2267,6 @@ gtk_status_icon_get_screen (GtkStatusIcon *status_icon)
#endif
}
-/**
- * gtk_status_icon_set_tooltip:
- * @status_icon: a #GtkStatusIcon
- * @tooltip_text: (allow-none): the tooltip text, or %NULL
- *
- * Sets the tooltip of the status icon.
- *
- * Since: 2.10
- *
- * Deprecated: 2.16: Use gtk_status_icon_set_tooltip_text() instead.
- */
-void
-gtk_status_icon_set_tooltip (GtkStatusIcon *status_icon,
- const gchar *tooltip_text)
-{
- gtk_status_icon_set_tooltip_text (status_icon, tooltip_text);
-}
-
static gboolean
gtk_status_icon_blinker (GtkStatusIcon *status_icon)
{
diff --git a/gtk/gtkstatusicon.h b/gtk/gtkstatusicon.h
index 0c08cfe212..9142367b12 100644
--- a/gtk/gtkstatusicon.h
+++ b/gtk/gtkstatusicon.h
@@ -21,7 +21,7 @@
* Mark McLoughlin <mark@skynet.ie>
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -110,10 +110,6 @@ void gtk_status_icon_set_screen (GtkStatusIcon *st
GdkScreen *screen);
GdkScreen *gtk_status_icon_get_screen (GtkStatusIcon *status_icon);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_status_icon_set_tooltip (GtkStatusIcon *status_icon,
- const gchar *tooltip_text);
-#endif
void gtk_status_icon_set_has_tooltip (GtkStatusIcon *status_icon,
gboolean has_tooltip);
void gtk_status_icon_set_tooltip_text (GtkStatusIcon *status_icon,
diff --git a/gtk/gtkstock.h b/gtk/gtkstock.h
index 84c22a4db9..0d3d2c02d7 100644
--- a/gtk/gtkstock.h
+++ b/gtk/gtkstock.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index f18d76a2e7..53c4711f90 100644
--- a/gtk/gtkstyle.c
+++ b/gtk/gtkstyle.c
@@ -32,7 +32,6 @@
#include "gtkgc.h"
#include "gtkmarshalers.h"
#undef GTK_DISABLE_DEPRECATED
-#include "gtkoptionmenu.h"
#include "gtkrc.h"
#include "gtkspinbutton.h"
#include "gtkstyle.h"
@@ -42,6 +41,7 @@
#include "gtksettings.h" /* _gtk_settings_parse_convert() */
#include "gtkintl.h"
#include "gtkalias.h"
+#include "gtkspinner.h"
#define LIGHTNESS_MULT 1.3
#define DARKNESS_MULT 0.7
@@ -828,35 +828,6 @@ gtk_style_detach (GtkStyle *style)
}
}
-/**
- * gtk_style_ref:
- * @style: a #GtkStyle.
- * @returns: @style.
- *
- * Increase the reference count of @style.
- *
- * Deprecated: 2.0: use g_object_ref() instead.
- */
-GtkStyle*
-gtk_style_ref (GtkStyle *style)
-{
- return (GtkStyle *) g_object_ref (style);
-}
-
-/**
- * gtk_style_unref:
- * @style: a #GtkStyle.
- *
- * Decrease the reference count of @style.
- *
- * Deprecated: 2.0: use g_object_unref() instead.
- */
-void
-gtk_style_unref (GtkStyle *style)
-{
- g_object_unref (style);
-}
-
static void
gtk_style_realize (GtkStyle *style,
GdkColormap *colormap)
@@ -949,675 +920,6 @@ gtk_style_lookup_color (GtkStyle *style,
}
/**
- * gtk_draw_hline:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @x1: the starting x coordinate
- * @x2: the ending x coordinate
- * @y: the y coordinate
- *
- * Draws a horizontal line from (@x1, @y) to (@x2, @y) in @window
- * using the given style and state.
- *
- * Deprecated: 2.0: Use gtk_paint_hline() instead.
- **/
-void
-gtk_draw_hline (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x1,
- gint x2,
- gint y)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_hline != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_hline (style, window, state_type, NULL, NULL, NULL, x1, x2, y);
-}
-
-
-/**
- * gtk_draw_vline:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @y1_: the starting y coordinate
- * @y2_: the ending y coordinate
- * @x: the x coordinate
- *
- * Draws a vertical line from (@x, @y1_) to (@x, @y2_) in @window
- * using the given style and state.
- *
- * Deprecated: 2.0: Use gtk_paint_vline() instead.
- **/
-void
-gtk_draw_vline (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint y1_,
- gint y2_,
- gint x)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_vline != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_vline (style, window, state_type, NULL, NULL, NULL, y1_, y2_, x);
-}
-
-/**
- * gtk_draw_shadow:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @x: x origin of the rectangle
- * @y: y origin of the rectangle
- * @width: width of the rectangle
- * @height: width of the rectangle
- *
- * Draws a shadow around the given rectangle in @window
- * using the given style and state and shadow type.
- *
- * Deprecated: 2.0: Use gtk_paint_shadow() instead.
- */
-void
-gtk_draw_shadow (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_shadow != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_shadow (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_polygon:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @points: an array of #GdkPoint<!-- -->s
- * @npoints: length of @points
- * @fill: %TRUE if the polygon should be filled
- *
- * Draws a polygon on @window with the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_polygon() instead.
- */
-void
-gtk_draw_polygon (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GdkPoint *points,
- gint npoints,
- gboolean fill)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_polygon != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_polygon (style, window, state_type, shadow_type, NULL, NULL, NULL, points, npoints, fill);
-}
-
-/**
- * gtk_draw_arrow:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @arrow_type: the type of arrow to draw
- * @fill: %TRUE if the arrow tip should be filled
- * @x: x origin of the rectangle to draw the arrow in
- * @y: y origin of the rectangle to draw the arrow in
- * @width: width of the rectangle to draw the arrow in
- * @height: height of the rectangle to draw the arrow in
- *
- * Draws an arrow in the given rectangle on @window using the given
- * parameters. @arrow_type determines the direction of the arrow.
- *
- * Deprecated: 2.0: Use gtk_paint_arrow() instead.
- */
-void
-gtk_draw_arrow (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GtkArrowType arrow_type,
- gboolean fill,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_arrow != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_arrow (style, window, state_type, shadow_type, NULL, NULL, NULL, arrow_type, fill, x, y, width, height);
-}
-
-/**
- * gtk_draw_diamond:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the rectangle to draw the diamond in
- * @y: y origin of the rectangle to draw the diamond in
- * @width: width of the rectangle to draw the diamond in
- * @height: height of the rectangle to draw the diamond in
- *
- * Draws a diamond in the given rectangle on @window using the given
- * parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_diamond() instead.
- */
-void
-gtk_draw_diamond (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_diamond != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_diamond (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_string:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @x: x origin
- * @y: y origin
- * @string: the string to draw
- *
- * Draws a text string on @window with the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_layout() instead.
- */
-void
-gtk_draw_string (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x,
- gint y,
- const gchar *string)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_string != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_string (style, window, state_type, NULL, NULL, NULL, x, y, string);
-}
-
-/**
- * gtk_draw_box:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the box
- * @y: y origin of the box
- * @width: the width of the box
- * @height: the height of the box
- *
- * Draws a box on @window with the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_box() instead.
- */
-void
-gtk_draw_box (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_box != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_box (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_flat_box:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the box
- * @y: y origin of the box
- * @width: the width of the box
- * @height: the height of the box
- *
- * Draws a flat box on @window with the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_flat_box() instead.
- */
-void
-gtk_draw_flat_box (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_flat_box != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_flat_box (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_check:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the rectangle to draw the check in
- * @y: y origin of the rectangle to draw the check in
- * @width: the width of the rectangle to draw the check in
- * @height: the height of the rectangle to draw the check in
- *
- * Draws a check button indicator in the given rectangle on @window with
- * the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_check() instead.
- */
-void
-gtk_draw_check (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_check != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_check (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_option:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the rectangle to draw the option in
- * @y: y origin of the rectangle to draw the option in
- * @width: the width of the rectangle to draw the option in
- * @height: the height of the rectangle to draw the option in
- *
- * Draws a radio button indicator in the given rectangle on @window with
- * the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_option() instead.
- */
-void
-gtk_draw_option (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_option != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_option (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_tab:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: the type of shadow to draw
- * @x: x origin of the rectangle to draw the tab in
- * @y: y origin of the rectangle to draw the tab in
- * @width: the width of the rectangle to draw the tab in
- * @height: the height of the rectangle to draw the tab in
- *
- * Draws an option menu tab (i.e. the up and down pointing arrows)
- * in the given rectangle on @window using the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_tab() instead.
- */
-void
-gtk_draw_tab (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_tab != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_tab (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_shadow_gap:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @x: x origin of the rectangle
- * @y: y origin of the rectangle
- * @width: width of the rectangle
- * @height: width of the rectangle
- * @gap_side: side in which to leave the gap
- * @gap_x: starting position of the gap
- * @gap_width: width of the gap
- *
- * Draws a shadow around the given rectangle in @window
- * using the given style and state and shadow type, leaving a
- * gap in one side.
- *
- * Deprecated: 2.0: Use gtk_paint_shadow_gap() instead.
-*/
-void
-gtk_draw_shadow_gap (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side,
- gint gap_x,
- gint gap_width)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_shadow_gap != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_shadow_gap (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height, gap_side, gap_x, gap_width);
-}
-
-/**
- * gtk_draw_box_gap:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @x: x origin of the rectangle
- * @y: y origin of the rectangle
- * @width: width of the rectangle
- * @height: width of the rectangle
- * @gap_side: side in which to leave the gap
- * @gap_x: starting position of the gap
- * @gap_width: width of the gap
- *
- * Draws a box in @window using the given style and state and shadow type,
- * leaving a gap in one side.
- *
- * Deprecated: 2.0: Use gtk_paint_box_gap() instead.
- */
-void
-gtk_draw_box_gap (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side,
- gint gap_x,
- gint gap_width)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_box_gap != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_box_gap (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height, gap_side, gap_x, gap_width);
-}
-
-/**
- * gtk_draw_extension:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @x: x origin of the extension
- * @y: y origin of the extension
- * @width: width of the extension
- * @height: width of the extension
- * @gap_side: the side on to which the extension is attached
- *
- * Draws an extension, i.e. a notebook tab.
- *
- * Deprecated: 2.0: Use gtk_paint_extension() instead.
- **/
-void
-gtk_draw_extension (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_extension != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_extension (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height, gap_side);
-}
-
-/**
- * gtk_draw_focus:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @x: the x origin of the rectangle around which to draw a focus indicator
- * @y: the y origin of the rectangle around which to draw a focus indicator
- * @width: the width of the rectangle around which to draw a focus indicator
- * @height: the height of the rectangle around which to draw a focus indicator
- *
- * Draws a focus indicator around the given rectangle on @window using the
- * given style.
- *
- * Deprecated: 2.0: Use gtk_paint_focus() instead.
- */
-void
-gtk_draw_focus (GtkStyle *style,
- GdkWindow *window,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_focus != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_focus (style, window, GTK_STATE_NORMAL, NULL, NULL, NULL, x, y, width, height);
-}
-
-/**
- * gtk_draw_slider:
- * @style: a #GtkStyle
- @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: a shadow
- * @x: the x origin of the rectangle in which to draw a slider
- * @y: the y origin of the rectangle in which to draw a slider
- * @width: the width of the rectangle in which to draw a slider
- * @height: the height of the rectangle in which to draw a slider
- * @orientation: the orientation to be used
- *
- * Draws a slider in the given rectangle on @window using the
- * given style and orientation.
- */
-void
-gtk_draw_slider (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkOrientation orientation)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_slider != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_slider (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height, orientation);
-}
-
-/**
- * gtk_draw_handle:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @shadow_type: type of shadow to draw
- * @x: x origin of the handle
- * @y: y origin of the handle
- * @width: with of the handle
- * @height: height of the handle
- * @orientation: the orientation of the handle
- *
- * Draws a handle as used in #GtkHandleBox and #GtkPaned.
- *
- * Deprecated: 2.0: Use gtk_paint_handle() instead.
- **/
-void
-gtk_draw_handle (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkOrientation orientation)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_handle != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_handle (style, window, state_type, shadow_type, NULL, NULL, NULL, x, y, width, height, orientation);
-}
-
-/**
- * gtk_draw_expander:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @x: the x position to draw the expander at
- * @y: the y position to draw the expander at
- * @expander_style: the style to draw the expander in
- *
- * Draws an expander as used in #GtkTreeView.
- *
- * Deprecated: 2.0: Use gtk_paint_expander() instead.
- **/
-void
-gtk_draw_expander (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x,
- gint y,
- GtkExpanderStyle expander_style)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_expander != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_expander (style, window, state_type,
- NULL, NULL, NULL,
- x, y, expander_style);
-}
-
-/**
- * gtk_draw_layout:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @use_text: whether to use the text or foreground
- * graphics context of @style
- * @x: x origin
- * @y: y origin
- * @layout: the layout to draw
- *
- * Draws a layout on @window using the given parameters.
- */
-void
-gtk_draw_layout (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gboolean use_text,
- gint x,
- gint y,
- PangoLayout *layout)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_layout != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_layout (style, window, state_type, use_text,
- NULL, NULL, NULL,
- x, y, layout);
-}
-
-/**
- * gtk_draw_resize_grip:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @edge: the edge in which to draw the resize grip
- * @x: the x origin of the rectangle in which to draw the resize grip
- * @y: the y origin of the rectangle in which to draw the resize grip
- * @width: the width of the rectangle in which to draw the resize grip
- * @height: the height of the rectangle in which to draw the resize grip
- *
- * Draws a resize grip in the given rectangle on @window using the given
- * parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_resize_grip() instead.
- */
-void
-gtk_draw_resize_grip (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GdkWindowEdge edge,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_resize_grip != NULL);
-
- GTK_STYLE_GET_CLASS (style)->draw_resize_grip (style, window, state_type,
- NULL, NULL, NULL,
- edge,
- x, y, width, height);
-}
-
-
-/**
* gtk_style_set_background:
* @style: a #GtkStyle
* @window: a #GdkWindow
@@ -3467,12 +2769,6 @@ option_menu_get_props (GtkWidget *widget,
{
GtkRequisition *tmp_size = NULL;
GtkBorder *tmp_spacing = NULL;
-
- if (GTK_IS_OPTION_MENU (widget))
- gtk_widget_style_get (widget,
- "indicator-size", &tmp_size,
- "indicator-spacing", &tmp_spacing,
- NULL);
if (tmp_size)
{
@@ -6131,43 +5427,6 @@ gtk_paint_diamond (GtkStyle *style,
}
/**
- * gtk_paint_string:
- * @style: a #GtkStyle
- * @window: a #GdkWindow
- * @state_type: a state
- * @area: (allow-none): clip rectangle, or %NULL if the
- * output should not be clipped
- * @widget: (allow-none): the widget
- * @detail: (allow-none): a style detail
- * @x: x origin
- * @y: y origin
- * @string: the string to draw
- *
- * Draws a text string on @window with the given parameters.
- *
- * Deprecated: 2.0: Use gtk_paint_layout() instead.
- */
-void
-gtk_paint_string (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- const GdkRectangle *area,
- GtkWidget *widget,
- const gchar *detail,
- gint x,
- gint y,
- const gchar *string)
-{
- g_return_if_fail (GTK_IS_STYLE (style));
- g_return_if_fail (GTK_STYLE_GET_CLASS (style)->draw_string != NULL);
- g_return_if_fail (style->depth == gdk_drawable_get_depth (window));
-
- GTK_STYLE_GET_CLASS (style)->draw_string (style, window, state_type,
- (GdkRectangle *) area, widget, detail,
- x, y, string);
-}
-
-/**
* gtk_paint_box:
* @style: a #GtkStyle
* @window: a #GdkWindow
@@ -6894,62 +6153,6 @@ gtk_style_get_font_internal (GtkStyle *style)
return style->private_font;
}
-/**
- * gtk_style_get_font:
- * @style: a #GtkStyle
- *
- * Gets the #GdkFont to use for the given style. This is
- * meant only as a replacement for direct access to @style->font
- * and should not be used in new code. New code should
- * use @style->font_desc instead.
- *
- * Return value: the #GdkFont for the style. This font is owned
- * by the style; if you want to keep around a copy, you must
- * call gdk_font_ref().
- **/
-GdkFont *
-gtk_style_get_font (GtkStyle *style)
-{
- g_return_val_if_fail (GTK_IS_STYLE (style), NULL);
-
- return gtk_style_get_font_internal (style);
-}
-
-/**
- * gtk_style_set_font:
- * @style: a #GtkStyle.
- * @font: (allow-none): a #GdkFont, or %NULL to use the #GdkFont corresponding
- * to style->font_desc.
- *
- * Sets the #GdkFont to use for a given style. This is
- * meant only as a replacement for direct access to style->font
- * and should not be used in new code. New code should
- * use style->font_desc instead.
- **/
-void
-gtk_style_set_font (GtkStyle *style,
- GdkFont *font)
-{
- GdkFont *old_font;
-
- g_return_if_fail (GTK_IS_STYLE (style));
-
- old_font = style->private_font;
-
- style->private_font = font;
- if (font)
- gdk_font_ref (font);
-
- if (old_font)
- gdk_font_unref (old_font);
-
- if (style->private_font_desc)
- {
- pango_font_description_free (style->private_font_desc);
- style->private_font_desc = NULL;
- }
-}
-
typedef struct _CursorInfo CursorInfo;
struct _CursorInfo
diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h
index 75dc109ec9..141cbcc379 100644
--- a/gtk/gtkstyle.h
+++ b/gtk/gtkstyle.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -443,16 +443,6 @@ GtkStyle* gtk_style_copy (GtkStyle *style);
GtkStyle* gtk_style_attach (GtkStyle *style,
GdkWindow *window) G_GNUC_WARN_UNUSED_RESULT;
void gtk_style_detach (GtkStyle *style);
-
-#ifndef GTK_DISABLE_DEPRECATED
-GtkStyle* gtk_style_ref (GtkStyle *style);
-void gtk_style_unref (GtkStyle *style);
-
-GdkFont * gtk_style_get_font (GtkStyle *style);
-void gtk_style_set_font (GtkStyle *style,
- GdkFont *font);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_style_set_background (GtkStyle *style,
GdkWindow *window,
GtkStateType state_type);
@@ -480,170 +470,6 @@ GdkPixbuf* gtk_style_render_icon (GtkStyle *style,
GtkWidget *widget,
const gchar *detail);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_draw_hline (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x1,
- gint x2,
- gint y);
-void gtk_draw_vline (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint y1_,
- gint y2_,
- gint x);
-void gtk_draw_shadow (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_polygon (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GdkPoint *points,
- gint npoints,
- gboolean fill);
-void gtk_draw_arrow (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GtkArrowType arrow_type,
- gboolean fill,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_diamond (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_box (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_flat_box (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_check (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_option (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_tab (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_shadow_gap (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side,
- gint gap_x,
- gint gap_width);
-void gtk_draw_box_gap (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side,
- gint gap_x,
- gint gap_width);
-void gtk_draw_extension (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkPositionType gap_side);
-void gtk_draw_focus (GtkStyle *style,
- GdkWindow *window,
- gint x,
- gint y,
- gint width,
- gint height);
-void gtk_draw_slider (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkOrientation orientation);
-void gtk_draw_handle (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- gint x,
- gint y,
- gint width,
- gint height,
- GtkOrientation orientation);
-void gtk_draw_expander (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x,
- gint y,
- GtkExpanderStyle expander_style);
-void gtk_draw_layout (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gboolean use_text,
- gint x,
- gint y,
- PangoLayout *layout);
-void gtk_draw_resize_grip (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GdkWindowEdge edge,
- gint x,
- gint y,
- gint width,
- gint height);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_paint_hline (GtkStyle *style,
GdkWindow *window,
GtkStateType state_type,
@@ -909,26 +735,6 @@ void _gtk_style_shade (const GdkColor *a,
GdkColor *b,
gdouble k);
-/* deprecated */
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_style_apply_default_pixmap(s,gw,st,a,x,y,w,h) gtk_style_apply_default_background (s,gw,1,st,a,x,y,w,h)
-void gtk_draw_string (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- gint x,
- gint y,
- const gchar *string);
-void gtk_paint_string (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- const GdkRectangle *area,
- GtkWidget *widget,
- const gchar *detail,
- gint x,
- gint y,
- const gchar *string);
-#endif /* GTK_DISABLE_DEPRECATED */
-
void gtk_draw_insertion_cursor (GtkWidget *widget,
GdkDrawable *drawable,
const GdkRectangle *area,
diff --git a/gtk/gtktable.h b/gtk/gtktable.h
index 9b3ebf9dd3..f993d7e8f1 100644
--- a/gtk/gtktable.h
+++ b/gtk/gtktable.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktearoffmenuitem.h b/gtk/gtktearoffmenuitem.h
index a30b0ec462..3fa32a613c 100644
--- a/gtk/gtktearoffmenuitem.h
+++ b/gtk/gtktearoffmenuitem.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktext.c b/gtk/gtktext.c
deleted file mode 100644
index 5535d5a3b8..0000000000
--- a/gtk/gtktext.c
+++ /dev/null
@@ -1,5461 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <ctype.h>
-#include <string.h>
-
-#undef GDK_DISABLE_DEPRECATED
-
-#include "gdk/gdkkeysyms.h"
-#include "gdk/gdki18n.h"
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkselection.h"
-#include "gtksignal.h"
-#include "gtkstyle.h"
-#define GTK_ENABLE_BROKEN
-#include "gtktext.h"
-#include "line-wrap.xbm"
-#include "line-arrow.xbm"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-
-#define INITIAL_BUFFER_SIZE 1024
-#define INITIAL_LINE_CACHE_SIZE 256
-#define MIN_GAP_SIZE 256
-#define LINE_DELIM '\n'
-#define MIN_TEXT_WIDTH_LINES 20
-#define MIN_TEXT_HEIGHT_LINES 10
-#define TEXT_BORDER_ROOM 1
-#define LINE_WRAP_ROOM 8 /* The bitmaps are 6 wide. */
-#define DEFAULT_TAB_STOP_WIDTH 4
-#define SCROLL_PIXELS 5
-#define KEY_SCROLL_PIXELS 10
-#define SCROLL_TIME 100
-#define FREEZE_LENGTH 1024
-/* Freeze text when inserting or deleting more than this many characters */
-
-#define SET_PROPERTY_MARK(m, p, o) do { \
- (m)->property = (p); \
- (m)->offset = (o); \
- } while (0)
-#define MARK_CURRENT_PROPERTY(mark) ((TextProperty*)(mark)->property->data)
-#define MARK_NEXT_PROPERTY(mark) ((TextProperty*)(mark)->property->next->data)
-#define MARK_PREV_PROPERTY(mark) ((TextProperty*)((mark)->property->prev ? \
- (mark)->property->prev->data \
- : NULL))
-#define MARK_PREV_LIST_PTR(mark) ((mark)->property->prev)
-#define MARK_LIST_PTR(mark) ((mark)->property)
-#define MARK_NEXT_LIST_PTR(mark) ((mark)->property->next)
-#define MARK_OFFSET(mark) ((mark)->offset)
-#define MARK_PROPERTY_LENGTH(mark) (MARK_CURRENT_PROPERTY(mark)->length)
-
-
-#define MARK_CURRENT_FONT(text, mark) \
- ((MARK_CURRENT_PROPERTY(mark)->flags & PROPERTY_FONT) ? \
- MARK_CURRENT_PROPERTY(mark)->font->gdk_font : \
- gtk_style_get_font (GTK_WIDGET (text)->style))
-#define MARK_CURRENT_FORE(text, mark) \
- ((MARK_CURRENT_PROPERTY(mark)->flags & PROPERTY_FOREGROUND) ? \
- &MARK_CURRENT_PROPERTY(mark)->fore_color : \
- &((GtkWidget *)text)->style->text[((GtkWidget *)text)->state])
-#define MARK_CURRENT_BACK(text, mark) \
- ((MARK_CURRENT_PROPERTY(mark)->flags & PROPERTY_BACKGROUND) ? \
- &MARK_CURRENT_PROPERTY(mark)->back_color : \
- &((GtkWidget *)text)->style->base[((GtkWidget *)text)->state])
-#define MARK_CURRENT_TEXT_FONT(text, mark) \
- ((MARK_CURRENT_PROPERTY(mark)->flags & PROPERTY_FONT) ? \
- MARK_CURRENT_PROPERTY(mark)->font : \
- text->current_font)
-
-#define TEXT_LENGTH(t) ((t)->text_end - (t)->gap_size)
-#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
-#define LINE_HEIGHT(l) ((l).font_ascent + (l).font_descent)
-#define LINE_CONTAINS(l, i) ((l).start.index <= (i) && (l).end.index >= (i))
-#define LINE_STARTS_AT(l, i) ((l).start.index == (i))
-#define LINE_START_PIXEL(l) ((l).tab_cont.pixel_offset)
-#define LAST_INDEX(t, m) ((m).index == TEXT_LENGTH(t))
-#define CACHE_DATA(c) (*(LineParams*)(c)->data)
-
-enum {
- PROP_0,
- PROP_HADJUSTMENT,
- PROP_VADJUSTMENT,
- PROP_LINE_WRAP,
- PROP_WORD_WRAP
-};
-
-typedef struct _TextProperty TextProperty;
-typedef struct _TabStopMark TabStopMark;
-typedef struct _PrevTabCont PrevTabCont;
-typedef struct _FetchLinesData FetchLinesData;
-typedef struct _LineParams LineParams;
-typedef struct _SetVerticalScrollData SetVerticalScrollData;
-
-typedef gint (*LineIteratorFunction) (GtkText* text, LineParams* lp, void* data);
-
-typedef enum
-{
- FetchLinesPixels,
- FetchLinesCount
-} FLType;
-
-struct _SetVerticalScrollData {
- gint pixel_height;
- gint last_didnt_wrap;
- gint last_line_start;
- GtkPropertyMark mark;
-};
-
-struct _GtkTextFont
-{
- /* The actual font. */
- GdkFont *gdk_font;
- guint ref_count;
-
- gint16 char_widths[256];
-};
-
-typedef enum {
- PROPERTY_FONT = 1 << 0,
- PROPERTY_FOREGROUND = 1 << 1,
- PROPERTY_BACKGROUND = 1 << 2
-} TextPropertyFlags;
-
-struct _TextProperty
-{
- /* Font. */
- GtkTextFont* font;
-
- /* Background Color. */
- GdkColor back_color;
-
- /* Foreground Color. */
- GdkColor fore_color;
-
- /* Show which properties are set */
- TextPropertyFlags flags;
-
- /* Length of this property. */
- guint length;
-};
-
-struct _TabStopMark
-{
- GList* tab_stops; /* Index into list containing the next tab position. If
- * NULL, using default widths. */
- gint to_next_tab;
-};
-
-struct _PrevTabCont
-{
- guint pixel_offset;
- TabStopMark tab_start;
-};
-
-struct _FetchLinesData
-{
- GList* new_lines;
- FLType fl_type;
- gint data;
- gint data_max;
-};
-
-struct _LineParams
-{
- guint font_ascent;
- guint font_descent;
- guint pixel_width;
- guint displayable_chars;
- guint wraps : 1;
-
- PrevTabCont tab_cont;
- PrevTabCont tab_cont_next;
-
- GtkPropertyMark start;
- GtkPropertyMark end;
-};
-
-
-static void gtk_text_class_init (GtkTextClass *klass);
-static void gtk_text_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_text_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_text_editable_init (GtkEditableClass *iface);
-static void gtk_text_init (GtkText *text);
-static void gtk_text_destroy (GtkObject *object);
-static void gtk_text_finalize (GObject *object);
-static void gtk_text_realize (GtkWidget *widget);
-static void gtk_text_unrealize (GtkWidget *widget);
-static void gtk_text_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static void gtk_text_state_changed (GtkWidget *widget,
- GtkStateType previous_state);
-static void gtk_text_draw_focus (GtkWidget *widget);
-static void gtk_text_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_text_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_text_adjustment (GtkAdjustment *adjustment,
- GtkText *text);
-static void gtk_text_insert_text (GtkEditable *editable,
- const gchar *new_text,
- gint new_text_length,
- gint *position);
-static void gtk_text_delete_text (GtkEditable *editable,
- gint start_pos,
- gint end_pos);
-static void gtk_text_update_text (GtkOldEditable *old_editable,
- gint start_pos,
- gint end_pos);
-static gchar *gtk_text_get_chars (GtkOldEditable *old_editable,
- gint start,
- gint end);
-static void gtk_text_set_selection (GtkOldEditable *old_editable,
- gint start,
- gint end);
-static void gtk_text_real_set_editable (GtkOldEditable *old_editable,
- gboolean is_editable);
-
-static void gtk_text_adjustment_destroyed (GtkAdjustment *adjustment,
- GtkText *text);
-
-/* Event handlers */
-static gint gtk_text_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static gint gtk_text_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_text_button_release (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_text_motion_notify (GtkWidget *widget,
- GdkEventMotion *event);
-static gint gtk_text_key_press (GtkWidget *widget,
- GdkEventKey *event);
-
-static void move_gap (GtkText* text, guint index);
-static void make_forward_space (GtkText* text, guint len);
-
-/* Property management */
-static GtkTextFont* get_text_font (GdkFont* gfont);
-static void text_font_unref (GtkTextFont *text_font);
-
-static void insert_text_property (GtkText* text, GdkFont* font,
- const GdkColor *fore, const GdkColor* back, guint len);
-static TextProperty* new_text_property (GtkText *text, GdkFont* font,
- const GdkColor* fore, const GdkColor* back, guint length);
-static void destroy_text_property (TextProperty *prop);
-static void init_properties (GtkText *text);
-static void realize_property (GtkText *text, TextProperty *prop);
-static void realize_properties (GtkText *text);
-static void unrealize_property (GtkText *text, TextProperty *prop);
-static void unrealize_properties (GtkText *text);
-
-static void delete_text_property (GtkText* text, guint len);
-
-static guint pixel_height_of (GtkText* text, GList* cache_line);
-
-/* Property Movement and Size Computations */
-static void advance_mark (GtkPropertyMark* mark);
-static void decrement_mark (GtkPropertyMark* mark);
-static void advance_mark_n (GtkPropertyMark* mark, gint n);
-static void decrement_mark_n (GtkPropertyMark* mark, gint n);
-static void move_mark_n (GtkPropertyMark* mark, gint n);
-static GtkPropertyMark find_mark (GtkText* text, guint mark_position);
-static GtkPropertyMark find_mark_near (GtkText* text, guint mark_position, const GtkPropertyMark* near);
-static void find_line_containing_point (GtkText* text, guint point,
- gboolean scroll);
-
-/* Display */
-static void compute_lines_pixels (GtkText* text, guint char_count,
- guint *lines, guint *pixels);
-
-static gint total_line_height (GtkText* text,
- GList* line,
- gint line_count);
-static LineParams find_line_params (GtkText* text,
- const GtkPropertyMark *mark,
- const PrevTabCont *tab_cont,
- PrevTabCont *next_cont);
-static void recompute_geometry (GtkText* text);
-static void insert_expose (GtkText* text, guint old_pixels, gint nchars, guint new_line_count);
-static void delete_expose (GtkText* text,
- guint nchars,
- guint old_lines,
- guint old_pixels);
-static GdkGC *create_bg_gc (GtkText *text);
-static void clear_area (GtkText *text, GdkRectangle *area);
-static void draw_line (GtkText* text,
- gint pixel_height,
- LineParams* lp);
-static void draw_line_wrap (GtkText* text,
- guint height);
-static void draw_cursor (GtkText* text, gint absolute);
-static void undraw_cursor (GtkText* text, gint absolute);
-static gint drawn_cursor_min (GtkText* text);
-static gint drawn_cursor_max (GtkText* text);
-static void expose_text (GtkText* text, GdkRectangle *area, gboolean cursor);
-
-/* Search and Placement. */
-static void find_cursor (GtkText* text,
- gboolean scroll);
-static void find_cursor_at_line (GtkText* text,
- const LineParams* start_line,
- gint pixel_height);
-static void find_mouse_cursor (GtkText* text, gint x, gint y);
-
-/* Scrolling. */
-static void adjust_adj (GtkText* text, GtkAdjustment* adj);
-static void scroll_up (GtkText* text, gint diff);
-static void scroll_down (GtkText* text, gint diff);
-static void scroll_int (GtkText* text, gint diff);
-
-static void process_exposes (GtkText *text);
-
-/* Cache Management. */
-static void free_cache (GtkText* text);
-static GList* remove_cache_line (GtkText* text, GList* list);
-
-/* Key Motion. */
-static void move_cursor_buffer_ver (GtkText *text, int dir);
-static void move_cursor_page_ver (GtkText *text, int dir);
-static void move_cursor_ver (GtkText *text, int count);
-static void move_cursor_hor (GtkText *text, int count);
-
-/* Binding actions */
-static void gtk_text_move_cursor (GtkOldEditable *old_editable,
- gint x,
- gint y);
-static void gtk_text_move_word (GtkOldEditable *old_editable,
- gint n);
-static void gtk_text_move_page (GtkOldEditable *old_editable,
- gint x,
- gint y);
-static void gtk_text_move_to_row (GtkOldEditable *old_editable,
- gint row);
-static void gtk_text_move_to_column (GtkOldEditable *old_editable,
- gint row);
-static void gtk_text_kill_char (GtkOldEditable *old_editable,
- gint direction);
-static void gtk_text_kill_word (GtkOldEditable *old_editable,
- gint direction);
-static void gtk_text_kill_line (GtkOldEditable *old_editable,
- gint direction);
-
-/* To be removed */
-static void gtk_text_move_forward_character (GtkText *text);
-static void gtk_text_move_backward_character (GtkText *text);
-static void gtk_text_move_forward_word (GtkText *text);
-static void gtk_text_move_backward_word (GtkText *text);
-static void gtk_text_move_beginning_of_line (GtkText *text);
-static void gtk_text_move_end_of_line (GtkText *text);
-static void gtk_text_move_next_line (GtkText *text);
-static void gtk_text_move_previous_line (GtkText *text);
-
-static void gtk_text_delete_forward_character (GtkText *text);
-static void gtk_text_delete_backward_character (GtkText *text);
-static void gtk_text_delete_forward_word (GtkText *text);
-static void gtk_text_delete_backward_word (GtkText *text);
-static void gtk_text_delete_line (GtkText *text);
-static void gtk_text_delete_to_line_end (GtkText *text);
-static void gtk_text_select_word (GtkText *text,
- guint32 time);
-static void gtk_text_select_line (GtkText *text,
- guint32 time);
-
-static void gtk_text_set_position (GtkOldEditable *old_editable,
- gint position);
-
-/* #define DEBUG_GTK_TEXT */
-
-#if defined(DEBUG_GTK_TEXT) && defined(__GNUC__)
-/* Debugging utilities. */
-static void gtk_text_assert_mark (GtkText *text,
- GtkPropertyMark *mark,
- GtkPropertyMark *before,
- GtkPropertyMark *after,
- const gchar *msg,
- const gchar *where,
- gint line);
-
-static void gtk_text_assert (GtkText *text,
- const gchar *msg,
- gint line);
-static void gtk_text_show_cache_line (GtkText *text, GList *cache,
- const char* what, const char* func, gint line);
-static void gtk_text_show_cache (GtkText *text, const char* func, gint line);
-static void gtk_text_show_adj (GtkText *text,
- GtkAdjustment *adj,
- const char* what,
- const char* func,
- gint line);
-static void gtk_text_show_props (GtkText* test,
- const char* func,
- int line);
-
-#define TDEBUG(args) g_message args
-#define TEXT_ASSERT(text) gtk_text_assert (text,__PRETTY_FUNCTION__,__LINE__)
-#define TEXT_ASSERT_MARK(text,mark,msg) gtk_text_assert_mark (text,mark, \
- __PRETTY_FUNCTION__,msg,__LINE__)
-#define TEXT_SHOW(text) gtk_text_show_cache (text, __PRETTY_FUNCTION__,__LINE__)
-#define TEXT_SHOW_LINE(text,line,msg) gtk_text_show_cache_line (text,line,msg,\
- __PRETTY_FUNCTION__,__LINE__)
-#define TEXT_SHOW_ADJ(text,adj,msg) gtk_text_show_adj (text,adj,msg, \
- __PRETTY_FUNCTION__,__LINE__)
-#else
-#define TDEBUG(args)
-#define TEXT_ASSERT(text)
-#define TEXT_ASSERT_MARK(text,mark,msg)
-#define TEXT_SHOW(text)
-#define TEXT_SHOW_LINE(text,line,msg)
-#define TEXT_SHOW_ADJ(text,adj,msg)
-#endif
-
-static GtkWidgetClass *parent_class = NULL;
-
-/**********************************************************************/
-/* Widget Crap */
-/**********************************************************************/
-
-GtkType
-gtk_text_get_type (void)
-{
- static GtkType text_type = 0;
-
- if (!text_type)
- {
- static const GtkTypeInfo text_info =
- {
- "GtkText",
- sizeof (GtkText),
- sizeof (GtkTextClass),
- (GtkClassInitFunc) gtk_text_class_init,
- (GtkObjectInitFunc) gtk_text_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- const GInterfaceInfo editable_info =
- {
- (GInterfaceInitFunc) gtk_text_editable_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
-
- I_("GtkText");
- text_type = gtk_type_unique (GTK_TYPE_OLD_EDITABLE, &text_info);
- g_type_add_interface_static (text_type,
- GTK_TYPE_EDITABLE,
- &editable_info);
- }
-
- return text_type;
-}
-
-static void
-gtk_text_class_init (GtkTextClass *class)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkOldEditableClass *old_editable_class;
-
- gobject_class = G_OBJECT_CLASS (class);
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- old_editable_class = (GtkOldEditableClass*) class;
- parent_class = gtk_type_class (GTK_TYPE_OLD_EDITABLE);
-
- gobject_class->finalize = gtk_text_finalize;
- gobject_class->set_property = gtk_text_set_property;
- gobject_class->get_property = gtk_text_get_property;
-
- object_class->destroy = gtk_text_destroy;
-
- widget_class->realize = gtk_text_realize;
- widget_class->unrealize = gtk_text_unrealize;
- widget_class->style_set = gtk_text_style_set;
- widget_class->state_changed = gtk_text_state_changed;
- widget_class->size_request = gtk_text_size_request;
- widget_class->size_allocate = gtk_text_size_allocate;
- widget_class->expose_event = gtk_text_expose;
- widget_class->button_press_event = gtk_text_button_press;
- widget_class->button_release_event = gtk_text_button_release;
- widget_class->motion_notify_event = gtk_text_motion_notify;
- widget_class->key_press_event = gtk_text_key_press;
-
- old_editable_class->set_editable = gtk_text_real_set_editable;
-
- old_editable_class->move_cursor = gtk_text_move_cursor;
- old_editable_class->move_word = gtk_text_move_word;
- old_editable_class->move_page = gtk_text_move_page;
- old_editable_class->move_to_row = gtk_text_move_to_row;
- old_editable_class->move_to_column = gtk_text_move_to_column;
-
- old_editable_class->kill_char = gtk_text_kill_char;
- old_editable_class->kill_word = gtk_text_kill_word;
- old_editable_class->kill_line = gtk_text_kill_line;
-
- old_editable_class->update_text = gtk_text_update_text;
- old_editable_class->get_chars = gtk_text_get_chars;
- old_editable_class->set_selection = gtk_text_set_selection;
- old_editable_class->set_position = gtk_text_set_position;
-
- class->set_scroll_adjustments = gtk_text_set_adjustments;
-
- g_object_class_install_property (gobject_class,
- PROP_HADJUSTMENT,
- g_param_spec_object ("hadjustment",
- P_("Horizontal Adjustment"),
- P_("Horizontal adjustment for the text widget"),
- GTK_TYPE_ADJUSTMENT,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_VADJUSTMENT,
- g_param_spec_object ("vadjustment",
- P_("Vertical Adjustment"),
- P_("Vertical adjustment for the text widget"),
- GTK_TYPE_ADJUSTMENT,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_LINE_WRAP,
- g_param_spec_boolean ("line-wrap",
- P_("Line Wrap"),
- P_("Whether lines are wrapped at widget edges"),
- TRUE,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_WORD_WRAP,
- g_param_spec_boolean ("word-wrap",
- P_("Word Wrap"),
- P_("Whether words are wrapped at widget edges"),
- FALSE,
- GTK_PARAM_READWRITE));
-
- widget_class->set_scroll_adjustments_signal =
- gtk_signal_new (I_("set-scroll-adjustments"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTextClass, set_scroll_adjustments),
- _gtk_marshal_VOID__OBJECT_OBJECT,
- GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-}
-
-static void
-gtk_text_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkText *text;
-
- text = GTK_TEXT (object);
-
- switch (prop_id)
- {
- case PROP_HADJUSTMENT:
- gtk_text_set_adjustments (text,
- g_value_get_object (value),
- text->vadj);
- break;
- case PROP_VADJUSTMENT:
- gtk_text_set_adjustments (text,
- text->hadj,
- g_value_get_object (value));
- break;
- case PROP_LINE_WRAP:
- gtk_text_set_line_wrap (text, g_value_get_boolean (value));
- break;
- case PROP_WORD_WRAP:
- gtk_text_set_word_wrap (text, g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_text_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkText *text;
-
- text = GTK_TEXT (object);
-
- switch (prop_id)
- {
- case PROP_HADJUSTMENT:
- g_value_set_object (value, text->hadj);
- break;
- case PROP_VADJUSTMENT:
- g_value_set_object (value, text->vadj);
- break;
- case PROP_LINE_WRAP:
- g_value_set_boolean (value, text->line_wrap);
- break;
- case PROP_WORD_WRAP:
- g_value_set_boolean (value, text->word_wrap);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_text_editable_init (GtkEditableClass *iface)
-{
- iface->insert_text = gtk_text_insert_text;
- iface->delete_text = gtk_text_delete_text;
-}
-
-static void
-gtk_text_init (GtkText *text)
-{
- gtk_widget_set_can_focus (GTK_WIDGET (text), TRUE);
-
- text->text_area = NULL;
- text->hadj = NULL;
- text->vadj = NULL;
- text->gc = NULL;
- text->bg_gc = NULL;
- text->line_wrap_bitmap = NULL;
- text->line_arrow_bitmap = NULL;
-
- text->use_wchar = FALSE;
- text->text.ch = g_new (guchar, INITIAL_BUFFER_SIZE);
- text->text_len = INITIAL_BUFFER_SIZE;
-
- text->scratch_buffer.ch = NULL;
- text->scratch_buffer_len = 0;
-
- text->freeze_count = 0;
-
- text->default_tab_width = 4;
- text->tab_stops = NULL;
-
- text->tab_stops = g_list_prepend (text->tab_stops, (void*)8);
- text->tab_stops = g_list_prepend (text->tab_stops, (void*)8);
-
- text->line_start_cache = NULL;
- text->first_cut_pixels = 0;
-
- text->line_wrap = TRUE;
- text->word_wrap = FALSE;
-
- text->timer = 0;
- text->button = 0;
-
- text->current_font = NULL;
-
- init_properties (text);
-
- GTK_OLD_EDITABLE (text)->editable = FALSE;
-
- gtk_text_set_adjustments (text, NULL, NULL);
- gtk_editable_set_position (GTK_EDITABLE (text), 0);
-}
-
-GtkWidget*
-gtk_text_new (GtkAdjustment *hadj,
- GtkAdjustment *vadj)
-{
- GtkWidget *text;
-
- if (hadj)
- g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadj), NULL);
- if (vadj)
- g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadj), NULL);
-
- text = g_object_new (GTK_TYPE_TEXT,
- "hadjustment", hadj,
- "vadjustment", vadj,
- NULL);
-
- return text;
-}
-
-void
-gtk_text_set_word_wrap (GtkText *text,
- gboolean word_wrap)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
-
- text->word_wrap = (word_wrap != FALSE);
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- {
- recompute_geometry (text);
- gtk_widget_queue_draw (GTK_WIDGET (text));
- }
-
- g_object_notify (G_OBJECT (text), "word-wrap");
-}
-
-void
-gtk_text_set_line_wrap (GtkText *text,
- gboolean line_wrap)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
-
- text->line_wrap = (line_wrap != FALSE);
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- {
- recompute_geometry (text);
- gtk_widget_queue_draw (GTK_WIDGET (text));
- }
-
- g_object_notify (G_OBJECT (text), "line-wrap");
-}
-
-void
-gtk_text_set_editable (GtkText *text,
- gboolean is_editable)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
-
- gtk_editable_set_editable (GTK_EDITABLE (text), is_editable);
-}
-
-static void
-gtk_text_real_set_editable (GtkOldEditable *old_editable,
- gboolean is_editable)
-{
- GtkText *text;
-
- g_return_if_fail (GTK_IS_TEXT (old_editable));
-
- text = GTK_TEXT (old_editable);
-
- old_editable->editable = (is_editable != FALSE);
-
- if (is_editable)
- draw_cursor (text, TRUE);
- else
- undraw_cursor (text, TRUE);
-}
-
-void
-gtk_text_set_adjustments (GtkText *text,
- GtkAdjustment *hadj,
- GtkAdjustment *vadj)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
- if (hadj)
- g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
- else
- hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
- if (vadj)
- g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
- else
- vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
-
- if (text->hadj && (text->hadj != hadj))
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (text->hadj), text);
- g_object_unref (text->hadj);
- }
-
- if (text->vadj && (text->vadj != vadj))
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (text->vadj), text);
- g_object_unref (text->vadj);
- }
-
- g_object_freeze_notify (G_OBJECT (text));
- if (text->hadj != hadj)
- {
- text->hadj = hadj;
- g_object_ref_sink (text->hadj);
-
- gtk_signal_connect (GTK_OBJECT (text->hadj), "changed",
- G_CALLBACK (gtk_text_adjustment),
- text);
- gtk_signal_connect (GTK_OBJECT (text->hadj), "value-changed",
- G_CALLBACK (gtk_text_adjustment),
- text);
- gtk_signal_connect (GTK_OBJECT (text->hadj), "destroy",
- G_CALLBACK (gtk_text_adjustment_destroyed),
- text);
- gtk_text_adjustment (hadj, text);
-
- g_object_notify (G_OBJECT (text), "hadjustment");
- }
-
- if (text->vadj != vadj)
- {
- text->vadj = vadj;
- g_object_ref_sink (text->vadj);
-
- gtk_signal_connect (GTK_OBJECT (text->vadj), "changed",
- G_CALLBACK (gtk_text_adjustment),
- text);
- gtk_signal_connect (GTK_OBJECT (text->vadj), "value-changed",
- G_CALLBACK (gtk_text_adjustment),
- text);
- gtk_signal_connect (GTK_OBJECT (text->vadj), "destroy",
- G_CALLBACK (gtk_text_adjustment_destroyed),
- text);
- gtk_text_adjustment (vadj, text);
-
- g_object_notify (G_OBJECT (text), "vadjustment");
- }
- g_object_thaw_notify (G_OBJECT (text));
-}
-
-void
-gtk_text_set_point (GtkText *text,
- guint index)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
- g_return_if_fail (index <= TEXT_LENGTH (text));
-
- text->point = find_mark (text, index);
-}
-
-guint
-gtk_text_get_point (GtkText *text)
-{
- g_return_val_if_fail (GTK_IS_TEXT (text), 0);
-
- return text->point.index;
-}
-
-guint
-gtk_text_get_length (GtkText *text)
-{
- g_return_val_if_fail (GTK_IS_TEXT (text), 0);
-
- return TEXT_LENGTH (text);
-}
-
-void
-gtk_text_freeze (GtkText *text)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
-
- text->freeze_count++;
-}
-
-void
-gtk_text_thaw (GtkText *text)
-{
- g_return_if_fail (GTK_IS_TEXT (text));
-
- if (text->freeze_count)
- if (!(--text->freeze_count) && gtk_widget_get_realized (GTK_WIDGET (text)))
- {
- recompute_geometry (text);
- gtk_widget_queue_draw (GTK_WIDGET (text));
- }
-}
-
-void
-gtk_text_insert (GtkText *text,
- GdkFont *font,
- const GdkColor *fore,
- const GdkColor *back,
- const char *chars,
- gint nchars)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (text);
- gboolean frozen = FALSE;
-
- gint new_line_count = 1;
- guint old_height = 0;
- guint length;
- guint i;
- gint numwcs;
-
- g_return_if_fail (GTK_IS_TEXT (text));
-
- if (nchars < 0)
- length = strlen (chars);
- else
- length = nchars;
-
- if (length == 0)
- return;
-
- if (!text->freeze_count && (length > FREEZE_LENGTH))
- {
- gtk_text_freeze (text);
- frozen = TRUE;
- }
-
- if (!text->freeze_count && (text->line_start_cache != NULL))
- {
- find_line_containing_point (text, text->point.index, TRUE);
- old_height = total_line_height (text, text->current_line, 1);
- }
-
- if ((TEXT_LENGTH (text) == 0) && (text->use_wchar == FALSE))
- {
- GtkWidget *widget = GTK_WIDGET (text);
-
- gtk_widget_ensure_style (widget);
- if ((widget->style) &&
- (gtk_style_get_font (widget->style)->type == GDK_FONT_FONTSET))
- {
- text->use_wchar = TRUE;
- g_free (text->text.ch);
- text->text.wc = g_new (GdkWChar, INITIAL_BUFFER_SIZE);
- text->text_len = INITIAL_BUFFER_SIZE;
- g_free (text->scratch_buffer.ch);
- text->scratch_buffer.wc = NULL;
- text->scratch_buffer_len = 0;
- }
- }
-
- move_gap (text, text->point.index);
- make_forward_space (text, length);
-
- if (text->use_wchar)
- {
- char *chars_nt = (char *)chars;
- if (nchars > 0)
- {
- chars_nt = g_new (char, length+1);
- memcpy (chars_nt, chars, length);
- chars_nt[length] = 0;
- }
- numwcs = gdk_mbstowcs (text->text.wc + text->gap_position, chars_nt,
- length);
- if (chars_nt != chars)
- g_free(chars_nt);
- if (numwcs < 0)
- numwcs = 0;
- }
- else
- {
- numwcs = length;
- memcpy(text->text.ch + text->gap_position, chars, length);
- }
-
- if (!text->freeze_count && (text->line_start_cache != NULL))
- {
- if (text->use_wchar)
- {
- for (i=0; i<numwcs; i++)
- if (text->text.wc[text->gap_position + i] == '\n')
- new_line_count++;
- }
- else
- {
- for (i=0; i<numwcs; i++)
- if (text->text.ch[text->gap_position + i] == '\n')
- new_line_count++;
- }
- }
-
- if (numwcs > 0)
- {
- insert_text_property (text, font, fore, back, numwcs);
-
- text->gap_size -= numwcs;
- text->gap_position += numwcs;
-
- if (text->point.index < text->first_line_start_index)
- text->first_line_start_index += numwcs;
- if (text->point.index < old_editable->selection_start_pos)
- old_editable->selection_start_pos += numwcs;
- if (text->point.index < old_editable->selection_end_pos)
- old_editable->selection_end_pos += numwcs;
- /* We'll reset the cursor later anyways if we aren't frozen */
- if (text->point.index < text->cursor_mark.index)
- text->cursor_mark.index += numwcs;
-
- advance_mark_n (&text->point, numwcs);
-
- if (!text->freeze_count && (text->line_start_cache != NULL))
- insert_expose (text, old_height, numwcs, new_line_count);
- }
-
- if (frozen)
- gtk_text_thaw (text);
-}
-
-gboolean
-gtk_text_backward_delete (GtkText *text,
- guint nchars)
-{
- g_return_val_if_fail (GTK_IS_TEXT (text), FALSE);
-
- if (nchars > text->point.index || nchars <= 0)
- return FALSE;
-
- gtk_text_set_point (text, text->point.index - nchars);
-
- return gtk_text_forward_delete (text, nchars);
-}
-
-gboolean
-gtk_text_forward_delete (GtkText *text,
- guint nchars)
-{
- guint old_lines = 0, old_height = 0;
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (text);
- gboolean frozen = FALSE;
-
- g_return_val_if_fail (GTK_IS_TEXT (text), FALSE);
-
- if (text->point.index + nchars > TEXT_LENGTH (text) || nchars <= 0)
- return FALSE;
-
- if (!text->freeze_count && nchars > FREEZE_LENGTH)
- {
- gtk_text_freeze (text);
- frozen = TRUE;
- }
-
- if (!text->freeze_count && text->line_start_cache != NULL)
- {
- /* We need to undraw the cursor here, since we may later
- * delete the cursor's property
- */
- undraw_cursor (text, FALSE);
- find_line_containing_point (text, text->point.index, TRUE);
- compute_lines_pixels (text, nchars, &old_lines, &old_height);
- }
-
- /* FIXME, or resizing after deleting will be odd */
- if (text->point.index < text->first_line_start_index)
- {
- if (text->point.index + nchars >= text->first_line_start_index)
- {
- text->first_line_start_index = text->point.index;
- while ((text->first_line_start_index > 0) &&
- (GTK_TEXT_INDEX (text, text->first_line_start_index - 1)
- != LINE_DELIM))
- text->first_line_start_index -= 1;
-
- }
- else
- text->first_line_start_index -= nchars;
- }
-
- if (text->point.index < old_editable->selection_start_pos)
- old_editable->selection_start_pos -=
- MIN(nchars, old_editable->selection_start_pos - text->point.index);
- if (text->point.index < old_editable->selection_end_pos)
- old_editable->selection_end_pos -=
- MIN(nchars, old_editable->selection_end_pos - text->point.index);
- /* We'll reset the cursor later anyways if we aren't frozen */
- if (text->point.index < text->cursor_mark.index)
- move_mark_n (&text->cursor_mark,
- -MIN(nchars, text->cursor_mark.index - text->point.index));
-
- move_gap (text, text->point.index);
-
- text->gap_size += nchars;
-
- delete_text_property (text, nchars);
-
- if (!text->freeze_count && (text->line_start_cache != NULL))
- {
- delete_expose (text, nchars, old_lines, old_height);
- draw_cursor (text, FALSE);
- }
-
- if (frozen)
- gtk_text_thaw (text);
-
- return TRUE;
-}
-
-static void
-gtk_text_set_position (GtkOldEditable *old_editable,
- gint position)
-{
- GtkText *text = (GtkText *) old_editable;
-
- if (position < 0)
- position = gtk_text_get_length (text);
-
- undraw_cursor (text, FALSE);
- text->cursor_mark = find_mark (text, position);
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
- gtk_editable_select_region (GTK_EDITABLE (old_editable), 0, 0);
-}
-
-static gchar *
-gtk_text_get_chars (GtkOldEditable *old_editable,
- gint start_pos,
- gint end_pos)
-{
- GtkText *text;
-
- gchar *retval;
-
- g_return_val_if_fail (GTK_IS_TEXT (old_editable), NULL);
- text = GTK_TEXT (old_editable);
-
- if (end_pos < 0)
- end_pos = TEXT_LENGTH (text);
-
- if ((start_pos < 0) ||
- (end_pos > TEXT_LENGTH (text)) ||
- (end_pos < start_pos))
- return NULL;
-
- move_gap (text, TEXT_LENGTH (text));
- make_forward_space (text, 1);
-
- if (text->use_wchar)
- {
- GdkWChar ch;
- ch = text->text.wc[end_pos];
- text->text.wc[end_pos] = 0;
- retval = gdk_wcstombs (text->text.wc + start_pos);
- text->text.wc[end_pos] = ch;
- }
- else
- {
- guchar ch;
- ch = text->text.ch[end_pos];
- text->text.ch[end_pos] = 0;
- retval = g_strdup ((gchar *)(text->text.ch + start_pos));
- text->text.ch[end_pos] = ch;
- }
-
- return retval;
-}
-
-
-static void
-gtk_text_destroy (GtkObject *object)
-{
- GtkText *text = GTK_TEXT (object);
-
- if (text->hadj)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (text->hadj), text);
- g_object_unref (text->hadj);
- text->hadj = NULL;
- }
- if (text->vadj)
- {
- gtk_signal_disconnect_by_data (GTK_OBJECT (text->vadj), text);
- g_object_unref (text->vadj);
- text->vadj = NULL;
- }
-
- if (text->timer)
- {
- g_source_remove (text->timer);
- text->timer = 0;
- }
-
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
-}
-
-static void
-gtk_text_finalize (GObject *object)
-{
- GtkText *text = GTK_TEXT (object);
- GList *tmp_list;
-
- /* Clean up the internal structures */
- if (text->use_wchar)
- g_free (text->text.wc);
- else
- g_free (text->text.ch);
-
- tmp_list = text->text_properties;
- while (tmp_list)
- {
- destroy_text_property (tmp_list->data);
- tmp_list = tmp_list->next;
- }
-
- if (text->current_font)
- text_font_unref (text->current_font);
-
- g_list_free (text->text_properties);
-
- if (text->use_wchar)
- {
- g_free (text->scratch_buffer.wc);
- }
- else
- {
- g_free (text->scratch_buffer.ch);
- }
-
- g_list_free (text->tab_stops);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gtk_text_realize (GtkWidget *widget)
-{
- GtkText *text = GTK_TEXT (widget);
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
- GdkWindowAttr attributes;
- gint attributes_mask;
-
- gtk_widget_set_realized (widget, TRUE);
-
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget);
- attributes.event_mask |= (GDK_EXPOSURE_MASK |
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_BUTTON_MOTION_MASK |
- GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK |
- GDK_KEY_PRESS_MASK);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, text);
-
- attributes.x = (widget->style->xthickness + TEXT_BORDER_ROOM);
- attributes.y = (widget->style->ythickness + TEXT_BORDER_ROOM);
- attributes.width = MAX (1, (gint)widget->allocation.width - (gint)attributes.x * 2);
- attributes.height = MAX (1, (gint)widget->allocation.height - (gint)attributes.y * 2);
-
- attributes.cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), GDK_XTERM);
- attributes_mask |= GDK_WA_CURSOR;
-
- text->text_area = gdk_window_new (widget->window, &attributes, attributes_mask);
- gdk_window_set_user_data (text->text_area, text);
-
- gdk_cursor_unref (attributes.cursor); /* The X server will keep it around as long as necessary */
-
- widget->style = gtk_style_attach (widget->style, widget->window);
-
- /* Can't call gtk_style_set_background here because it's handled specially */
- gdk_window_set_background (widget->window, &widget->style->base[gtk_widget_get_state (widget)]);
- gdk_window_set_background (text->text_area, &widget->style->base[gtk_widget_get_state (widget)]);
-
- if (widget->style->bg_pixmap[GTK_STATE_NORMAL])
- text->bg_gc = create_bg_gc (text);
-
- text->line_wrap_bitmap = gdk_bitmap_create_from_data (text->text_area,
- (gchar*) line_wrap_bits,
- line_wrap_width,
- line_wrap_height);
-
- text->line_arrow_bitmap = gdk_bitmap_create_from_data (text->text_area,
- (gchar*) line_arrow_bits,
- line_arrow_width,
- line_arrow_height);
-
- text->gc = gdk_gc_new (text->text_area);
- gdk_gc_set_exposures (text->gc, TRUE);
- gdk_gc_set_foreground (text->gc, &widget->style->text[GTK_STATE_NORMAL]);
-
- realize_properties (text);
- gdk_window_show (text->text_area);
- init_properties (text);
-
- if (old_editable->selection_start_pos != old_editable->selection_end_pos)
- gtk_old_editable_claim_selection (old_editable, TRUE, GDK_CURRENT_TIME);
-
- recompute_geometry (text);
-}
-
-static void
-gtk_text_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- GtkText *text = GTK_TEXT (widget);
-
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_set_background (widget->window, &widget->style->base[gtk_widget_get_state (widget)]);
- gdk_window_set_background (text->text_area, &widget->style->base[gtk_widget_get_state (widget)]);
-
- if (text->bg_gc)
- {
- g_object_unref (text->bg_gc);
- text->bg_gc = NULL;
- }
-
- if (widget->style->bg_pixmap[GTK_STATE_NORMAL])
- text->bg_gc = create_bg_gc (text);
-
- recompute_geometry (text);
- }
-
- if (text->current_font)
- text_font_unref (text->current_font);
- text->current_font = get_text_font (gtk_style_get_font (widget->style));
-}
-
-static void
-gtk_text_state_changed (GtkWidget *widget,
- GtkStateType previous_state)
-{
- GtkText *text = GTK_TEXT (widget);
-
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_set_background (widget->window, &widget->style->base[gtk_widget_get_state (widget)]);
- gdk_window_set_background (text->text_area, &widget->style->base[gtk_widget_get_state (widget)]);
- }
-}
-
-static void
-gtk_text_unrealize (GtkWidget *widget)
-{
- GtkText *text = GTK_TEXT (widget);
-
- gdk_window_set_user_data (text->text_area, NULL);
- gdk_window_destroy (text->text_area);
- text->text_area = NULL;
-
- g_object_unref (text->gc);
- text->gc = NULL;
-
- if (text->bg_gc)
- {
- g_object_unref (text->bg_gc);
- text->bg_gc = NULL;
- }
-
- g_object_unref (text->line_wrap_bitmap);
- g_object_unref (text->line_arrow_bitmap);
-
- unrealize_properties (text);
-
- free_cache (text);
-
- GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
-}
-
-static void
-clear_focus_area (GtkText *text, gint area_x, gint area_y, gint area_width, gint area_height)
-{
- GtkWidget *widget = GTK_WIDGET (text);
- GdkGC *gc;
-
- gint ythick = TEXT_BORDER_ROOM + widget->style->ythickness;
- gint xthick = TEXT_BORDER_ROOM + widget->style->xthickness;
-
- gint width, height;
-
- if (area_width == 0 || area_height == 0)
- return;
-
- if (widget->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- gdk_drawable_get_size (widget->style->bg_pixmap[GTK_STATE_NORMAL], &width, &height);
-
- gdk_gc_set_ts_origin (text->bg_gc,
- (- text->first_onscreen_hor_pixel + xthick) % width,
- (- text->first_onscreen_ver_pixel + ythick) % height);
-
- gc = text->bg_gc;
- }
- else
- gc = widget->style->base_gc[widget->state];
-
- gdk_draw_rectangle (GTK_WIDGET (text)->window, gc, TRUE,
- area_x, area_y, area_width, area_height);
-}
-
-static void
-gtk_text_draw_focus (GtkWidget *widget)
-{
- GtkText *text;
- gint width, height;
- gint x, y;
-
- g_return_if_fail (GTK_IS_TEXT (widget));
-
- text = GTK_TEXT (widget);
-
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- gint ythick = widget->style->ythickness;
- gint xthick = widget->style->xthickness;
- gint xextra = TEXT_BORDER_ROOM;
- gint yextra = TEXT_BORDER_ROOM;
-
- TDEBUG (("in gtk_text_draw_focus\n"));
-
- x = 0;
- y = 0;
- width = widget->allocation.width;
- height = widget->allocation.height;
-
- if (gtk_widget_has_focus (widget))
- {
- x += 1;
- y += 1;
- width -= 2;
- height -= 2;
- xextra -= 1;
- yextra -= 1;
-
- gtk_paint_focus (widget->style, widget->window, gtk_widget_get_state (widget),
- NULL, widget, "text",
- 0, 0,
- widget->allocation.width,
- widget->allocation.height);
- }
-
- gtk_paint_shadow (widget->style, widget->window,
- GTK_STATE_NORMAL, GTK_SHADOW_IN,
- NULL, widget, "text",
- x, y, width, height);
-
- x += xthick;
- y += ythick;
- width -= 2 * xthick;
- height -= 2 * ythick;
-
- /* top rect */
- clear_focus_area (text, x, y, width, yextra);
- /* left rect */
- clear_focus_area (text, x, y + yextra,
- xextra, y + height - 2 * yextra);
- /* right rect */
- clear_focus_area (text, x + width - xextra, y + yextra,
- xextra, height - 2 * ythick);
- /* bottom rect */
- clear_focus_area (text, x, x + height - yextra, width, yextra);
- }
- else
- {
- TDEBUG (("in gtk_text_draw_focus (undrawable !!!)\n"));
- }
-}
-
-static void
-gtk_text_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GdkFont *font;
- gint xthickness;
- gint ythickness;
- gint char_height;
- gint char_width;
-
- xthickness = widget->style->xthickness + TEXT_BORDER_ROOM;
- ythickness = widget->style->ythickness + TEXT_BORDER_ROOM;
-
- font = gtk_style_get_font (widget->style);
-
- char_height = MIN_TEXT_HEIGHT_LINES * (font->ascent +
- font->descent);
-
- char_width = MIN_TEXT_WIDTH_LINES * (gdk_text_width (font,
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
- 26)
- / 26);
-
- requisition->width = char_width + xthickness * 2;
- requisition->height = char_height + ythickness * 2;
-}
-
-static void
-gtk_text_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkText *text = GTK_TEXT (widget);
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- {
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- gdk_window_move_resize (text->text_area,
- widget->style->xthickness + TEXT_BORDER_ROOM,
- widget->style->ythickness + TEXT_BORDER_ROOM,
- MAX (1, (gint)widget->allocation.width - (gint)(widget->style->xthickness +
- (gint)TEXT_BORDER_ROOM) * 2),
- MAX (1, (gint)widget->allocation.height - (gint)(widget->style->ythickness +
- (gint)TEXT_BORDER_ROOM) * 2));
-
- recompute_geometry (text);
- }
-}
-
-static gint
-gtk_text_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- if (event->window == GTK_TEXT (widget)->text_area)
- {
- TDEBUG (("in gtk_text_expose (expose)\n"));
- expose_text (GTK_TEXT (widget), &event->area, TRUE);
- }
- else if (event->count == 0)
- {
- TDEBUG (("in gtk_text_expose (focus)\n"));
- gtk_text_draw_focus (widget);
- }
-
- return FALSE;
-}
-
-static gint
-gtk_text_scroll_timeout (gpointer data)
-{
- GtkText *text;
- gint x, y;
- GdkModifierType mask;
-
- text = GTK_TEXT (data);
-
- text->timer = 0;
- gdk_window_get_pointer (text->text_area, &x, &y, &mask);
-
- if (mask & (GDK_BUTTON1_MASK | GDK_BUTTON3_MASK))
- {
- GdkEvent *event = gdk_event_new (GDK_MOTION_NOTIFY);
-
- event->motion.is_hint = 0;
- event->motion.x = x;
- event->motion.y = y;
- event->motion.state = mask;
-
- gtk_text_motion_notify (GTK_WIDGET (text), (GdkEventMotion *)event);
-
- gdk_event_free (event);
- }
-
- return FALSE;
-}
-
-static gint
-gtk_text_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkText *text = GTK_TEXT (widget);
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
-
- if (text->button && (event->button != text->button))
- return FALSE;
-
- text->button = event->button;
-
- if (!gtk_widget_has_focus (widget))
- gtk_widget_grab_focus (widget);
-
- if (event->button == 1)
- {
- switch (event->type)
- {
- case GDK_BUTTON_PRESS:
- gtk_grab_add (widget);
-
- undraw_cursor (text, FALSE);
- find_mouse_cursor (text, (gint)event->x, (gint)event->y);
- draw_cursor (text, FALSE);
-
- /* Set it now, so we display things right. We'll unset it
- * later if things don't work out */
- old_editable->has_selection = TRUE;
- gtk_text_set_selection (GTK_OLD_EDITABLE (text),
- text->cursor_mark.index,
- text->cursor_mark.index);
-
- break;
-
- case GDK_2BUTTON_PRESS:
- gtk_text_select_word (text, event->time);
- break;
-
- case GDK_3BUTTON_PRESS:
- gtk_text_select_line (text, event->time);
- break;
-
- default:
- break;
- }
- }
- else if (event->type == GDK_BUTTON_PRESS)
- {
- if ((event->button == 2) && old_editable->editable)
- {
- if (old_editable->selection_start_pos == old_editable->selection_end_pos ||
- old_editable->has_selection)
- {
- undraw_cursor (text, FALSE);
- find_mouse_cursor (text, (gint)event->x, (gint)event->y);
- draw_cursor (text, FALSE);
-
- }
-
- gtk_selection_convert (widget, GDK_SELECTION_PRIMARY,
- gdk_atom_intern_static_string ("UTF8_STRING"),
- event->time);
- }
- else
- {
- GdkDisplay *display = gtk_widget_get_display (widget);
-
- gtk_grab_add (widget);
-
- undraw_cursor (text, FALSE);
- find_mouse_cursor (text, event->x, event->y);
- draw_cursor (text, FALSE);
-
- gtk_text_set_selection (GTK_OLD_EDITABLE (text),
- text->cursor_mark.index,
- text->cursor_mark.index);
-
- old_editable->has_selection = FALSE;
- if (gdk_selection_owner_get_for_display (display,
- GDK_SELECTION_PRIMARY) == widget->window)
- gtk_selection_owner_set_for_display (display,
- NULL,
- GDK_SELECTION_PRIMARY,
- event->time);
- }
- }
-
- return TRUE;
-}
-
-static gint
-gtk_text_button_release (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkText *text = GTK_TEXT (widget);
- GtkOldEditable *old_editable;
- GdkDisplay *display;
-
- gtk_grab_remove (widget);
-
- if (text->button != event->button)
- return FALSE;
-
- text->button = 0;
-
- if (text->timer)
- {
- g_source_remove (text->timer);
- text->timer = 0;
- }
-
- if (event->button == 1)
- {
- text = GTK_TEXT (widget);
- old_editable = GTK_OLD_EDITABLE (widget);
- display = gtk_widget_get_display (widget);
-
- gtk_grab_remove (widget);
-
- old_editable->has_selection = FALSE;
- if (old_editable->selection_start_pos != old_editable->selection_end_pos)
- {
- if (gtk_selection_owner_set_for_display (display,
- widget,
- GDK_SELECTION_PRIMARY,
- event->time))
- old_editable->has_selection = TRUE;
- else
- gtk_text_update_text (old_editable, old_editable->selection_start_pos,
- old_editable->selection_end_pos);
- }
- else
- {
- if (gdk_selection_owner_get_for_display (display,
- GDK_SELECTION_PRIMARY) == widget->window)
- gtk_selection_owner_set_for_display (display,
- NULL,
- GDK_SELECTION_PRIMARY,
- event->time);
- }
- }
- else if (event->button == 3)
- {
- gtk_grab_remove (widget);
- }
-
- undraw_cursor (text, FALSE);
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
-
- return TRUE;
-}
-
-static gint
-gtk_text_motion_notify (GtkWidget *widget,
- GdkEventMotion *event)
-{
- GtkText *text = GTK_TEXT (widget);
- gint x, y;
- gint height;
- GdkModifierType mask;
-
- x = event->x;
- y = event->y;
- mask = event->state;
- if (event->is_hint || (text->text_area != event->window))
- {
- gdk_window_get_pointer (text->text_area, &x, &y, &mask);
- }
-
- if ((text->button == 0) ||
- !(mask & (GDK_BUTTON1_MASK | GDK_BUTTON3_MASK)))
- return FALSE;
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- if ((y < 0) || (y > height))
- {
- if (text->timer == 0)
- {
- text->timer = gdk_threads_add_timeout (SCROLL_TIME,
- gtk_text_scroll_timeout,
- text);
-
- if (y < 0)
- scroll_int (text, y/2);
- else
- scroll_int (text, (y - height)/2);
- }
- else
- return FALSE;
- }
-
- undraw_cursor (GTK_TEXT (widget), FALSE);
- find_mouse_cursor (GTK_TEXT (widget), x, y);
- draw_cursor (GTK_TEXT (widget), FALSE);
-
- gtk_text_set_selection (GTK_OLD_EDITABLE (text),
- GTK_OLD_EDITABLE (text)->selection_start_pos,
- text->cursor_mark.index);
-
- return FALSE;
-}
-
-static void
-gtk_text_insert_text (GtkEditable *editable,
- const gchar *new_text,
- gint new_text_length,
- gint *position)
-{
- GtkText *text = GTK_TEXT (editable);
- GdkFont *font;
- GdkColor *fore, *back;
-
- TextProperty *property;
-
- gtk_text_set_point (text, *position);
-
- property = MARK_CURRENT_PROPERTY (&text->point);
- font = property->flags & PROPERTY_FONT ? property->font->gdk_font : NULL;
- fore = property->flags & PROPERTY_FOREGROUND ? &property->fore_color : NULL;
- back = property->flags & PROPERTY_BACKGROUND ? &property->back_color : NULL;
-
- gtk_text_insert (text, font, fore, back, new_text, new_text_length);
-
- *position = text->point.index;
-}
-
-static void
-gtk_text_delete_text (GtkEditable *editable,
- gint start_pos,
- gint end_pos)
-{
- GtkText *text = GTK_TEXT (editable);
-
- g_return_if_fail (start_pos >= 0);
-
- gtk_text_set_point (text, start_pos);
- if (end_pos < 0)
- end_pos = TEXT_LENGTH (text);
-
- if (end_pos > start_pos)
- gtk_text_forward_delete (text, end_pos - start_pos);
-}
-
-static gint
-gtk_text_key_press (GtkWidget *widget,
- GdkEventKey *event)
-{
- GtkText *text = GTK_TEXT (widget);
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
- gchar key;
- gint return_val;
- gint position;
-
- key = event->keyval;
- return_val = TRUE;
-
- if ((GTK_OLD_EDITABLE(text)->editable == FALSE))
- {
- switch (event->keyval)
- {
- case GDK_Home:
- case GDK_KP_Home:
- if (event->state & GDK_CONTROL_MASK)
- scroll_int (text, -text->vadj->value);
- else
- return_val = FALSE;
- break;
- case GDK_End:
- case GDK_KP_End:
- if (event->state & GDK_CONTROL_MASK)
- scroll_int (text, +text->vadj->upper);
- else
- return_val = FALSE;
- break;
- case GDK_KP_Page_Up:
- case GDK_Page_Up: scroll_int (text, -text->vadj->page_increment); break;
- case GDK_KP_Page_Down:
- case GDK_Page_Down: scroll_int (text, +text->vadj->page_increment); break;
- case GDK_KP_Up:
- case GDK_Up: scroll_int (text, -KEY_SCROLL_PIXELS); break;
- case GDK_KP_Down:
- case GDK_Down: scroll_int (text, +KEY_SCROLL_PIXELS); break;
- case GDK_Return:
- case GDK_ISO_Enter:
- case GDK_KP_Enter:
- if (event->state & GDK_CONTROL_MASK)
- gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
- else
- return_val = FALSE;
- break;
- default:
- return_val = FALSE;
- break;
- }
- }
- else
- {
- gint extend_selection;
- gint extend_start;
- guint initial_pos = old_editable->current_pos;
-
- text->point = find_mark (text, text->cursor_mark.index);
-
- extend_selection = event->state & GDK_SHIFT_MASK;
- extend_start = FALSE;
-
- if (extend_selection)
- {
- old_editable->has_selection = TRUE;
-
- if (old_editable->selection_start_pos == old_editable->selection_end_pos)
- {
- old_editable->selection_start_pos = text->point.index;
- old_editable->selection_end_pos = text->point.index;
- }
-
- extend_start = (text->point.index == old_editable->selection_start_pos);
- }
-
- switch (event->keyval)
- {
- case GDK_KP_Home:
- case GDK_Home:
- if (event->state & GDK_CONTROL_MASK)
- move_cursor_buffer_ver (text, -1);
- else
- gtk_text_move_beginning_of_line (text);
- break;
- case GDK_KP_End:
- case GDK_End:
- if (event->state & GDK_CONTROL_MASK)
- move_cursor_buffer_ver (text, +1);
- else
- gtk_text_move_end_of_line (text);
- break;
- case GDK_KP_Page_Up:
- case GDK_Page_Up: move_cursor_page_ver (text, -1); break;
- case GDK_KP_Page_Down:
- case GDK_Page_Down: move_cursor_page_ver (text, +1); break;
- /* CUA has Ctrl-Up/Ctrl-Down as paragraph up down */
- case GDK_KP_Up:
- case GDK_Up: move_cursor_ver (text, -1); break;
- case GDK_KP_Down:
- case GDK_Down: move_cursor_ver (text, +1); break;
- case GDK_KP_Left:
- case GDK_Left:
- if (event->state & GDK_CONTROL_MASK)
- gtk_text_move_backward_word (text);
- else
- move_cursor_hor (text, -1);
- break;
- case GDK_KP_Right:
- case GDK_Right:
- if (event->state & GDK_CONTROL_MASK)
- gtk_text_move_forward_word (text);
- else
- move_cursor_hor (text, +1);
- break;
-
- case GDK_BackSpace:
- if (event->state & GDK_CONTROL_MASK)
- gtk_text_delete_backward_word (text);
- else
- gtk_text_delete_backward_character (text);
- break;
- case GDK_Clear:
- gtk_text_delete_line (text);
- break;
- case GDK_KP_Insert:
- case GDK_Insert:
- if (event->state & GDK_SHIFT_MASK)
- {
- extend_selection = FALSE;
- gtk_editable_paste_clipboard (GTK_EDITABLE (old_editable));
- }
- else if (event->state & GDK_CONTROL_MASK)
- {
- gtk_editable_copy_clipboard (GTK_EDITABLE (old_editable));
- }
- else
- {
- /* gtk_toggle_insert(text) -- IMPLEMENT */
- }
- break;
- case GDK_Delete:
- case GDK_KP_Delete:
- if (event->state & GDK_CONTROL_MASK)
- gtk_text_delete_forward_word (text);
- else if (event->state & GDK_SHIFT_MASK)
- {
- extend_selection = FALSE;
- gtk_editable_cut_clipboard (GTK_EDITABLE (old_editable));
- }
- else
- gtk_text_delete_forward_character (text);
- break;
- case GDK_Tab:
- case GDK_ISO_Left_Tab:
- case GDK_KP_Tab:
- position = text->point.index;
- gtk_editable_insert_text (GTK_EDITABLE (old_editable), "\t", 1, &position);
- break;
- case GDK_KP_Enter:
- case GDK_ISO_Enter:
- case GDK_Return:
- if (event->state & GDK_CONTROL_MASK)
- gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
- else
- {
- position = text->point.index;
- gtk_editable_insert_text (GTK_EDITABLE (old_editable), "\n", 1, &position);
- }
- break;
- case GDK_Escape:
- /* Don't insert literally */
- return_val = FALSE;
- break;
-
- default:
- return_val = FALSE;
-
- if (event->state & GDK_CONTROL_MASK)
- {
- return_val = TRUE;
- if ((key >= 'A') && (key <= 'Z'))
- key -= 'A' - 'a';
-
- switch (key)
- {
- case 'a':
- gtk_text_move_beginning_of_line (text);
- break;
- case 'b':
- gtk_text_move_backward_character (text);
- break;
- case 'c':
- gtk_editable_copy_clipboard (GTK_EDITABLE (text));
- break;
- case 'd':
- gtk_text_delete_forward_character (text);
- break;
- case 'e':
- gtk_text_move_end_of_line (text);
- break;
- case 'f':
- gtk_text_move_forward_character (text);
- break;
- case 'h':
- gtk_text_delete_backward_character (text);
- break;
- case 'k':
- gtk_text_delete_to_line_end (text);
- break;
- case 'n':
- gtk_text_move_next_line (text);
- break;
- case 'p':
- gtk_text_move_previous_line (text);
- break;
- case 'u':
- gtk_text_delete_line (text);
- break;
- case 'v':
- gtk_editable_paste_clipboard (GTK_EDITABLE (text));
- break;
- case 'w':
- gtk_text_delete_backward_word (text);
- break;
- case 'x':
- gtk_editable_cut_clipboard (GTK_EDITABLE (text));
- break;
- default:
- return_val = FALSE;
- }
-
- break;
- }
- else if (event->state & GDK_MOD1_MASK)
- {
- return_val = TRUE;
- if ((key >= 'A') && (key <= 'Z'))
- key -= 'A' - 'a';
-
- switch (key)
- {
- case 'b':
- gtk_text_move_backward_word (text);
- break;
- case 'd':
- gtk_text_delete_forward_word (text);
- break;
- case 'f':
- gtk_text_move_forward_word (text);
- break;
- default:
- return_val = FALSE;
- }
-
- break;
- }
- else if (event->length > 0)
- {
- extend_selection = FALSE;
-
- gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
- position = text->point.index;
- gtk_editable_insert_text (GTK_EDITABLE (old_editable), event->string, event->length, &position);
-
- return_val = TRUE;
- }
- }
-
- if (return_val && (old_editable->current_pos != initial_pos))
- {
- if (extend_selection)
- {
- if (old_editable->current_pos < old_editable->selection_start_pos)
- gtk_text_set_selection (old_editable, old_editable->current_pos,
- old_editable->selection_end_pos);
- else if (old_editable->current_pos > old_editable->selection_end_pos)
- gtk_text_set_selection (old_editable, old_editable->selection_start_pos,
- old_editable->current_pos);
- else
- {
- if (extend_start)
- gtk_text_set_selection (old_editable, old_editable->current_pos,
- old_editable->selection_end_pos);
- else
- gtk_text_set_selection (old_editable, old_editable->selection_start_pos,
- old_editable->current_pos);
- }
- }
- else
- gtk_text_set_selection (old_editable, 0, 0);
-
- gtk_old_editable_claim_selection (old_editable,
- old_editable->selection_start_pos != old_editable->selection_end_pos,
- event->time);
- }
- }
-
- return return_val;
-}
-
-static void
-gtk_text_adjustment (GtkAdjustment *adjustment,
- GtkText *text)
-{
- g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
- g_return_if_fail (GTK_IS_TEXT (text));
-
- /* Just ignore it if we haven't been size-allocated and realized yet */
- if (text->line_start_cache == NULL)
- return;
-
- if (adjustment == text->hadj)
- {
- g_warning ("horizontal scrolling not implemented");
- }
- else
- {
- gint diff = ((gint)adjustment->value) - text->last_ver_value;
-
- if (diff != 0)
- {
- undraw_cursor (text, FALSE);
-
- if (diff > 0)
- scroll_down (text, diff);
- else /* if (diff < 0) */
- scroll_up (text, diff);
-
- draw_cursor (text, FALSE);
-
- text->last_ver_value = adjustment->value;
- }
- }
-}
-
-static void
-gtk_text_adjustment_destroyed (GtkAdjustment *adjustment,
- GtkText *text)
-{
- g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
- g_return_if_fail (GTK_IS_TEXT (text));
-
- if (adjustment == text->hadj)
- gtk_text_set_adjustments (text, NULL, text->vadj);
- if (adjustment == text->vadj)
- gtk_text_set_adjustments (text, text->hadj, NULL);
-}
-
-
-static GtkPropertyMark
-find_this_line_start_mark (GtkText* text, guint point_position, const GtkPropertyMark* near)
-{
- GtkPropertyMark mark;
-
- mark = find_mark_near (text, point_position, near);
-
- while (mark.index > 0 &&
- GTK_TEXT_INDEX (text, mark.index - 1) != LINE_DELIM)
- decrement_mark (&mark);
-
- return mark;
-}
-
-static void
-init_tab_cont (GtkText* text, PrevTabCont* tab_cont)
-{
- tab_cont->pixel_offset = 0;
- tab_cont->tab_start.tab_stops = text->tab_stops;
- tab_cont->tab_start.to_next_tab = (gintptr) text->tab_stops->data;
-
- if (!tab_cont->tab_start.to_next_tab)
- tab_cont->tab_start.to_next_tab = text->default_tab_width;
-}
-
-static void
-line_params_iterate (GtkText* text,
- const GtkPropertyMark* mark0,
- const PrevTabCont* tab_mark0,
- gint8 alloc,
- void* data,
- LineIteratorFunction iter)
- /* mark0 MUST be a real line start. if ALLOC, allocate line params
- * from a mem chunk. DATA is passed to ITER_CALL, which is called
- * for each line following MARK, iteration continues unless ITER_CALL
- * returns TRUE. */
-{
- GtkPropertyMark mark = *mark0;
- PrevTabCont tab_conts[2];
- LineParams *lp, lpbuf;
- gint tab_cont_index = 0;
-
- if (tab_mark0)
- tab_conts[0] = *tab_mark0;
- else
- init_tab_cont (text, tab_conts);
-
- for (;;)
- {
- if (alloc)
- lp = g_slice_new (LineParams);
- else
- lp = &lpbuf;
-
- *lp = find_line_params (text, &mark, tab_conts + tab_cont_index,
- tab_conts + (tab_cont_index + 1) % 2);
-
- if ((*iter) (text, lp, data))
- return;
-
- if (LAST_INDEX (text, lp->end))
- break;
-
- mark = lp->end;
- advance_mark (&mark);
- tab_cont_index = (tab_cont_index + 1) % 2;
- }
-}
-
-static gint
-fetch_lines_iterator (GtkText* text, LineParams* lp, void* data)
-{
- FetchLinesData *fldata = (FetchLinesData*) data;
-
- fldata->new_lines = g_list_prepend (fldata->new_lines, lp);
-
- switch (fldata->fl_type)
- {
- case FetchLinesCount:
- if (!text->line_wrap || !lp->wraps)
- fldata->data += 1;
-
- if (fldata->data >= fldata->data_max)
- return TRUE;
-
- break;
- case FetchLinesPixels:
-
- fldata->data += LINE_HEIGHT(*lp);
-
- if (fldata->data >= fldata->data_max)
- return TRUE;
-
- break;
- }
-
- return FALSE;
-}
-
-static GList*
-fetch_lines (GtkText* text,
- const GtkPropertyMark* mark0,
- const PrevTabCont* tab_cont0,
- FLType fl_type,
- gint data)
-{
- FetchLinesData fl_data;
-
- fl_data.new_lines = NULL;
- fl_data.data = 0;
- fl_data.data_max = data;
- fl_data.fl_type = fl_type;
-
- line_params_iterate (text, mark0, tab_cont0, TRUE, &fl_data, fetch_lines_iterator);
-
- return g_list_reverse (fl_data.new_lines);
-}
-
-static void
-fetch_lines_backward (GtkText* text)
-{
- GList *new_line_start;
- GtkPropertyMark mark;
-
- if (CACHE_DATA(text->line_start_cache).start.index == 0)
- return;
-
- mark = find_this_line_start_mark (text,
- CACHE_DATA(text->line_start_cache).start.index - 1,
- &CACHE_DATA(text->line_start_cache).start);
-
- new_line_start = fetch_lines (text, &mark, NULL, FetchLinesCount, 1);
-
- while (new_line_start->next)
- new_line_start = new_line_start->next;
-
- new_line_start->next = text->line_start_cache;
- text->line_start_cache->prev = new_line_start;
-}
-
-static void
-fetch_lines_forward (GtkText* text, gint line_count)
-{
- GtkPropertyMark mark;
- GList* line = text->line_start_cache;
-
- while(line->next)
- line = line->next;
-
- mark = CACHE_DATA(line).end;
-
- if (LAST_INDEX (text, mark))
- return;
-
- advance_mark(&mark);
-
- line->next = fetch_lines (text, &mark, &CACHE_DATA(line).tab_cont_next, FetchLinesCount, line_count);
-
- if (line->next)
- line->next->prev = line;
-}
-
-/* Compute the number of lines, and vertical pixels for n characters
- * starting from the point
- */
-static void
-compute_lines_pixels (GtkText* text, guint char_count,
- guint *lines, guint *pixels)
-{
- GList *line = text->current_line;
- gint chars_left = char_count;
-
- *lines = 0;
- *pixels = 0;
-
- /* If chars_left == 0, that means we're joining two lines in a
- * deletion, so add in the values for the next line as well
- */
- for (; line && chars_left >= 0; line = line->next)
- {
- *pixels += LINE_HEIGHT(CACHE_DATA(line));
-
- if (line == text->current_line)
- chars_left -= CACHE_DATA(line).end.index - text->point.index + 1;
- else
- chars_left -= CACHE_DATA(line).end.index - CACHE_DATA(line).start.index + 1;
-
- if (!text->line_wrap || !CACHE_DATA(line).wraps)
- *lines += 1;
- else
- if (chars_left < 0)
- chars_left = 0; /* force another loop */
-
- if (!line->next)
- fetch_lines_forward (text, 1);
- }
-}
-
-static gint
-total_line_height (GtkText* text, GList* line, gint line_count)
-{
- gint height = 0;
-
- for (; line && line_count > 0; line = line->next)
- {
- height += LINE_HEIGHT(CACHE_DATA(line));
-
- if (!text->line_wrap || !CACHE_DATA(line).wraps)
- line_count -= 1;
-
- if (!line->next)
- fetch_lines_forward (text, line_count);
- }
-
- return height;
-}
-
-static void
-swap_lines (GtkText* text, GList* old, GList* new, guint old_line_count)
-{
- if (old == text->line_start_cache)
- {
- GList* last;
-
- for (; old_line_count > 0; old_line_count -= 1)
- {
- while (text->line_start_cache &&
- text->line_wrap &&
- CACHE_DATA(text->line_start_cache).wraps)
- remove_cache_line(text, text->line_start_cache);
-
- remove_cache_line(text, text->line_start_cache);
- }
-
- last = g_list_last (new);
-
- last->next = text->line_start_cache;
-
- if (text->line_start_cache)
- text->line_start_cache->prev = last;
-
- text->line_start_cache = new;
- }
- else
- {
- GList *last;
-
- g_assert (old->prev);
-
- last = old->prev;
-
- for (; old_line_count > 0; old_line_count -= 1)
- {
- while (old && text->line_wrap && CACHE_DATA(old).wraps)
- old = remove_cache_line (text, old);
-
- old = remove_cache_line (text, old);
- }
-
- last->next = new;
- new->prev = last;
-
- last = g_list_last (new);
-
- last->next = old;
-
- if (old)
- old->prev = last;
- }
-}
-
-static void
-correct_cache_delete (GtkText* text, gint nchars, gint lines)
-{
- GList* cache = text->current_line;
- gint i;
-
- for (i = 0; cache && i < lines; i += 1, cache = cache->next)
- /* nothing */;
-
- for (; cache; cache = cache->next)
- {
- GtkPropertyMark *start = &CACHE_DATA(cache).start;
- GtkPropertyMark *end = &CACHE_DATA(cache).end;
-
- start->index -= nchars;
- end->index -= nchars;
-
- if (LAST_INDEX (text, text->point) &&
- start->index == text->point.index)
- *start = text->point;
- else if (start->property == text->point.property)
- start->offset = start->index - (text->point.index - text->point.offset);
-
- if (LAST_INDEX (text, text->point) &&
- end->index == text->point.index)
- *end = text->point;
- if (end->property == text->point.property)
- end->offset = end->index - (text->point.index - text->point.offset);
-
- /*TEXT_ASSERT_MARK(text, start, "start");*/
- /*TEXT_ASSERT_MARK(text, end, "end");*/
- }
-}
-
-static void
-delete_expose (GtkText* text, guint nchars, guint old_lines, guint old_pixels)
-{
- GtkWidget *widget = GTK_WIDGET (text);
-
- gint pixel_height;
- guint new_pixels = 0;
- GdkRectangle rect;
- GList* new_line = NULL;
- gint width, height;
-
- text->cursor_virtual_x = 0;
-
- correct_cache_delete (text, nchars, old_lines);
-
- pixel_height = pixel_height_of(text, text->current_line) -
- LINE_HEIGHT(CACHE_DATA(text->current_line));
-
- if (CACHE_DATA(text->current_line).start.index == text->point.index)
- CACHE_DATA(text->current_line).start = text->point;
-
- new_line = fetch_lines (text,
- &CACHE_DATA(text->current_line).start,
- &CACHE_DATA(text->current_line).tab_cont,
- FetchLinesCount,
- 1);
-
- swap_lines (text, text->current_line, new_line, old_lines);
-
- text->current_line = new_line;
-
- new_pixels = total_line_height (text, new_line, 1);
-
- gdk_drawable_get_size (text->text_area, &width, &height);
-
- if (old_pixels != new_pixels)
- {
- if (!widget->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- gdk_draw_drawable (text->text_area,
- text->gc,
- text->text_area,
- 0,
- pixel_height + old_pixels,
- 0,
- pixel_height + new_pixels,
- width,
- height);
- }
- text->vadj->upper += new_pixels;
- text->vadj->upper -= old_pixels;
- adjust_adj (text, text->vadj);
- }
-
- rect.x = 0;
- rect.y = pixel_height;
- rect.width = width;
- rect.height = new_pixels;
-
- expose_text (text, &rect, FALSE);
- gtk_text_draw_focus ( (GtkWidget *) text);
-
- text->cursor_mark = text->point;
-
- find_cursor (text, TRUE);
-
- if (old_pixels != new_pixels)
- {
- if (widget->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- rect.x = 0;
- rect.y = pixel_height + new_pixels;
- rect.width = width;
- rect.height = height - rect.y;
-
- expose_text (text, &rect, FALSE);
- }
- else
- process_exposes (text);
- }
-
- TEXT_ASSERT (text);
- TEXT_SHOW(text);
-}
-
-/* note, the point has already been moved forward */
-static void
-correct_cache_insert (GtkText* text, gint nchars)
-{
- GList *cache;
- GtkPropertyMark *start;
- GtkPropertyMark *end;
- gboolean was_split = FALSE;
-
- /* We need to distinguish whether the property was split in the
- * insert or not, so we check if the point (which points after
- * the insertion here), points to the same character as the
- * point before. Ugh.
- */
- if (nchars > 0)
- {
- GtkPropertyMark tmp_mark = text->point;
- move_mark_n (&tmp_mark, -1);
-
- if (tmp_mark.property != text->point.property)
- was_split = TRUE;
- }
-
- /* If we inserted a property exactly at the beginning of the
- * line, we have to correct here, or fetch_lines will
- * fetch junk.
- */
- start = &CACHE_DATA(text->current_line).start;
-
- /* Check if if we split exactly at the beginning of the line:
- * (was_split won't be set if we are inserting at the end of the text,
- * so we don't check)
- */
- if (start->offset == MARK_CURRENT_PROPERTY (start)->length)
- SET_PROPERTY_MARK (start, start->property->next, 0);
- /* Check if we inserted a property at the beginning of the text: */
- else if (was_split &&
- (start->property == text->point.property) &&
- (start->index == text->point.index - nchars))
- SET_PROPERTY_MARK (start, start->property->prev, 0);
-
- /* Now correct the offsets, and check for start or end marks that
- * are after the point, yet point to a property before the point's
- * property. This indicates that they are meant to point to the
- * second half of a property we split in insert_text_property(), so
- * we fix them up that way.
- */
- cache = text->current_line->next;
-
- for (; cache; cache = cache->next)
- {
- start = &CACHE_DATA(cache).start;
- end = &CACHE_DATA(cache).end;
-
- if (LAST_INDEX (text, text->point) &&
- start->index == text->point.index)
- *start = text->point;
- else if (start->index >= text->point.index - nchars)
- {
- if (!was_split && start->property == text->point.property)
- move_mark_n(start, nchars);
- else
- {
- if (start->property->next &&
- (start->property->next->next == text->point.property))
- {
- g_assert (start->offset >= MARK_CURRENT_PROPERTY (start)->length);
- start->offset -= MARK_CURRENT_PROPERTY (start)->length;
- start->property = text->point.property;
- }
- start->index += nchars;
- }
- }
-
- if (LAST_INDEX (text, text->point) &&
- end->index == text->point.index)
- *end = text->point;
- if (end->index >= text->point.index - nchars)
- {
- if (!was_split && end->property == text->point.property)
- move_mark_n(end, nchars);
- else
- {
- if (end->property->next &&
- (end->property->next->next == text->point.property))
- {
- g_assert (end->offset >= MARK_CURRENT_PROPERTY (end)->length);
- end->offset -= MARK_CURRENT_PROPERTY (end)->length;
- end->property = text->point.property;
- }
- end->index += nchars;
- }
- }
-
- /*TEXT_ASSERT_MARK(text, start, "start");*/
- /*TEXT_ASSERT_MARK(text, end, "end");*/
- }
-}
-
-
-static void
-insert_expose (GtkText* text, guint old_pixels, gint nchars,
- guint new_line_count)
-{
- GtkWidget *widget = GTK_WIDGET (text);
-
- gint pixel_height;
- guint new_pixels = 0;
- GdkRectangle rect;
- GList* new_lines = NULL;
- gint width, height;
-
- text->cursor_virtual_x = 0;
-
- undraw_cursor (text, FALSE);
-
- correct_cache_insert (text, nchars);
-
- TEXT_SHOW_ADJ (text, text->vadj, "vadj");
-
- pixel_height = pixel_height_of(text, text->current_line) -
- LINE_HEIGHT(CACHE_DATA(text->current_line));
-
- new_lines = fetch_lines (text,
- &CACHE_DATA(text->current_line).start,
- &CACHE_DATA(text->current_line).tab_cont,
- FetchLinesCount,
- new_line_count);
-
- swap_lines (text, text->current_line, new_lines, 1);
-
- text->current_line = new_lines;
-
- new_pixels = total_line_height (text, new_lines, new_line_count);
-
- gdk_drawable_get_size (text->text_area, &width, &height);
-
- if (old_pixels != new_pixels)
- {
- if (!widget->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- gdk_draw_drawable (text->text_area,
- text->gc,
- text->text_area,
- 0,
- pixel_height + old_pixels,
- 0,
- pixel_height + new_pixels,
- width,
- height + (old_pixels - new_pixels) - pixel_height);
-
- }
- text->vadj->upper += new_pixels;
- text->vadj->upper -= old_pixels;
- adjust_adj (text, text->vadj);
- }
-
- rect.x = 0;
- rect.y = pixel_height;
- rect.width = width;
- rect.height = new_pixels;
-
- expose_text (text, &rect, FALSE);
- gtk_text_draw_focus ( (GtkWidget *) text);
-
- text->cursor_mark = text->point;
-
- find_cursor (text, TRUE);
-
- draw_cursor (text, FALSE);
-
- if (old_pixels != new_pixels)
- {
- if (widget->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- rect.x = 0;
- rect.y = pixel_height + new_pixels;
- rect.width = width;
- rect.height = height - rect.y;
-
- expose_text (text, &rect, FALSE);
- }
- else
- process_exposes (text);
- }
-
- TEXT_SHOW_ADJ (text, text->vadj, "vadj");
- TEXT_ASSERT (text);
- TEXT_SHOW(text);
-}
-
-/* Text property functions */
-
-static guint
-font_hash (gconstpointer font)
-{
- return gdk_font_id ((const GdkFont*) font);
-}
-
-static GHashTable *font_cache_table = NULL;
-
-static GtkTextFont*
-get_text_font (GdkFont* gfont)
-{
- GtkTextFont* tf;
- gint i;
-
- if (!font_cache_table)
- font_cache_table = g_hash_table_new (font_hash, (GEqualFunc) gdk_font_equal);
-
- tf = g_hash_table_lookup (font_cache_table, gfont);
-
- if (tf)
- {
- tf->ref_count++;
- return tf;
- }
-
- tf = g_new (GtkTextFont, 1);
- tf->ref_count = 1;
-
- tf->gdk_font = gfont;
- gdk_font_ref (gfont);
-
- for(i = 0; i < 256; i += 1)
- tf->char_widths[i] = gdk_char_width (gfont, (char)i);
-
- g_hash_table_insert (font_cache_table, gfont, tf);
-
- return tf;
-}
-
-static void
-text_font_unref (GtkTextFont *text_font)
-{
- text_font->ref_count--;
- if (text_font->ref_count == 0)
- {
- g_hash_table_remove (font_cache_table, text_font->gdk_font);
- gdk_font_unref (text_font->gdk_font);
- g_free (text_font);
- }
-}
-
-static gint
-text_properties_equal (TextProperty* prop, GdkFont* font, const GdkColor *fore, const GdkColor *back)
-{
- if (prop->flags & PROPERTY_FONT)
- {
- gboolean retval;
- GtkTextFont *text_font;
-
- if (!font)
- return FALSE;
-
- text_font = get_text_font (font);
-
- retval = (prop->font == text_font);
- text_font_unref (text_font);
-
- if (!retval)
- return FALSE;
- }
- else
- if (font != NULL)
- return FALSE;
-
- if (prop->flags & PROPERTY_FOREGROUND)
- {
- if (!fore || !gdk_color_equal (&prop->fore_color, fore))
- return FALSE;
- }
- else
- if (fore != NULL)
- return FALSE;
-
- if (prop->flags & PROPERTY_BACKGROUND)
- {
- if (!back || !gdk_color_equal (&prop->back_color, back))
- return FALSE;
- }
- else
- if (back != NULL)
- return FALSE;
-
- return TRUE;
-}
-
-static void
-realize_property (GtkText *text, TextProperty *prop)
-{
- GdkColormap *colormap = gtk_widget_get_colormap (GTK_WIDGET (text));
-
- if (prop->flags & PROPERTY_FOREGROUND)
- gdk_colormap_alloc_color (colormap, &prop->fore_color, FALSE, FALSE);
-
- if (prop->flags & PROPERTY_BACKGROUND)
- gdk_colormap_alloc_color (colormap, &prop->back_color, FALSE, FALSE);
-}
-
-static void
-realize_properties (GtkText *text)
-{
- GList *tmp_list = text->text_properties;
-
- while (tmp_list)
- {
- realize_property (text, tmp_list->data);
-
- tmp_list = tmp_list->next;
- }
-}
-
-static void
-unrealize_property (GtkText *text, TextProperty *prop)
-{
- GdkColormap *colormap = gtk_widget_get_colormap (GTK_WIDGET (text));
-
- if (prop->flags & PROPERTY_FOREGROUND)
- gdk_colormap_free_colors (colormap, &prop->fore_color, 1);
-
- if (prop->flags & PROPERTY_BACKGROUND)
- gdk_colormap_free_colors (colormap, &prop->back_color, 1);
-}
-
-static void
-unrealize_properties (GtkText *text)
-{
- GList *tmp_list = text->text_properties;
-
- while (tmp_list)
- {
- unrealize_property (text, tmp_list->data);
-
- tmp_list = tmp_list->next;
- }
-}
-
-static TextProperty*
-new_text_property (GtkText *text, GdkFont *font, const GdkColor* fore,
- const GdkColor* back, guint length)
-{
- TextProperty *prop;
-
- prop = g_slice_new (TextProperty);
-
- prop->flags = 0;
- if (font)
- {
- prop->flags |= PROPERTY_FONT;
- prop->font = get_text_font (font);
- }
- else
- prop->font = NULL;
-
- if (fore)
- {
- prop->flags |= PROPERTY_FOREGROUND;
- prop->fore_color = *fore;
- }
-
- if (back)
- {
- prop->flags |= PROPERTY_BACKGROUND;
- prop->back_color = *back;
- }
-
- prop->length = length;
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- realize_property (text, prop);
-
- return prop;
-}
-
-static void
-destroy_text_property (TextProperty *prop)
-{
- if (prop->font)
- text_font_unref (prop->font);
-
- g_slice_free (TextProperty, prop);
-}
-
-/* Flop the memory between the point and the gap around like a
- * dead fish. */
-static void
-move_gap (GtkText* text, guint index)
-{
- if (text->gap_position < index)
- {
- gint diff = index - text->gap_position;
-
- if (text->use_wchar)
- g_memmove (text->text.wc + text->gap_position,
- text->text.wc + text->gap_position + text->gap_size,
- diff*sizeof (GdkWChar));
- else
- g_memmove (text->text.ch + text->gap_position,
- text->text.ch + text->gap_position + text->gap_size,
- diff);
-
- text->gap_position = index;
- }
- else if (text->gap_position > index)
- {
- gint diff = text->gap_position - index;
-
- if (text->use_wchar)
- g_memmove (text->text.wc + index + text->gap_size,
- text->text.wc + index,
- diff*sizeof (GdkWChar));
- else
- g_memmove (text->text.ch + index + text->gap_size,
- text->text.ch + index,
- diff);
-
- text->gap_position = index;
- }
-}
-
-/* Increase the gap size. */
-static void
-make_forward_space (GtkText* text, guint len)
-{
- if (text->gap_size < len)
- {
- guint sum = MAX(2*len, MIN_GAP_SIZE) + text->text_end;
-
- if (sum >= text->text_len)
- {
- guint i = 1;
-
- while (i <= sum) i <<= 1;
-
- if (text->use_wchar)
- text->text.wc = (GdkWChar *)g_realloc(text->text.wc,
- i*sizeof(GdkWChar));
- else
- text->text.ch = (guchar *)g_realloc(text->text.ch, i);
- text->text_len = i;
- }
-
- if (text->use_wchar)
- g_memmove (text->text.wc + text->gap_position + text->gap_size + 2*len,
- text->text.wc + text->gap_position + text->gap_size,
- (text->text_end - (text->gap_position + text->gap_size))
- *sizeof(GdkWChar));
- else
- g_memmove (text->text.ch + text->gap_position + text->gap_size + 2*len,
- text->text.ch + text->gap_position + text->gap_size,
- text->text_end - (text->gap_position + text->gap_size));
-
- text->text_end += len*2;
- text->gap_size += len*2;
- }
-}
-
-/* Inserts into the text property list a list element that guarantees
- * that for len characters following the point, text has the correct
- * property. does not move point. adjusts text_properties_point and
- * text_properties_point_offset relative to the current value of
- * point. */
-static void
-insert_text_property (GtkText* text, GdkFont* font,
- const GdkColor *fore, const GdkColor* back, guint len)
-{
- GtkPropertyMark *mark = &text->point;
- TextProperty* forward_prop = MARK_CURRENT_PROPERTY(mark);
- TextProperty* backward_prop = MARK_PREV_PROPERTY(mark);
-
- if (MARK_OFFSET(mark) == 0)
- {
- /* Point is on the boundary of two properties.
- * If it is the same as either, grow, else insert
- * a new one. */
-
- if (text_properties_equal(forward_prop, font, fore, back))
- {
- /* Grow the property in front of us. */
-
- MARK_PROPERTY_LENGTH(mark) += len;
- }
- else if (backward_prop &&
- text_properties_equal(backward_prop, font, fore, back))
- {
- /* Grow property behind us, point property and offset
- * change. */
-
- SET_PROPERTY_MARK (&text->point,
- MARK_PREV_LIST_PTR (mark),
- backward_prop->length);
-
- backward_prop->length += len;
- }
- else if ((MARK_NEXT_LIST_PTR(mark) == NULL) &&
- (forward_prop->length == 1))
- {
- /* Next property just has last position, take it over */
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- unrealize_property (text, forward_prop);
-
- forward_prop->flags = 0;
- if (font)
- {
- forward_prop->flags |= PROPERTY_FONT;
- forward_prop->font = get_text_font (font);
- }
- else
- forward_prop->font = NULL;
-
- if (fore)
- {
- forward_prop->flags |= PROPERTY_FOREGROUND;
- forward_prop->fore_color = *fore;
- }
- if (back)
- {
- forward_prop->flags |= PROPERTY_BACKGROUND;
- forward_prop->back_color = *back;
- }
- forward_prop->length += len;
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- realize_property (text, forward_prop);
- }
- else
- {
- /* Splice a new property into the list. */
-
- GList* new_prop = g_list_alloc();
-
- new_prop->next = MARK_LIST_PTR(mark);
- new_prop->prev = MARK_PREV_LIST_PTR(mark);
- new_prop->next->prev = new_prop;
-
- if (new_prop->prev)
- new_prop->prev->next = new_prop;
-
- new_prop->data = new_text_property (text, font, fore, back, len);
-
- SET_PROPERTY_MARK (mark, new_prop, 0);
- }
- }
- else
- {
- /* The following will screw up the line_start cache,
- * we'll fix it up in correct_cache_insert
- */
-
- /* In the middle of forward_prop, if properties are equal,
- * just add to its length, else split it into two and splice
- * in a new one. */
- if (text_properties_equal (forward_prop, font, fore, back))
- {
- forward_prop->length += len;
- }
- else if ((MARK_NEXT_LIST_PTR(mark) == NULL) &&
- (MARK_OFFSET(mark) + 1 == forward_prop->length))
- {
- /* Inserting before only the last position in the text */
-
- GList* new_prop;
- forward_prop->length -= 1;
-
- new_prop = g_list_alloc();
- new_prop->data = new_text_property (text, font, fore, back, len+1);
- new_prop->prev = MARK_LIST_PTR(mark);
- new_prop->next = NULL;
- MARK_NEXT_LIST_PTR(mark) = new_prop;
-
- SET_PROPERTY_MARK (mark, new_prop, 0);
- }
- else
- {
- GList* new_prop = g_list_alloc();
- GList* new_prop_forward = g_list_alloc();
- gint old_length = forward_prop->length;
- GList* next = MARK_NEXT_LIST_PTR(mark);
-
- /* Set the new lengths according to where they are split. Construct
- * two new properties. */
- forward_prop->length = MARK_OFFSET(mark);
-
- new_prop_forward->data =
- new_text_property(text,
- forward_prop->flags & PROPERTY_FONT ?
- forward_prop->font->gdk_font : NULL,
- forward_prop->flags & PROPERTY_FOREGROUND ?
- &forward_prop->fore_color : NULL,
- forward_prop->flags & PROPERTY_BACKGROUND ?
- &forward_prop->back_color : NULL,
- old_length - forward_prop->length);
-
- new_prop->data = new_text_property(text, font, fore, back, len);
-
- /* Now splice things in. */
- MARK_NEXT_LIST_PTR(mark) = new_prop;
- new_prop->prev = MARK_LIST_PTR(mark);
-
- new_prop->next = new_prop_forward;
- new_prop_forward->prev = new_prop;
-
- new_prop_forward->next = next;
-
- if (next)
- next->prev = new_prop_forward;
-
- SET_PROPERTY_MARK (mark, new_prop, 0);
- }
- }
-
- while (text->text_properties_end->next)
- text->text_properties_end = text->text_properties_end->next;
-
- while (text->text_properties->prev)
- text->text_properties = text->text_properties->prev;
-}
-
-static void
-delete_text_property (GtkText* text, guint nchars)
-{
- /* Delete nchars forward from point. */
-
- /* Deleting text properties is problematical, because we
- * might be storing around marks pointing to a property.
- *
- * The marks in question and how we handle them are:
- *
- * point: We know the new value, since it will be at the
- * end of the deleted text, and we move it there
- * first.
- * cursor: We just remove the mark and set it equal to the
- * point after the operation.
- * line-start cache: We replace most affected lines.
- * The current line gets used to fetch the new
- * lines so, if necessary, (delete at the beginning
- * of a line) we fix it up by setting it equal to the
- * point.
- */
-
- TextProperty *prop;
- GList *tmp;
- gint is_first;
-
- for(; nchars; nchars -= 1)
- {
- prop = MARK_CURRENT_PROPERTY(&text->point);
-
- prop->length -= 1;
-
- if (prop->length == 0)
- {
- tmp = MARK_LIST_PTR (&text->point);
-
- is_first = tmp == text->text_properties;
-
- MARK_LIST_PTR (&text->point) = g_list_remove_link (tmp, tmp);
- text->point.offset = 0;
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- unrealize_property (text, prop);
-
- destroy_text_property (prop);
- g_list_free_1 (tmp);
-
- prop = MARK_CURRENT_PROPERTY (&text->point);
-
- if (is_first)
- text->text_properties = MARK_LIST_PTR (&text->point);
-
- g_assert (prop->length != 0);
- }
- else if (prop->length == text->point.offset)
- {
- MARK_LIST_PTR (&text->point) = MARK_NEXT_LIST_PTR (&text->point);
- text->point.offset = 0;
- }
- }
-
- /* Check to see if we have just the single final position remaining
- * along in a property; if so, combine it with the previous property
- */
- if (LAST_INDEX (text, text->point) &&
- (MARK_OFFSET (&text->point) == 0) &&
- (MARK_PREV_LIST_PTR(&text->point) != NULL))
- {
- tmp = MARK_LIST_PTR (&text->point);
- prop = MARK_CURRENT_PROPERTY(&text->point);
-
- MARK_LIST_PTR (&text->point) = MARK_PREV_LIST_PTR (&text->point);
- MARK_CURRENT_PROPERTY(&text->point)->length += 1;
- MARK_NEXT_LIST_PTR(&text->point) = NULL;
-
- text->point.offset = MARK_CURRENT_PROPERTY(&text->point)->length - 1;
-
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- unrealize_property (text, prop);
-
- destroy_text_property (prop);
- g_list_free_1 (tmp);
- }
-}
-
-static void
-init_properties (GtkText *text)
-{
- if (!text->text_properties)
- {
- text->text_properties = g_list_alloc();
- text->text_properties->next = NULL;
- text->text_properties->prev = NULL;
- text->text_properties->data = new_text_property (text, NULL, NULL, NULL, 1);
- text->text_properties_end = text->text_properties;
-
- SET_PROPERTY_MARK (&text->point, text->text_properties, 0);
-
- text->point.index = 0;
- }
-}
-
-
-/**********************************************************************/
-/* Property Movement */
-/**********************************************************************/
-
-static void
-move_mark_n (GtkPropertyMark* mark, gint n)
-{
- if (n > 0)
- advance_mark_n(mark, n);
- else if (n < 0)
- decrement_mark_n(mark, -n);
-}
-
-static void
-advance_mark (GtkPropertyMark* mark)
-{
- TextProperty* prop = MARK_CURRENT_PROPERTY (mark);
-
- mark->index += 1;
-
- if (prop->length > mark->offset + 1)
- mark->offset += 1;
- else
- {
- mark->property = MARK_NEXT_LIST_PTR (mark);
- mark->offset = 0;
- }
-}
-
-static void
-advance_mark_n (GtkPropertyMark* mark, gint n)
-{
- gint i;
- TextProperty* prop;
-
- g_assert (n > 0);
-
- i = 0; /* otherwise it migth not be init. */
- prop = MARK_CURRENT_PROPERTY(mark);
-
- if ((prop->length - mark->offset - 1) < n) { /* if we need to change prop. */
- /* to make it easier */
- n += (mark->offset);
- mark->index -= mark->offset;
- mark->offset = 0;
- /* first we take seven-mile-leaps to get to the right text
- * property. */
- while ((n-i) > prop->length - 1) {
- i += prop->length;
- mark->index += prop->length;
- mark->property = MARK_NEXT_LIST_PTR (mark);
- prop = MARK_CURRENT_PROPERTY (mark);
- }
- }
-
- /* and then the rest */
- mark->index += n - i;
- mark->offset += n - i;
-}
-
-static void
-decrement_mark (GtkPropertyMark* mark)
-{
- mark->index -= 1;
-
- if (mark->offset > 0)
- mark->offset -= 1;
- else
- {
- mark->property = MARK_PREV_LIST_PTR (mark);
- mark->offset = MARK_CURRENT_PROPERTY (mark)->length - 1;
- }
-}
-
-static void
-decrement_mark_n (GtkPropertyMark* mark, gint n)
-{
- g_assert (n > 0);
-
- while (mark->offset < n) {
- /* jump to end of prev */
- n -= mark->offset + 1;
- mark->index -= mark->offset + 1;
- mark->property = MARK_PREV_LIST_PTR (mark);
- mark->offset = MARK_CURRENT_PROPERTY (mark)->length - 1;
- }
-
- /* and the rest */
- mark->index -= n;
- mark->offset -= n;
-}
-
-static GtkPropertyMark
-find_mark (GtkText* text, guint mark_position)
-{
- return find_mark_near (text, mark_position, &text->point);
-}
-
-/*
- * You can also start from the end, what a drag.
- */
-static GtkPropertyMark
-find_mark_near (GtkText* text, guint mark_position, const GtkPropertyMark* near)
-{
- gint diffa;
- gint diffb;
-
- GtkPropertyMark mark;
-
- if (!near)
- diffa = mark_position + 1;
- else
- diffa = mark_position - near->index;
-
- diffb = mark_position;
-
- if (diffa < 0)
- diffa = -diffa;
-
- if (diffa <= diffb)
- {
- mark = *near;
- }
- else
- {
- mark.index = 0;
- mark.property = text->text_properties;
- mark.offset = 0;
- }
-
- move_mark_n (&mark, mark_position - mark.index);
-
- return mark;
-}
-
-/* This routine must be called with scroll == FALSE, only when
- * point is at least partially on screen
- */
-
-static void
-find_line_containing_point (GtkText* text, guint point,
- gboolean scroll)
-{
- GList* cache;
- gint height;
-
- text->current_line = NULL;
-
- TEXT_SHOW (text);
-
- /* Scroll backwards until the point is on screen
- */
- while (CACHE_DATA(text->line_start_cache).start.index > point)
- scroll_int (text, - LINE_HEIGHT(CACHE_DATA(text->line_start_cache)));
-
- /* Now additionally try to make sure that the point is fully on screen
- */
- if (scroll)
- {
- while (text->first_cut_pixels != 0 &&
- text->line_start_cache->next &&
- CACHE_DATA(text->line_start_cache->next).start.index > point)
- scroll_int (text, - LINE_HEIGHT(CACHE_DATA(text->line_start_cache->next)));
- }
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- for (cache = text->line_start_cache; cache; cache = cache->next)
- {
- guint lph;
-
- if (CACHE_DATA(cache).end.index >= point ||
- LAST_INDEX(text, CACHE_DATA(cache).end))
- {
- text->current_line = cache; /* LOOK HERE, this proc has an
- * important side effect. */
- return;
- }
-
- TEXT_SHOW_LINE (text, cache, "cache");
-
- if (cache->next == NULL)
- fetch_lines_forward (text, 1);
-
- if (scroll)
- {
- lph = pixel_height_of (text, cache->next);
-
- /* Scroll the bottom of the line is on screen, or until
- * the line is the first onscreen line.
- */
- while (cache->next != text->line_start_cache && lph > height)
- {
- TEXT_SHOW_LINE (text, cache, "cache");
- TEXT_SHOW_LINE (text, cache->next, "cache->next");
- scroll_int (text, LINE_HEIGHT(CACHE_DATA(cache->next)));
- lph = pixel_height_of (text, cache->next);
- }
- }
- }
-
- g_assert_not_reached (); /* Must set text->current_line here */
-}
-
-static guint
-pixel_height_of (GtkText* text, GList* cache_line)
-{
- gint pixels = - text->first_cut_pixels;
- GList *cache = text->line_start_cache;
-
- while (TRUE) {
- pixels += LINE_HEIGHT (CACHE_DATA(cache));
-
- if (cache->data == cache_line->data)
- break;
-
- cache = cache->next;
- }
-
- return pixels;
-}
-
-/**********************************************************************/
-/* Search and Placement */
-/**********************************************************************/
-
-static gint
-find_char_width (GtkText* text, const GtkPropertyMark *mark, const TabStopMark *tab_mark)
-{
- GdkWChar ch;
- gint16* char_widths;
-
- if (LAST_INDEX (text, *mark))
- return 0;
-
- ch = GTK_TEXT_INDEX (text, mark->index);
- char_widths = MARK_CURRENT_TEXT_FONT (text, mark)->char_widths;
-
- if (ch == '\t')
- {
- return tab_mark->to_next_tab * char_widths[' '];
- }
- else if (ch < 256)
- {
- return char_widths[ch];
- }
- else
- {
- return gdk_char_width_wc(MARK_CURRENT_TEXT_FONT(text, mark)->gdk_font, ch);
- }
-}
-
-static void
-advance_tab_mark (GtkText* text, TabStopMark* tab_mark, GdkWChar ch)
-{
- if (tab_mark->to_next_tab == 1 || ch == '\t')
- {
- if (tab_mark->tab_stops->next)
- {
- tab_mark->tab_stops = tab_mark->tab_stops->next;
- tab_mark->to_next_tab = (gintptr) tab_mark->tab_stops->data;
- }
- else
- {
- tab_mark->to_next_tab = text->default_tab_width;
- }
- }
- else
- {
- tab_mark->to_next_tab -= 1;
- }
-}
-
-static void
-advance_tab_mark_n (GtkText* text, TabStopMark* tab_mark, gint n)
- /* No tabs! */
-{
- while (n--)
- advance_tab_mark (text, tab_mark, 0);
-}
-
-static void
-find_cursor_at_line (GtkText* text, const LineParams* start_line, gint pixel_height)
-{
- GdkWChar ch;
-
- GtkPropertyMark mark = start_line->start;
- TabStopMark tab_mark = start_line->tab_cont.tab_start;
- gint pixel_width = LINE_START_PIXEL (*start_line);
-
- while (mark.index < text->cursor_mark.index)
- {
- pixel_width += find_char_width (text, &mark, &tab_mark);
-
- advance_tab_mark (text, &tab_mark, GTK_TEXT_INDEX(text, mark.index));
- advance_mark (&mark);
- }
-
- text->cursor_pos_x = pixel_width;
- text->cursor_pos_y = pixel_height;
- text->cursor_char_offset = start_line->font_descent;
- text->cursor_mark = mark;
-
- ch = LAST_INDEX (text, mark) ?
- LINE_DELIM : GTK_TEXT_INDEX (text, mark.index);
-
- if ((text->use_wchar) ? gdk_iswspace (ch) : isspace (ch))
- text->cursor_char = 0;
- else
- text->cursor_char = ch;
-}
-
-static void
-find_cursor (GtkText* text, gboolean scroll)
-{
- if (gtk_widget_get_realized (GTK_WIDGET (text)))
- {
- find_line_containing_point (text, text->cursor_mark.index, scroll);
-
- if (text->current_line)
- find_cursor_at_line (text,
- &CACHE_DATA(text->current_line),
- pixel_height_of(text, text->current_line));
- }
-
- GTK_OLD_EDITABLE (text)->current_pos = text->cursor_mark.index;
-}
-
-static void
-find_mouse_cursor_at_line (GtkText *text, const LineParams* lp,
- guint line_pixel_height,
- gint button_x)
-{
- GtkPropertyMark mark = lp->start;
- TabStopMark tab_mark = lp->tab_cont.tab_start;
-
- gint char_width = find_char_width(text, &mark, &tab_mark);
- gint pixel_width = LINE_START_PIXEL (*lp) + (char_width+1)/2;
-
- text->cursor_pos_y = line_pixel_height;
-
- for (;;)
- {
- GdkWChar ch = LAST_INDEX (text, mark) ?
- LINE_DELIM : GTK_TEXT_INDEX (text, mark.index);
-
- if (button_x < pixel_width || mark.index == lp->end.index)
- {
- text->cursor_pos_x = pixel_width - (char_width+1)/2;
- text->cursor_mark = mark;
- text->cursor_char_offset = lp->font_descent;
-
- if ((text->use_wchar) ? gdk_iswspace (ch) : isspace (ch))
- text->cursor_char = 0;
- else
- text->cursor_char = ch;
-
- break;
- }
-
- advance_tab_mark (text, &tab_mark, ch);
- advance_mark (&mark);
-
- pixel_width += char_width/2;
-
- char_width = find_char_width (text, &mark, &tab_mark);
-
- pixel_width += (char_width+1)/2;
- }
-}
-
-static void
-find_mouse_cursor (GtkText* text, gint x, gint y)
-{
- gint pixel_height;
- GList* cache = text->line_start_cache;
-
- g_assert (cache);
-
- pixel_height = - text->first_cut_pixels;
-
- for (; cache; cache = cache->next)
- {
- pixel_height += LINE_HEIGHT(CACHE_DATA(cache));
-
- if (y < pixel_height || !cache->next)
- {
- find_mouse_cursor_at_line (text, &CACHE_DATA(cache), pixel_height, x);
-
- find_cursor (text, FALSE);
-
- return;
- }
- }
-}
-
-/**********************************************************************/
-/* Cache Manager */
-/**********************************************************************/
-
-static void
-free_cache (GtkText* text)
-{
- GList* cache = text->line_start_cache;
-
- if (cache)
- {
- while (cache->prev)
- cache = cache->prev;
-
- text->line_start_cache = cache;
- }
-
- for (; cache; cache = cache->next)
- g_slice_free (LineParams, cache->data);
-
- g_list_free (text->line_start_cache);
-
- text->line_start_cache = NULL;
-}
-
-static GList*
-remove_cache_line (GtkText* text, GList* member)
-{
- GList *list;
-
- if (member == NULL)
- return NULL;
-
- if (member == text->line_start_cache)
- text->line_start_cache = text->line_start_cache->next;
-
- if (member->prev)
- member->prev->next = member->next;
-
- if (member->next)
- member->next->prev = member->prev;
-
- list = member->next;
-
- g_slice_free (LineParams, member->data);
- g_list_free_1 (member);
-
- return list;
-}
-
-/**********************************************************************/
-/* Key Motion */
-/**********************************************************************/
-
-static void
-move_cursor_buffer_ver (GtkText *text, int dir)
-{
- undraw_cursor (text, FALSE);
-
- if (dir > 0)
- {
- scroll_int (text, text->vadj->upper);
- text->cursor_mark = find_this_line_start_mark (text,
- TEXT_LENGTH (text),
- &text->cursor_mark);
- }
- else
- {
- scroll_int (text, - text->vadj->value);
- text->cursor_mark = find_this_line_start_mark (text,
- 0,
- &text->cursor_mark);
- }
-
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
-}
-
-static void
-move_cursor_page_ver (GtkText *text, int dir)
-{
- scroll_int (text, dir * text->vadj->page_increment);
-}
-
-static void
-move_cursor_ver (GtkText *text, int count)
-{
- gint i;
- GtkPropertyMark mark;
- gint offset;
-
- mark = find_this_line_start_mark (text, text->cursor_mark.index, &text->cursor_mark);
- offset = text->cursor_mark.index - mark.index;
-
- if (offset > text->cursor_virtual_x)
- text->cursor_virtual_x = offset;
-
- if (count < 0)
- {
- if (mark.index == 0)
- return;
-
- decrement_mark (&mark);
- mark = find_this_line_start_mark (text, mark.index, &mark);
- }
- else
- {
- mark = text->cursor_mark;
-
- while (!LAST_INDEX(text, mark) && GTK_TEXT_INDEX(text, mark.index) != LINE_DELIM)
- advance_mark (&mark);
-
- if (LAST_INDEX(text, mark))
- return;
-
- advance_mark (&mark);
- }
-
- for (i=0; i < text->cursor_virtual_x; i += 1, advance_mark(&mark))
- if (LAST_INDEX(text, mark) ||
- GTK_TEXT_INDEX(text, mark.index) == LINE_DELIM)
- break;
-
- undraw_cursor (text, FALSE);
-
- text->cursor_mark = mark;
-
- find_cursor (text, TRUE);
-
- draw_cursor (text, FALSE);
-}
-
-static void
-move_cursor_hor (GtkText *text, int count)
-{
- /* count should be +-1. */
- if ( (count > 0 && text->cursor_mark.index + count > TEXT_LENGTH(text)) ||
- (count < 0 && text->cursor_mark.index < (- count)) ||
- (count == 0) )
- return;
-
- text->cursor_virtual_x = 0;
-
- undraw_cursor (text, FALSE);
-
- move_mark_n (&text->cursor_mark, count);
-
- find_cursor (text, TRUE);
-
- draw_cursor (text, FALSE);
-}
-
-static void
-gtk_text_move_cursor (GtkOldEditable *old_editable,
- gint x,
- gint y)
-{
- if (x > 0)
- {
- while (x-- != 0)
- move_cursor_hor (GTK_TEXT (old_editable), 1);
- }
- else if (x < 0)
- {
- while (x++ != 0)
- move_cursor_hor (GTK_TEXT (old_editable), -1);
- }
-
- if (y > 0)
- {
- while (y-- != 0)
- move_cursor_ver (GTK_TEXT (old_editable), 1);
- }
- else if (y < 0)
- {
- while (y++ != 0)
- move_cursor_ver (GTK_TEXT (old_editable), -1);
- }
-}
-
-static void
-gtk_text_move_forward_character (GtkText *text)
-{
- move_cursor_hor (text, 1);
-}
-
-static void
-gtk_text_move_backward_character (GtkText *text)
-{
- move_cursor_hor (text, -1);
-}
-
-static void
-gtk_text_move_next_line (GtkText *text)
-{
- move_cursor_ver (text, 1);
-}
-
-static void
-gtk_text_move_previous_line (GtkText *text)
-{
- move_cursor_ver (text, -1);
-}
-
-static void
-gtk_text_move_word (GtkOldEditable *old_editable,
- gint n)
-{
- if (n > 0)
- {
- while (n-- != 0)
- gtk_text_move_forward_word (GTK_TEXT (old_editable));
- }
- else if (n < 0)
- {
- while (n++ != 0)
- gtk_text_move_backward_word (GTK_TEXT (old_editable));
- }
-}
-
-static void
-gtk_text_move_forward_word (GtkText *text)
-{
- text->cursor_virtual_x = 0;
-
- undraw_cursor (text, FALSE);
-
- if (text->use_wchar)
- {
- while (!LAST_INDEX (text, text->cursor_mark) &&
- !gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index)))
- advance_mark (&text->cursor_mark);
-
- while (!LAST_INDEX (text, text->cursor_mark) &&
- gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index)))
- advance_mark (&text->cursor_mark);
- }
- else
- {
- while (!LAST_INDEX (text, text->cursor_mark) &&
- !isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index)))
- advance_mark (&text->cursor_mark);
-
- while (!LAST_INDEX (text, text->cursor_mark) &&
- isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index)))
- advance_mark (&text->cursor_mark);
- }
-
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
-}
-
-static void
-gtk_text_move_backward_word (GtkText *text)
-{
- text->cursor_virtual_x = 0;
-
- undraw_cursor (text, FALSE);
-
- if (text->use_wchar)
- {
- while ((text->cursor_mark.index > 0) &&
- !gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1)))
- decrement_mark (&text->cursor_mark);
-
- while ((text->cursor_mark.index > 0) &&
- gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1)))
- decrement_mark (&text->cursor_mark);
- }
- else
- {
- while ((text->cursor_mark.index > 0) &&
- !isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1)))
- decrement_mark (&text->cursor_mark);
-
- while ((text->cursor_mark.index > 0) &&
- isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1)))
- decrement_mark (&text->cursor_mark);
- }
-
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
-}
-
-static void
-gtk_text_move_page (GtkOldEditable *old_editable,
- gint x,
- gint y)
-{
- if (y != 0)
- scroll_int (GTK_TEXT (old_editable),
- y * GTK_TEXT(old_editable)->vadj->page_increment);
-}
-
-static void
-gtk_text_move_to_row (GtkOldEditable *old_editable,
- gint row)
-{
-}
-
-static void
-gtk_text_move_to_column (GtkOldEditable *old_editable,
- gint column)
-{
- GtkText *text;
-
- text = GTK_TEXT (old_editable);
-
- text->cursor_virtual_x = 0; /* FIXME */
-
- undraw_cursor (text, FALSE);
-
- /* Move to the beginning of the line */
- while ((text->cursor_mark.index > 0) &&
- (GTK_TEXT_INDEX (text, text->cursor_mark.index - 1) != LINE_DELIM))
- decrement_mark (&text->cursor_mark);
-
- while (!LAST_INDEX (text, text->cursor_mark) &&
- (GTK_TEXT_INDEX (text, text->cursor_mark.index) != LINE_DELIM))
- {
- if (column > 0)
- column--;
- else if (column == 0)
- break;
-
- advance_mark (&text->cursor_mark);
- }
-
- find_cursor (text, TRUE);
- draw_cursor (text, FALSE);
-}
-
-static void
-gtk_text_move_beginning_of_line (GtkText *text)
-{
- gtk_text_move_to_column (GTK_OLD_EDITABLE (text), 0);
-
-}
-
-static void
-gtk_text_move_end_of_line (GtkText *text)
-{
- gtk_text_move_to_column (GTK_OLD_EDITABLE (text), -1);
-}
-
-static void
-gtk_text_kill_char (GtkOldEditable *old_editable,
- gint direction)
-{
- GtkText *text;
-
- text = GTK_TEXT (old_editable);
-
- if (old_editable->selection_start_pos != old_editable->selection_end_pos)
- gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
- else
- {
- if (direction >= 0)
- {
- if (text->point.index + 1 <= TEXT_LENGTH (text))
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), text->point.index, text->point.index + 1);
- }
- else
- {
- if (text->point.index > 0)
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), text->point.index - 1, text->point.index);
- }
- }
-}
-
-static void
-gtk_text_delete_forward_character (GtkText *text)
-{
- gtk_text_kill_char (GTK_OLD_EDITABLE (text), 1);
-}
-
-static void
-gtk_text_delete_backward_character (GtkText *text)
-{
- gtk_text_kill_char (GTK_OLD_EDITABLE (text), -1);
-}
-
-static void
-gtk_text_kill_word (GtkOldEditable *old_editable,
- gint direction)
-{
- if (old_editable->selection_start_pos != old_editable->selection_end_pos)
- gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
- else
- {
- gint old_pos = old_editable->current_pos;
- if (direction >= 0)
- {
- gtk_text_move_word (old_editable, 1);
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), old_pos, old_editable->current_pos);
- }
- else
- {
- gtk_text_move_word (old_editable, -1);
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), old_editable->current_pos, old_pos);
- }
- }
-}
-
-static void
-gtk_text_delete_forward_word (GtkText *text)
-{
- gtk_text_kill_word (GTK_OLD_EDITABLE (text), 1);
-}
-
-static void
-gtk_text_delete_backward_word (GtkText *text)
-{
- gtk_text_kill_word (GTK_OLD_EDITABLE (text), -1);
-}
-
-static void
-gtk_text_kill_line (GtkOldEditable *old_editable,
- gint direction)
-{
- gint old_pos = old_editable->current_pos;
- if (direction >= 0)
- {
- gtk_text_move_to_column (old_editable, -1);
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), old_pos, old_editable->current_pos);
- }
- else
- {
- gtk_text_move_to_column (old_editable, 0);
- gtk_editable_delete_text (GTK_EDITABLE (old_editable), old_editable->current_pos, old_pos);
- }
-}
-
-static void
-gtk_text_delete_line (GtkText *text)
-{
- gtk_text_move_to_column (GTK_OLD_EDITABLE (text), 0);
- gtk_text_kill_line (GTK_OLD_EDITABLE (text), 1);
-}
-
-static void
-gtk_text_delete_to_line_end (GtkText *text)
-{
- gtk_text_kill_line (GTK_OLD_EDITABLE (text), 1);
-}
-
-static void
-gtk_text_select_word (GtkText *text, guint32 time)
-{
- gint start_pos;
- gint end_pos;
-
- GtkOldEditable *old_editable;
- old_editable = GTK_OLD_EDITABLE (text);
-
- gtk_text_move_backward_word (text);
- start_pos = text->cursor_mark.index;
-
- gtk_text_move_forward_word (text);
- end_pos = text->cursor_mark.index;
-
- old_editable->has_selection = TRUE;
- gtk_text_set_selection (old_editable, start_pos, end_pos);
- gtk_old_editable_claim_selection (old_editable, start_pos != end_pos, time);
-}
-
-static void
-gtk_text_select_line (GtkText *text, guint32 time)
-{
- gint start_pos;
- gint end_pos;
-
- GtkOldEditable *old_editable;
- old_editable = GTK_OLD_EDITABLE (text);
-
- gtk_text_move_beginning_of_line (text);
- start_pos = text->cursor_mark.index;
-
- gtk_text_move_end_of_line (text);
- gtk_text_move_forward_character (text);
- end_pos = text->cursor_mark.index;
-
- old_editable->has_selection = TRUE;
- gtk_text_set_selection (old_editable, start_pos, end_pos);
- gtk_old_editable_claim_selection (old_editable, start_pos != end_pos, time);
-}
-
-/**********************************************************************/
-/* Scrolling */
-/**********************************************************************/
-
-static void
-adjust_adj (GtkText* text, GtkAdjustment* adj)
-{
- gint height;
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- adj->step_increment = MIN (adj->upper, SCROLL_PIXELS);
- adj->page_increment = MIN (adj->upper, height - KEY_SCROLL_PIXELS);
- adj->page_size = MIN (adj->upper, height);
- adj->value = MIN (adj->value, adj->upper - adj->page_size);
- adj->value = MAX (adj->value, 0.0);
-
- gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
-}
-
-static gint
-set_vertical_scroll_iterator (GtkText* text, LineParams* lp, void* data)
-{
- SetVerticalScrollData *svdata = (SetVerticalScrollData *) data;
-
- if ((text->first_line_start_index >= lp->start.index) &&
- (text->first_line_start_index <= lp->end.index))
- {
- svdata->mark = lp->start;
-
- if (text->first_line_start_index == lp->start.index)
- {
- text->first_onscreen_ver_pixel = svdata->pixel_height + text->first_cut_pixels;
- }
- else
- {
- text->first_onscreen_ver_pixel = svdata->pixel_height;
- text->first_cut_pixels = 0;
- }
-
- text->vadj->value = text->first_onscreen_ver_pixel;
- }
-
- svdata->pixel_height += LINE_HEIGHT (*lp);
-
- return FALSE;
-}
-
-static gint
-set_vertical_scroll_find_iterator (GtkText* text, LineParams* lp, void* data)
-{
- SetVerticalScrollData *svdata = (SetVerticalScrollData *) data;
- gint return_val;
-
- if (svdata->pixel_height <= (gint) text->vadj->value &&
- svdata->pixel_height + LINE_HEIGHT(*lp) > (gint) text->vadj->value)
- {
- svdata->mark = lp->start;
-
- text->first_cut_pixels = (gint)text->vadj->value - svdata->pixel_height;
- text->first_onscreen_ver_pixel = svdata->pixel_height;
- text->first_line_start_index = lp->start.index;
-
- return_val = TRUE;
- }
- else
- {
- svdata->pixel_height += LINE_HEIGHT (*lp);
-
- return_val = FALSE;
- }
-
- return return_val;
-}
-
-static GtkPropertyMark
-set_vertical_scroll (GtkText* text)
-{
- GtkPropertyMark mark = find_mark (text, 0);
- SetVerticalScrollData data;
- gint height;
- gint orig_value;
-
- data.pixel_height = 0;
- line_params_iterate (text, &mark, NULL, FALSE, &data, set_vertical_scroll_iterator);
-
- text->vadj->upper = data.pixel_height;
- orig_value = (gint) text->vadj->value;
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- text->vadj->step_increment = MIN (text->vadj->upper, SCROLL_PIXELS);
- text->vadj->page_increment = MIN (text->vadj->upper, height - KEY_SCROLL_PIXELS);
- text->vadj->page_size = MIN (text->vadj->upper, height);
- text->vadj->value = MIN (text->vadj->value, text->vadj->upper - text->vadj->page_size);
- text->vadj->value = MAX (text->vadj->value, 0.0);
-
- text->last_ver_value = (gint)text->vadj->value;
-
- gtk_signal_emit_by_name (GTK_OBJECT (text->vadj), "changed");
-
- if (text->vadj->value != orig_value)
- {
- /* We got clipped, and don't really know which line to put first. */
- data.pixel_height = 0;
- data.last_didnt_wrap = TRUE;
-
- line_params_iterate (text, &mark, NULL,
- FALSE, &data,
- set_vertical_scroll_find_iterator);
- }
-
- return data.mark;
-}
-
-static void
-scroll_int (GtkText* text, gint diff)
-{
- gdouble upper;
-
- text->vadj->value += diff;
-
- upper = text->vadj->upper - text->vadj->page_size;
- text->vadj->value = MIN (text->vadj->value, upper);
- text->vadj->value = MAX (text->vadj->value, 0.0);
-
- gtk_signal_emit_by_name (GTK_OBJECT (text->vadj), "value-changed");
-}
-
-static void
-process_exposes (GtkText *text)
-{
- GdkEvent *event;
-
- /* Make sure graphics expose events are processed before scrolling
- * again */
-
- while ((event = gdk_event_get_graphics_expose (text->text_area)) != NULL)
- {
- gtk_widget_send_expose (GTK_WIDGET (text), event);
- if (event->expose.count == 0)
- {
- gdk_event_free (event);
- break;
- }
- gdk_event_free (event);
- }
-}
-
-static gint last_visible_line_height (GtkText* text)
-{
- GList *cache = text->line_start_cache;
- gint height;
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- for (; cache->next; cache = cache->next)
- if (pixel_height_of(text, cache->next) > height)
- break;
-
- if (cache)
- return pixel_height_of(text, cache) - 1;
- else
- return 0;
-}
-
-static gint first_visible_line_height (GtkText* text)
-{
- if (text->first_cut_pixels)
- return pixel_height_of(text, text->line_start_cache) + 1;
- else
- return 1;
-}
-
-static void
-scroll_down (GtkText* text, gint diff0)
-{
- GdkRectangle rect;
- gint real_diff = 0;
- gint width, height;
-
- text->first_onscreen_ver_pixel += diff0;
-
- while (diff0-- > 0)
- {
- g_assert (text->line_start_cache);
-
- if (text->first_cut_pixels < LINE_HEIGHT(CACHE_DATA(text->line_start_cache)) - 1)
- {
- text->first_cut_pixels += 1;
- }
- else
- {
- text->first_cut_pixels = 0;
-
- text->line_start_cache = text->line_start_cache->next;
-
- text->first_line_start_index =
- CACHE_DATA(text->line_start_cache).start.index;
-
- if (!text->line_start_cache->next)
- fetch_lines_forward (text, 1);
- }
-
- real_diff += 1;
- }
-
- gdk_drawable_get_size (text->text_area, &width, &height);
- if (height > real_diff)
- gdk_draw_drawable (text->text_area,
- text->gc,
- text->text_area,
- 0,
- real_diff,
- 0,
- 0,
- width,
- height - real_diff);
-
- rect.x = 0;
- rect.y = MAX (0, height - real_diff);
- rect.width = width;
- rect.height = MIN (height, real_diff);
-
- expose_text (text, &rect, FALSE);
- gtk_text_draw_focus ( (GtkWidget *) text);
-
- if (text->current_line)
- {
- gint cursor_min;
-
- text->cursor_pos_y -= real_diff;
- cursor_min = drawn_cursor_min(text);
-
- if (cursor_min < 0)
- find_mouse_cursor (text, text->cursor_pos_x,
- first_visible_line_height (text));
- }
-
- if (height > real_diff)
- process_exposes (text);
-}
-
-static void
-scroll_up (GtkText* text, gint diff0)
-{
- gint real_diff = 0;
- GdkRectangle rect;
- gint width, height;
-
- text->first_onscreen_ver_pixel += diff0;
-
- while (diff0++ < 0)
- {
- g_assert (text->line_start_cache);
-
- if (text->first_cut_pixels > 0)
- {
- text->first_cut_pixels -= 1;
- }
- else
- {
- if (!text->line_start_cache->prev)
- fetch_lines_backward (text);
-
- text->line_start_cache = text->line_start_cache->prev;
-
- text->first_line_start_index =
- CACHE_DATA(text->line_start_cache).start.index;
-
- text->first_cut_pixels = LINE_HEIGHT(CACHE_DATA(text->line_start_cache)) - 1;
- }
-
- real_diff += 1;
- }
-
- gdk_drawable_get_size (text->text_area, &width, &height);
- if (height > real_diff)
- gdk_draw_drawable (text->text_area,
- text->gc,
- text->text_area,
- 0,
- 0,
- 0,
- real_diff,
- width,
- height - real_diff);
-
- rect.x = 0;
- rect.y = 0;
- rect.width = width;
- rect.height = MIN (height, real_diff);
-
- expose_text (text, &rect, FALSE);
- gtk_text_draw_focus ( (GtkWidget *) text);
-
- if (text->current_line)
- {
- gint cursor_max;
- gint height;
-
- text->cursor_pos_y += real_diff;
- cursor_max = drawn_cursor_max(text);
- gdk_drawable_get_size (text->text_area, NULL, &height);
-
- if (cursor_max >= height)
- find_mouse_cursor (text, text->cursor_pos_x,
- last_visible_line_height (text));
- }
-
- if (height > real_diff)
- process_exposes (text);
-}
-
-/**********************************************************************/
-/* Display Code */
-/**********************************************************************/
-
-/* Assumes mark starts a line. Calculates the height, width, and
- * displayable character count of a single DISPLAYABLE line. That
- * means that in line-wrap mode, this does may not compute the
- * properties of an entire line. */
-static LineParams
-find_line_params (GtkText* text,
- const GtkPropertyMark* mark,
- const PrevTabCont *tab_cont,
- PrevTabCont *next_cont)
-{
- LineParams lp;
- TabStopMark tab_mark = tab_cont->tab_start;
- guint max_display_pixels;
- GdkWChar ch;
- gint ch_width;
- GdkFont *font;
-
- gdk_drawable_get_size (text->text_area, (gint*) &max_display_pixels, NULL);
- max_display_pixels -= LINE_WRAP_ROOM;
-
- lp.wraps = 0;
- lp.tab_cont = *tab_cont;
- lp.start = *mark;
- lp.end = *mark;
- lp.pixel_width = tab_cont->pixel_offset;
- lp.displayable_chars = 0;
- lp.font_ascent = 0;
- lp.font_descent = 0;
-
- init_tab_cont (text, next_cont);
-
- while (!LAST_INDEX(text, lp.end))
- {
- g_assert (lp.end.property);
-
- ch = GTK_TEXT_INDEX (text, lp.end.index);
- font = MARK_CURRENT_FONT (text, &lp.end);
-
- if (ch == LINE_DELIM)
- {
- /* Newline doesn't count in computation of line height, even
- * if its in a bigger font than the rest of the line. Unless,
- * of course, there are no other characters. */
-
- if (!lp.font_ascent && !lp.font_descent)
- {
- lp.font_ascent = font->ascent;
- lp.font_descent = font->descent;
- }
-
- lp.tab_cont_next = *next_cont;
-
- return lp;
- }
-
- ch_width = find_char_width (text, &lp.end, &tab_mark);
-
- if ((ch_width + lp.pixel_width > max_display_pixels) &&
- (lp.end.index > lp.start.index))
- {
- lp.wraps = 1;
-
- if (text->line_wrap)
- {
- next_cont->tab_start = tab_mark;
- next_cont->pixel_offset = 0;
-
- if (ch == '\t')
- {
- /* Here's the tough case, a tab is wrapping. */
- gint pixels_avail = max_display_pixels - lp.pixel_width;
- gint space_width = MARK_CURRENT_TEXT_FONT(text, &lp.end)->char_widths[' '];
- gint spaces_avail = pixels_avail / space_width;
-
- if (spaces_avail == 0)
- {
- decrement_mark (&lp.end);
- }
- else
- {
- advance_tab_mark (text, &next_cont->tab_start, '\t');
- next_cont->pixel_offset = space_width * (tab_mark.to_next_tab -
- spaces_avail);
- lp.displayable_chars += 1;
- }
- }
- else
- {
- if (text->word_wrap)
- {
- GtkPropertyMark saved_mark = lp.end;
- guint saved_characters = lp.displayable_chars;
-
- lp.displayable_chars += 1;
-
- if (text->use_wchar)
- {
- while (!gdk_iswspace (GTK_TEXT_INDEX (text, lp.end.index)) &&
- (lp.end.index > lp.start.index))
- {
- decrement_mark (&lp.end);
- lp.displayable_chars -= 1;
- }
- }
- else
- {
- while (!isspace(GTK_TEXT_INDEX (text, lp.end.index)) &&
- (lp.end.index > lp.start.index))
- {
- decrement_mark (&lp.end);
- lp.displayable_chars -= 1;
- }
- }
-
- /* If whole line is one word, revert to char wrapping */
- if (lp.end.index == lp.start.index)
- {
- lp.end = saved_mark;
- lp.displayable_chars = saved_characters;
- decrement_mark (&lp.end);
- }
- }
- else
- {
- /* Don't include this character, it will wrap. */
- decrement_mark (&lp.end);
- }
- }
-
- lp.tab_cont_next = *next_cont;
-
- return lp;
- }
- }
- else
- {
- lp.displayable_chars += 1;
- }
-
- lp.font_ascent = MAX (font->ascent, lp.font_ascent);
- lp.font_descent = MAX (font->descent, lp.font_descent);
- lp.pixel_width += ch_width;
-
- advance_mark(&lp.end);
- advance_tab_mark (text, &tab_mark, ch);
- }
-
- if (LAST_INDEX(text, lp.start))
- {
- /* Special case, empty last line. */
- font = MARK_CURRENT_FONT (text, &lp.end);
-
- lp.font_ascent = font->ascent;
- lp.font_descent = font->descent;
- }
-
- lp.tab_cont_next = *next_cont;
-
- return lp;
-}
-
-static void
-expand_scratch_buffer (GtkText* text, guint len)
-{
- if (len >= text->scratch_buffer_len)
- {
- guint i = 1;
-
- while (i <= len && i < MIN_GAP_SIZE) i <<= 1;
-
- if (text->use_wchar)
- {
- if (text->scratch_buffer.wc)
- text->scratch_buffer.wc = g_new (GdkWChar, i);
- else
- text->scratch_buffer.wc = g_realloc (text->scratch_buffer.wc,
- i*sizeof (GdkWChar));
- }
- else
- {
- if (text->scratch_buffer.ch)
- text->scratch_buffer.ch = g_new (guchar, i);
- else
- text->scratch_buffer.ch = g_realloc (text->scratch_buffer.ch, i);
- }
-
- text->scratch_buffer_len = i;
- }
-}
-
-/* Side effect: modifies text->gc
- */
-static void
-draw_bg_rect (GtkText* text, GtkPropertyMark *mark,
- gint x, gint y, gint width, gint height,
- gboolean already_cleared)
-{
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (text);
-
- if ((mark->index >= MIN(old_editable->selection_start_pos, old_editable->selection_end_pos) &&
- mark->index < MAX(old_editable->selection_start_pos, old_editable->selection_end_pos)))
- {
- gtk_paint_flat_box(GTK_WIDGET(text)->style, text->text_area,
- old_editable->has_selection ?
- GTK_STATE_SELECTED : GTK_STATE_ACTIVE,
- GTK_SHADOW_NONE,
- NULL, GTK_WIDGET(text), "text",
- x, y, width, height);
- }
- else if (!gdk_color_equal(MARK_CURRENT_BACK (text, mark),
- &GTK_WIDGET(text)->style->base[gtk_widget_get_state (GTK_WIDGET (text))]))
- {
- gdk_gc_set_foreground (text->gc, MARK_CURRENT_BACK (text, mark));
-
- gdk_draw_rectangle (text->text_area,
- text->gc,
- TRUE, x, y, width, height);
- }
- else if (GTK_WIDGET (text)->style->bg_pixmap[GTK_STATE_NORMAL])
- {
- GdkRectangle rect;
-
- rect.x = x;
- rect.y = y;
- rect.width = width;
- rect.height = height;
-
- clear_area (text, &rect);
- }
- else if (!already_cleared)
- gdk_window_clear_area (text->text_area, x, y, width, height);
-}
-
-static void
-draw_line (GtkText* text,
- gint pixel_start_height,
- LineParams* lp)
-{
- GdkGCValues gc_values;
- gint i;
- gint len = 0;
- guint running_offset = lp->tab_cont.pixel_offset;
- union { GdkWChar *wc; guchar *ch; } buffer;
- GdkGC *fg_gc;
-
- GtkOldEditable *old_editable = GTK_OLD_EDITABLE (text);
-
- guint selection_start_pos = MIN (old_editable->selection_start_pos, old_editable->selection_end_pos);
- guint selection_end_pos = MAX (old_editable->selection_start_pos, old_editable->selection_end_pos);
-
- GtkPropertyMark mark = lp->start;
- TabStopMark tab_mark = lp->tab_cont.tab_start;
- gint pixel_height = pixel_start_height + lp->font_ascent;
- guint chars = lp->displayable_chars;
-
- /* First provide a contiguous segment of memory. This makes reading
- * the code below *much* easier, and only incurs the cost of copying
- * when the line being displayed spans the gap. */
- if (mark.index <= text->gap_position &&
- mark.index + chars > text->gap_position)
- {
- expand_scratch_buffer (text, chars);
-
- if (text->use_wchar)
- {
- for (i = 0; i < chars; i += 1)
- text->scratch_buffer.wc[i] = GTK_TEXT_INDEX(text, mark.index + i);
- buffer.wc = text->scratch_buffer.wc;
- }
- else
- {
- for (i = 0; i < chars; i += 1)
- text->scratch_buffer.ch[i] = GTK_TEXT_INDEX(text, mark.index + i);
- buffer.ch = text->scratch_buffer.ch;
- }
- }
- else
- {
- if (text->use_wchar)
- {
- if (mark.index >= text->gap_position)
- buffer.wc = text->text.wc + mark.index + text->gap_size;
- else
- buffer.wc = text->text.wc + mark.index;
- }
- else
- {
- if (mark.index >= text->gap_position)
- buffer.ch = text->text.ch + mark.index + text->gap_size;
- else
- buffer.ch = text->text.ch + mark.index;
- }
- }
-
-
- if (running_offset > 0)
- {
- draw_bg_rect (text, &mark, 0, pixel_start_height, running_offset,
- LINE_HEIGHT (*lp), TRUE);
- }
-
- while (chars > 0)
- {
- len = 0;
- if ((text->use_wchar && buffer.wc[0] != '\t') ||
- (!text->use_wchar && buffer.ch[0] != '\t'))
- {
- union { GdkWChar *wc; guchar *ch; } next_tab;
- gint pixel_width;
- GdkFont *font;
-
- next_tab.wc = NULL;
- if (text->use_wchar)
- for (i=0; i<chars; i++)
- {
- if (buffer.wc[i] == '\t')
- {
- next_tab.wc = buffer.wc + i;
- break;
- }
- }
- else
- next_tab.ch = memchr (buffer.ch, '\t', chars);
-
- len = MIN (MARK_CURRENT_PROPERTY (&mark)->length - mark.offset, chars);
-
- if (text->use_wchar)
- {
- if (next_tab.wc)
- len = MIN (len, next_tab.wc - buffer.wc);
- }
- else
- {
- if (next_tab.ch)
- len = MIN (len, next_tab.ch - buffer.ch);
- }
-
- if (mark.index < selection_start_pos)
- len = MIN (len, selection_start_pos - mark.index);
- else if (mark.index < selection_end_pos)
- len = MIN (len, selection_end_pos - mark.index);
-
- font = MARK_CURRENT_FONT (text, &mark);
- if (font->type == GDK_FONT_FONT)
- {
- gdk_gc_set_font (text->gc, font);
- gdk_gc_get_values (text->gc, &gc_values);
- if (text->use_wchar)
- pixel_width = gdk_text_width_wc (gc_values.font,
- buffer.wc, len);
- else
- pixel_width = gdk_text_width (gc_values.font,
- (gchar *)buffer.ch, len);
- }
- else
- {
- if (text->use_wchar)
- pixel_width = gdk_text_width_wc (font, buffer.wc, len);
- else
- pixel_width = gdk_text_width (font, (gchar *)buffer.ch, len);
- }
-
- draw_bg_rect (text, &mark, running_offset, pixel_start_height,
- pixel_width, LINE_HEIGHT (*lp), TRUE);
-
- if ((mark.index >= selection_start_pos) &&
- (mark.index < selection_end_pos))
- {
- if (old_editable->has_selection)
- fg_gc = GTK_WIDGET(text)->style->text_gc[GTK_STATE_SELECTED];
- else
- fg_gc = GTK_WIDGET(text)->style->text_gc[GTK_STATE_ACTIVE];
- }
- else
- {
- gdk_gc_set_foreground (text->gc, MARK_CURRENT_FORE (text, &mark));
- fg_gc = text->gc;
- }
-
- if (text->use_wchar)
- gdk_draw_text_wc (text->text_area, MARK_CURRENT_FONT (text, &mark),
- fg_gc,
- running_offset,
- pixel_height,
- buffer.wc,
- len);
- else
- gdk_draw_text (text->text_area, MARK_CURRENT_FONT (text, &mark),
- fg_gc,
- running_offset,
- pixel_height,
- (gchar *)buffer.ch,
- len);
-
- running_offset += pixel_width;
-
- advance_tab_mark_n (text, &tab_mark, len);
- }
- else
- {
- gint pixels_remaining;
- gint space_width;
- gint spaces_avail;
-
- len = 1;
-
- gdk_drawable_get_size (text->text_area, &pixels_remaining, NULL);
- pixels_remaining -= (LINE_WRAP_ROOM + running_offset);
-
- space_width = MARK_CURRENT_TEXT_FONT(text, &mark)->char_widths[' '];
-
- spaces_avail = pixels_remaining / space_width;
- spaces_avail = MIN (spaces_avail, tab_mark.to_next_tab);
-
- draw_bg_rect (text, &mark, running_offset, pixel_start_height,
- spaces_avail * space_width, LINE_HEIGHT (*lp), TRUE);
-
- running_offset += tab_mark.to_next_tab *
- MARK_CURRENT_TEXT_FONT(text, &mark)->char_widths[' '];
-
- advance_tab_mark (text, &tab_mark, '\t');
- }
-
- advance_mark_n (&mark, len);
- if (text->use_wchar)
- buffer.wc += len;
- else
- buffer.ch += len;
- chars -= len;
- }
-}
-
-static void
-draw_line_wrap (GtkText* text, guint height /* baseline height */)
-{
- gint width;
- GdkPixmap *bitmap;
- gint bitmap_width;
- gint bitmap_height;
-
- if (text->line_wrap)
- {
- bitmap = text->line_wrap_bitmap;
- bitmap_width = line_wrap_width;
- bitmap_height = line_wrap_height;
- }
- else
- {
- bitmap = text->line_arrow_bitmap;
- bitmap_width = line_arrow_width;
- bitmap_height = line_arrow_height;
- }
-
- gdk_drawable_get_size (text->text_area, &width, NULL);
- width -= LINE_WRAP_ROOM;
-
- gdk_gc_set_stipple (text->gc,
- bitmap);
-
- gdk_gc_set_fill (text->gc, GDK_STIPPLED);
-
- gdk_gc_set_foreground (text->gc, &GTK_WIDGET (text)->style->text[GTK_STATE_NORMAL]);
-
- gdk_gc_set_ts_origin (text->gc,
- width + 1,
- height - bitmap_height - 1);
-
- gdk_draw_rectangle (text->text_area,
- text->gc,
- TRUE,
- width + 1,
- height - bitmap_height - 1 /* one pixel above the baseline. */,
- bitmap_width,
- bitmap_height);
-
- gdk_gc_set_ts_origin (text->gc, 0, 0);
-
- gdk_gc_set_fill (text->gc, GDK_SOLID);
-}
-
-static void
-undraw_cursor (GtkText* text, gint absolute)
-{
- GtkOldEditable *old_editable = (GtkOldEditable *) text;
-
- TDEBUG (("in undraw_cursor\n"));
-
- if (absolute)
- text->cursor_drawn_level = 0;
-
- if ((text->cursor_drawn_level ++ == 0) &&
- (old_editable->selection_start_pos == old_editable->selection_end_pos) &&
- GTK_WIDGET_DRAWABLE (text) && text->line_start_cache)
- {
- GdkFont* font;
-
- g_assert(text->cursor_mark.property);
-
- font = MARK_CURRENT_FONT(text, &text->cursor_mark);
-
- draw_bg_rect (text, &text->cursor_mark,
- text->cursor_pos_x,
- text->cursor_pos_y - text->cursor_char_offset - font->ascent,
- 1, font->ascent + 1, FALSE);
-
- if (text->cursor_char)
- {
- if (font->type == GDK_FONT_FONT)
- gdk_gc_set_font (text->gc, font);
-
- gdk_gc_set_foreground (text->gc, MARK_CURRENT_FORE (text, &text->cursor_mark));
-
- gdk_draw_text_wc (text->text_area, font,
- text->gc,
- text->cursor_pos_x,
- text->cursor_pos_y - text->cursor_char_offset,
- &text->cursor_char,
- 1);
- }
- }
-}
-
-static gint
-drawn_cursor_min (GtkText* text)
-{
- GdkFont* font;
-
- g_assert(text->cursor_mark.property);
-
- font = MARK_CURRENT_FONT(text, &text->cursor_mark);
-
- return text->cursor_pos_y - text->cursor_char_offset - font->ascent;
-}
-
-static gint
-drawn_cursor_max (GtkText* text)
-{
- g_assert(text->cursor_mark.property);
-
- return text->cursor_pos_y - text->cursor_char_offset;
-}
-
-static void
-draw_cursor (GtkText* text, gint absolute)
-{
- GtkOldEditable *old_editable = (GtkOldEditable *)text;
-
- TDEBUG (("in draw_cursor\n"));
-
- if (absolute)
- text->cursor_drawn_level = 1;
-
- if ((--text->cursor_drawn_level == 0) &&
- old_editable->editable &&
- (old_editable->selection_start_pos == old_editable->selection_end_pos) &&
- GTK_WIDGET_DRAWABLE (text) && text->line_start_cache)
- {
- GdkFont* font;
-
- g_assert (text->cursor_mark.property);
-
- font = MARK_CURRENT_FONT (text, &text->cursor_mark);
-
- gdk_gc_set_foreground (text->gc, &GTK_WIDGET (text)->style->text[GTK_STATE_NORMAL]);
-
- gdk_draw_line (text->text_area, text->gc, text->cursor_pos_x,
- text->cursor_pos_y - text->cursor_char_offset,
- text->cursor_pos_x,
- text->cursor_pos_y - text->cursor_char_offset - font->ascent);
- }
-}
-
-static GdkGC *
-create_bg_gc (GtkText *text)
-{
- GdkGCValues values;
-
- values.tile = GTK_WIDGET (text)->style->bg_pixmap[GTK_STATE_NORMAL];
- values.fill = GDK_TILED;
-
- return gdk_gc_new_with_values (text->text_area, &values,
- GDK_GC_FILL | GDK_GC_TILE);
-}
-
-static void
-clear_area (GtkText *text, GdkRectangle *area)
-{
- GtkWidget *widget = GTK_WIDGET (text);
-
- if (text->bg_gc)
- {
- gint width, height;
-
- gdk_drawable_get_size (widget->style->bg_pixmap[GTK_STATE_NORMAL], &width, &height);
-
- gdk_gc_set_ts_origin (text->bg_gc,
- (- text->first_onscreen_hor_pixel) % width,
- (- text->first_onscreen_ver_pixel) % height);
-
- gdk_draw_rectangle (text->text_area, text->bg_gc, TRUE,
- area->x, area->y, area->width, area->height);
- }
- else
- gdk_window_clear_area (text->text_area, area->x, area->y, area->width, area->height);
-}
-
-static void
-expose_text (GtkText* text, GdkRectangle *area, gboolean cursor)
-{
- GList *cache = text->line_start_cache;
- gint pixels = - text->first_cut_pixels;
- gint min_y = MAX (0, area->y);
- gint max_y = MAX (0, area->y + area->height);
- gint height;
-
- gdk_drawable_get_size (text->text_area, NULL, &height);
- max_y = MIN (max_y, height);
-
- TDEBUG (("in expose x=%d y=%d w=%d h=%d\n", area->x, area->y, area->width, area->height));
-
- clear_area (text, area);
-
- for (; pixels < height; cache = cache->next)
- {
- if (pixels < max_y && (pixels + (gint)LINE_HEIGHT(CACHE_DATA(cache))) >= min_y)
- {
- draw_line (text, pixels, &CACHE_DATA(cache));
-
- if (CACHE_DATA(cache).wraps)
- draw_line_wrap (text, pixels + CACHE_DATA(cache).font_ascent);
- }
-
- if (cursor && gtk_widget_has_focus (GTK_WIDGET (text)))
- {
- if (CACHE_DATA(cache).start.index <= text->cursor_mark.index &&
- CACHE_DATA(cache).end.index >= text->cursor_mark.index)
- {
- /* We undraw and draw the cursor here to get the drawn
- * level right ... FIXME - maybe the second parameter
- * of draw_cursor should work differently
- */
- undraw_cursor (text, FALSE);
- draw_cursor (text, FALSE);
- }
- }
-
- pixels += LINE_HEIGHT(CACHE_DATA(cache));
-
- if (!cache->next)
- {
- fetch_lines_forward (text, 1);
-
- if (!cache->next)
- break;
- }
- }
-}
-
-static void
-gtk_text_update_text (GtkOldEditable *old_editable,
- gint start_pos,
- gint end_pos)
-{
- GtkText *text = GTK_TEXT (old_editable);
-
- GList *cache = text->line_start_cache;
- gint pixels = - text->first_cut_pixels;
- GdkRectangle area;
- gint width;
- gint height;
-
- if (end_pos < 0)
- end_pos = TEXT_LENGTH (text);
-
- if (end_pos < start_pos)
- return;
-
- gdk_drawable_get_size (text->text_area, &width, &height);
- area.x = 0;
- area.y = -1;
- area.width = width;
- area.height = 0;
-
- TDEBUG (("in expose span start=%d stop=%d\n", start_pos, end_pos));
-
- for (; pixels < height; cache = cache->next)
- {
- if (CACHE_DATA(cache).start.index < end_pos)
- {
- if (CACHE_DATA(cache).end.index >= start_pos)
- {
- if (area.y < 0)
- area.y = MAX(0,pixels);
- area.height = pixels + LINE_HEIGHT(CACHE_DATA(cache)) - area.y;
- }
- }
- else
- break;
-
- pixels += LINE_HEIGHT(CACHE_DATA(cache));
-
- if (!cache->next)
- {
- fetch_lines_forward (text, 1);
-
- if (!cache->next)
- break;
- }
- }
-
- if (area.y >= 0)
- expose_text (text, &area, TRUE);
-}
-
-static void
-recompute_geometry (GtkText* text)
-{
- GtkPropertyMark mark, start_mark;
- GList *new_lines;
- gint height;
- gint width;
-
- free_cache (text);
-
- mark = start_mark = set_vertical_scroll (text);
-
- /* We need a real start of a line when calling fetch_lines().
- * not the start of a wrapped line.
- */
- while (mark.index > 0 &&
- GTK_TEXT_INDEX (text, mark.index - 1) != LINE_DELIM)
- decrement_mark (&mark);
-
- gdk_drawable_get_size (text->text_area, &width, &height);
-
- /* Fetch an entire line, to make sure that we get all the text
- * we backed over above, in addition to enough text to fill up
- * the space vertically
- */
-
- new_lines = fetch_lines (text,
- &mark,
- NULL,
- FetchLinesCount,
- 1);
-
- mark = CACHE_DATA (g_list_last (new_lines)).end;
- if (!LAST_INDEX (text, mark))
- {
- advance_mark (&mark);
-
- new_lines = g_list_concat (new_lines,
- fetch_lines (text,
- &mark,
- NULL,
- FetchLinesPixels,
- height + text->first_cut_pixels));
- }
-
- /* Now work forward to the actual first onscreen line */
-
- while (CACHE_DATA (new_lines).start.index < start_mark.index)
- new_lines = new_lines->next;
-
- text->line_start_cache = new_lines;
-
- find_cursor (text, TRUE);
-}
-
-/**********************************************************************/
-/* Selection */
-/**********************************************************************/
-
-static void
-gtk_text_set_selection (GtkOldEditable *old_editable,
- gint start,
- gint end)
-{
- GtkText *text = GTK_TEXT (old_editable);
-
- guint start1, end1, start2, end2;
-
- if (end < 0)
- end = TEXT_LENGTH (text);
-
- start1 = MIN(start,end);
- end1 = MAX(start,end);
- start2 = MIN(old_editable->selection_start_pos, old_editable->selection_end_pos);
- end2 = MAX(old_editable->selection_start_pos, old_editable->selection_end_pos);
-
- if (start2 < start1)
- {
- guint tmp;
-
- tmp = start1; start1 = start2; start2 = tmp;
- tmp = end1; end1 = end2; end2 = tmp;
- }
-
- undraw_cursor (text, FALSE);
- old_editable->selection_start_pos = start;
- old_editable->selection_end_pos = end;
- draw_cursor (text, FALSE);
-
- /* Expose only what changed */
-
- if (start1 < start2)
- gtk_text_update_text (old_editable, start1, MIN(end1, start2));
-
- if (end2 > end1)
- gtk_text_update_text (old_editable, MAX(end1, start2), end2);
- else if (end2 < end1)
- gtk_text_update_text (old_editable, end2, end1);
-}
-
-
-/**********************************************************************/
-/* Debug */
-/**********************************************************************/
-
-#ifdef DEBUG_GTK_TEXT
-static void
-gtk_text_show_cache_line (GtkText *text, GList *cache,
- const char* what, const char* func, gint line)
-{
- LineParams *lp = &CACHE_DATA(cache);
- gint i;
-
- if (cache == text->line_start_cache)
- g_message ("Line Start Cache: ");
-
- if (cache == text->current_line)
- g_message("Current Line: ");
-
- g_message ("%s:%d: cache line %s s=%d,e=%d,lh=%d (",
- func,
- line,
- what,
- lp->start.index,
- lp->end.index,
- LINE_HEIGHT(*lp));
-
- for (i = lp->start.index; i < (lp->end.index + lp->wraps); i += 1)
- g_message ("%c", GTK_TEXT_INDEX (text, i));
-
- g_message (")\n");
-}
-
-static void
-gtk_text_show_cache (GtkText *text, const char* func, gint line)
-{
- GList *l = text->line_start_cache;
-
- if (!l) {
- return;
- }
-
- /* back up to the absolute beginning of the line cache */
- while (l->prev)
- l = l->prev;
-
- g_message ("*** line cache ***\n");
- for (; l; l = l->next)
- gtk_text_show_cache_line (text, l, "all", func, line);
-}
-
-static void
-gtk_text_assert_mark (GtkText *text,
- GtkPropertyMark *mark,
- GtkPropertyMark *before,
- GtkPropertyMark *after,
- const gchar *msg,
- const gchar *where,
- gint line)
-{
- GtkPropertyMark correct_mark = find_mark (text, mark->index);
-
- if (mark->offset != correct_mark.offset ||
- mark->property != correct_mark.property)
- g_warning ("incorrect %s text property marker in %s:%d, index %d -- bad!", where, msg, line, mark->index);
-}
-
-static void
-gtk_text_assert (GtkText *text,
- const gchar *msg,
- gint line)
-{
- GList* cache = text->line_start_cache;
- GtkPropertyMark* before_mark = NULL;
- GtkPropertyMark* after_mark = NULL;
-
- gtk_text_show_props (text, msg, line);
-
- for (; cache->prev; cache = cache->prev)
- /* nothing */;
-
- g_message ("*** line markers ***\n");
-
- for (; cache; cache = cache->next)
- {
- after_mark = &CACHE_DATA(cache).end;
- gtk_text_assert_mark (text, &CACHE_DATA(cache).start, before_mark, after_mark, msg, "start", line);
- before_mark = &CACHE_DATA(cache).start;
-
- if (cache->next)
- after_mark = &CACHE_DATA(cache->next).start;
- else
- after_mark = NULL;
-
- gtk_text_assert_mark (text, &CACHE_DATA(cache).end, before_mark, after_mark, msg, "end", line);
- before_mark = &CACHE_DATA(cache).end;
- }
-}
-
-static void
-gtk_text_show_adj (GtkText *text,
- GtkAdjustment *adj,
- const char* what,
- const char* func,
- gint line)
-{
- g_message ("*** adjustment ***\n");
-
- g_message ("%s:%d: %s adjustment l=%.1f u=%.1f v=%.1f si=%.1f pi=%.1f ps=%.1f\n",
- func,
- line,
- what,
- adj->lower,
- adj->upper,
- adj->value,
- adj->step_increment,
- adj->page_increment,
- adj->page_size);
-}
-
-static void
-gtk_text_show_props (GtkText *text,
- const char* msg,
- int line)
-{
- GList* props = text->text_properties;
- int proplen = 0;
-
- g_message ("%s:%d: ", msg, line);
-
- for (; props; props = props->next)
- {
- TextProperty *p = (TextProperty*)props->data;
-
- proplen += p->length;
-
- g_message ("[%d,%p,", p->length, p);
- if (p->flags & PROPERTY_FONT)
- g_message ("%p,", p->font);
- else
- g_message ("-,");
- if (p->flags & PROPERTY_FOREGROUND)
- g_message ("%ld, ", p->fore_color.pixel);
- else
- g_message ("-,");
- if (p->flags & PROPERTY_BACKGROUND)
- g_message ("%ld] ", p->back_color.pixel);
- else
- g_message ("-] ");
- }
-
- g_message ("\n");
-
- if (proplen - 1 != TEXT_LENGTH(text))
- g_warning ("incorrect property list length in %s:%d -- bad!", msg, line);
-}
-#endif
-
-#define __GTK_TEXT_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtktext.h b/gtk/gtktext.h
deleted file mode 100644
index 8bfa71aa21..0000000000
--- a/gtk/gtktext.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifdef GTK_ENABLE_BROKEN
-
-#ifndef __GTK_TEXT_H__
-#define __GTK_TEXT_H__
-
-
-#include <gtk/gtkoldeditable.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TEXT (gtk_text_get_type ())
-#define GTK_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT, GtkText))
-#define GTK_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT, GtkTextClass))
-#define GTK_IS_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT))
-#define GTK_IS_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT))
-#define GTK_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT, GtkTextClass))
-
-
-typedef struct _GtkTextFont GtkTextFont;
-typedef struct _GtkPropertyMark GtkPropertyMark;
-typedef struct _GtkText GtkText;
-typedef struct _GtkTextClass GtkTextClass;
-
-struct _GtkPropertyMark
-{
- /* Position in list. */
- GList* property;
-
- /* Offset into that property. */
- guint offset;
-
- /* Current index. */
- guint index;
-};
-
-struct _GtkText
-{
- GtkOldEditable old_editable;
-
- GdkWindow *text_area;
-
- GtkAdjustment *hadj;
- GtkAdjustment *vadj;
-
- GdkGC *gc;
-
- GdkPixmap* line_wrap_bitmap;
- GdkPixmap* line_arrow_bitmap;
-
- /* GAPPED TEXT SEGMENT */
-
- /* The text, a single segment of text a'la emacs, with a gap
- * where insertion occurs. */
- union { GdkWChar *wc; guchar *ch; } text;
- /* The allocated length of the text segment. */
- guint text_len;
- /* The gap position, index into address where a char
- * should be inserted. */
- guint gap_position;
- /* The gap size, s.t. *(text + gap_position + gap_size) is
- * the first valid character following the gap. */
- guint gap_size;
- /* The last character position, index into address where a
- * character should be appeneded. Thus, text_end - gap_size
- * is the length of the actual data. */
- guint text_end;
- /* LINE START CACHE */
-
- /* A cache of line-start information. Data is a LineParam*. */
- GList *line_start_cache;
- /* Index to the start of the first visible line. */
- guint first_line_start_index;
- /* The number of pixels cut off of the top line. */
- guint first_cut_pixels;
- /* First visible horizontal pixel. */
- guint first_onscreen_hor_pixel;
- /* First visible vertical pixel. */
- guint first_onscreen_ver_pixel;
-
- /* FLAGS */
-
- /* True iff this buffer is wrapping lines, otherwise it is using a
- * horizontal scrollbar. */
- guint line_wrap : 1;
- guint word_wrap : 1;
- /* If a fontset is supplied for the widget, use_wchar become true,
- * and we use GdkWchar as the encoding of text. */
- guint use_wchar : 1;
-
- /* Frozen, don't do updates. @@@ fixme */
- guint freeze_count;
- /* TEXT PROPERTIES */
-
- /* A doubly-linked-list containing TextProperty objects. */
- GList *text_properties;
- /* The end of this list. */
- GList *text_properties_end;
- /* The first node before or on the point along with its offset to
- * the point and the buffer's current point. This is the only
- * PropertyMark whose index is guaranteed to remain correct
- * following a buffer insertion or deletion. */
- GtkPropertyMark point;
-
- /* SCRATCH AREA */
-
- union { GdkWChar *wc; guchar *ch; } scratch_buffer;
- guint scratch_buffer_len;
-
- /* SCROLLING */
-
- gint last_ver_value;
-
- /* CURSOR */
-
- gint cursor_pos_x; /* Position of cursor. */
- gint cursor_pos_y; /* Baseline of line cursor is drawn on. */
- GtkPropertyMark cursor_mark; /* Where it is in the buffer. */
- GdkWChar cursor_char; /* Character to redraw. */
- gchar cursor_char_offset; /* Distance from baseline of the font. */
- gint cursor_virtual_x; /* Where it would be if it could be. */
- gint cursor_drawn_level; /* How many people have undrawn. */
-
- /* Current Line */
-
- GList *current_line;
-
- /* Tab Stops */
-
- GList *tab_stops;
- gint default_tab_width;
-
- GtkTextFont *current_font; /* Text font for current style */
-
- /* Timer used for auto-scrolling off ends */
- gint timer;
-
- guint button; /* currently pressed mouse button */
- GdkGC *bg_gc; /* gc for drawing background pixmap */
-};
-
-struct _GtkTextClass
-{
- GtkOldEditableClass parent_class;
-
- void (*set_scroll_adjustments) (GtkText *text,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
-};
-
-
-GType gtk_text_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_text_new (GtkAdjustment *hadj,
- GtkAdjustment *vadj);
-void gtk_text_set_editable (GtkText *text,
- gboolean editable);
-void gtk_text_set_word_wrap (GtkText *text,
- gboolean word_wrap);
-void gtk_text_set_line_wrap (GtkText *text,
- gboolean line_wrap);
-void gtk_text_set_adjustments (GtkText *text,
- GtkAdjustment *hadj,
- GtkAdjustment *vadj);
-void gtk_text_set_point (GtkText *text,
- guint index);
-guint gtk_text_get_point (GtkText *text);
-guint gtk_text_get_length (GtkText *text);
-void gtk_text_freeze (GtkText *text);
-void gtk_text_thaw (GtkText *text);
-void gtk_text_insert (GtkText *text,
- GdkFont *font,
- const GdkColor *fore,
- const GdkColor *back,
- const char *chars,
- gint length);
-gboolean gtk_text_backward_delete (GtkText *text,
- guint nchars);
-gboolean gtk_text_forward_delete (GtkText *text,
- guint nchars);
-
-#define GTK_TEXT_INDEX(t, index) (((t)->use_wchar) \
- ? ((index) < (t)->gap_position ? (t)->text.wc[index] : \
- (t)->text.wc[(index)+(t)->gap_size]) \
- : ((index) < (t)->gap_position ? (t)->text.ch[index] : \
- (t)->text.ch[(index)+(t)->gap_size]))
-
-G_END_DECLS
-
-#endif /* __GTK_TEXT_H__ */
-
-#endif /* GTK_ENABLE_BROKEN */
diff --git a/gtk/gtktextbuffer.h b/gtk/gtktextbuffer.h
index d160c49065..3a773e50ea 100644
--- a/gtk/gtktextbuffer.h
+++ b/gtk/gtktextbuffer.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktextbufferrichtext.h b/gtk/gtktextbufferrichtext.h
index bbbf6e2b0d..614b43dcfd 100644
--- a/gtk/gtktextbufferrichtext.h
+++ b/gtk/gtktextbufferrichtext.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktextchild.h b/gtk/gtktextchild.h
index 20cee010bc..7835e68f91 100644
--- a/gtk/gtktextchild.h
+++ b/gtk/gtktextchild.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktextiter.h b/gtk/gtktextiter.h
index 44ba8721e7..046d436802 100644
--- a/gtk/gtktextiter.h
+++ b/gtk/gtktextiter.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktextmark.h b/gtk/gtktextmark.h
index 87118df7ec..5bddf92739 100644
--- a/gtk/gtktextmark.h
+++ b/gtk/gtktextmark.h
@@ -47,7 +47,7 @@
*
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktexttag.h b/gtk/gtktexttag.h
index 406cc393c7..39c9f73d92 100644
--- a/gtk/gtktexttag.h
+++ b/gtk/gtktexttag.h
@@ -47,7 +47,7 @@
*
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktexttagtable.h b/gtk/gtktexttagtable.h
index ecc172d1c9..f33ae8f797 100644
--- a/gtk/gtktexttagtable.h
+++ b/gtk/gtktexttagtable.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h
index c3fa8024f9..a8d65dc360 100644
--- a/gtk/gtktextview.h
+++ b/gtk/gtktextview.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktipsquery.c b/gtk/gtktipsquery.c
deleted file mode 100644
index 4963de2288..0000000000
--- a/gtk/gtktipsquery.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkQueryTips: Query onscreen widgets for their tooltips
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include "gtktipsquery.h"
-#include "gtksignal.h"
-#include "gtktooltips.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-
-
-/* --- arguments --- */
-enum {
- ARG_0,
- ARG_EMIT_ALWAYS,
- ARG_CALLER,
- ARG_LABEL_INACTIVE,
- ARG_LABEL_NO_TIP
-};
-
-
-/* --- signals --- */
-enum
-{
- SIGNAL_START_QUERY,
- SIGNAL_STOP_QUERY,
- SIGNAL_WIDGET_ENTERED,
- SIGNAL_WIDGET_SELECTED,
- SIGNAL_LAST
-};
-
-/* --- prototypes --- */
-static void gtk_tips_query_class_init (GtkTipsQueryClass *class);
-static void gtk_tips_query_init (GtkTipsQuery *tips_query);
-static void gtk_tips_query_destroy (GtkObject *object);
-static gint gtk_tips_query_event (GtkWidget *widget,
- GdkEvent *event);
-static void gtk_tips_query_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_tips_query_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_tips_query_real_start_query (GtkTipsQuery *tips_query);
-static void gtk_tips_query_real_stop_query (GtkTipsQuery *tips_query);
-static void gtk_tips_query_widget_entered (GtkTipsQuery *tips_query,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private);
-
-
-/* --- variables --- */
-static GtkLabelClass *parent_class = NULL;
-static guint tips_query_signals[SIGNAL_LAST] = { 0 };
-
-
-/* --- functions --- */
-GtkType
-gtk_tips_query_get_type (void)
-{
- static GtkType tips_query_type = 0;
-
- if (!tips_query_type)
- {
- static const GtkTypeInfo tips_query_info =
- {
- "GtkTipsQuery",
- sizeof (GtkTipsQuery),
- sizeof (GtkTipsQueryClass),
- (GtkClassInitFunc) gtk_tips_query_class_init,
- (GtkObjectInitFunc) gtk_tips_query_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkTipsQuery");
- tips_query_type = gtk_type_unique (gtk_label_get_type (), &tips_query_info);
- }
-
- return tips_query_type;
-}
-
-static void
-gtk_tips_query_class_init (GtkTipsQueryClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
-
- parent_class = gtk_type_class (gtk_label_get_type ());
-
-
- object_class->set_arg = gtk_tips_query_set_arg;
- object_class->get_arg = gtk_tips_query_get_arg;
- object_class->destroy = gtk_tips_query_destroy;
-
- widget_class->event = gtk_tips_query_event;
-
- class->start_query = gtk_tips_query_real_start_query;
- class->stop_query = gtk_tips_query_real_stop_query;
- class->widget_entered = gtk_tips_query_widget_entered;
- class->widget_selected = NULL;
-
- gtk_object_add_arg_type ("GtkTipsQuery::emit-always", GTK_TYPE_BOOL, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_EMIT_ALWAYS);
- gtk_object_add_arg_type ("GtkTipsQuery::caller", GTK_TYPE_WIDGET, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_CALLER);
- gtk_object_add_arg_type ("GtkTipsQuery::label-inactive", GTK_TYPE_STRING, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_LABEL_INACTIVE);
- gtk_object_add_arg_type ("GtkTipsQuery::label-no-tip", GTK_TYPE_STRING, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_LABEL_NO_TIP);
-
- tips_query_signals[SIGNAL_START_QUERY] =
- gtk_signal_new (I_("start-query"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTipsQueryClass, start_query),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- tips_query_signals[SIGNAL_STOP_QUERY] =
- gtk_signal_new (I_("stop-query"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTipsQueryClass, stop_query),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- tips_query_signals[SIGNAL_WIDGET_ENTERED] =
- gtk_signal_new (I_("widget-entered"),
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTipsQueryClass, widget_entered),
- _gtk_marshal_VOID__OBJECT_STRING_STRING,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_WIDGET,
- GTK_TYPE_STRING,
- GTK_TYPE_STRING);
- tips_query_signals[SIGNAL_WIDGET_SELECTED] =
- g_signal_new (I_("widget-selected"),
- G_TYPE_FROM_CLASS(object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GtkTipsQueryClass, widget_selected),
- _gtk_boolean_handled_accumulator, NULL,
- _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING_BOXED,
- G_TYPE_BOOLEAN, 4,
- GTK_TYPE_WIDGET,
- G_TYPE_STRING,
- G_TYPE_STRING,
- GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
-}
-
-static void
-gtk_tips_query_init (GtkTipsQuery *tips_query)
-{
- tips_query->emit_always = FALSE;
- tips_query->in_query = FALSE;
- tips_query->label_inactive = g_strdup ("");
- tips_query->label_no_tip = g_strdup (_("--- No Tip ---"));
- tips_query->caller = NULL;
- tips_query->last_crossed = NULL;
- tips_query->query_cursor = NULL;
-
- gtk_label_set_text (GTK_LABEL (tips_query), tips_query->label_inactive);
-}
-
-static void
-gtk_tips_query_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkTipsQuery *tips_query;
-
- tips_query = GTK_TIPS_QUERY (object);
-
- switch (arg_id)
- {
- case ARG_EMIT_ALWAYS:
- tips_query->emit_always = (GTK_VALUE_BOOL (*arg) != FALSE);
- break;
- case ARG_CALLER:
- gtk_tips_query_set_caller (tips_query, GTK_WIDGET (GTK_VALUE_OBJECT (*arg)));
- break;
- case ARG_LABEL_INACTIVE:
- gtk_tips_query_set_labels (tips_query, GTK_VALUE_STRING (*arg), tips_query->label_no_tip);
- break;
- case ARG_LABEL_NO_TIP:
- gtk_tips_query_set_labels (tips_query, tips_query->label_inactive, GTK_VALUE_STRING (*arg));
- break;
- default:
- break;
- }
-}
-
-static void
-gtk_tips_query_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
-{
- GtkTipsQuery *tips_query;
-
- tips_query = GTK_TIPS_QUERY (object);
-
- switch (arg_id)
- {
- case ARG_EMIT_ALWAYS:
- GTK_VALUE_BOOL (*arg) = tips_query->emit_always;
- break;
- case ARG_CALLER:
- GTK_VALUE_OBJECT (*arg) = (GtkObject*) tips_query->caller;
- break;
- case ARG_LABEL_INACTIVE:
- GTK_VALUE_STRING (*arg) = g_strdup (tips_query->label_inactive);
- break;
- case ARG_LABEL_NO_TIP:
- GTK_VALUE_STRING (*arg) = g_strdup (tips_query->label_no_tip);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-gtk_tips_query_destroy (GtkObject *object)
-{
- GtkTipsQuery *tips_query = GTK_TIPS_QUERY (object);
-
- if (tips_query->in_query)
- gtk_tips_query_stop_query (tips_query);
-
- gtk_tips_query_set_caller (tips_query, NULL);
-
- g_free (tips_query->label_inactive);
- tips_query->label_inactive = NULL;
- g_free (tips_query->label_no_tip);
- tips_query->label_no_tip = NULL;
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-GtkWidget*
-gtk_tips_query_new (void)
-{
- GtkTipsQuery *tips_query;
-
- tips_query = gtk_type_new (gtk_tips_query_get_type ());
-
- return GTK_WIDGET (tips_query);
-}
-
-void
-gtk_tips_query_set_labels (GtkTipsQuery *tips_query,
- const gchar *label_inactive,
- const gchar *label_no_tip)
-{
- gchar *old;
-
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
- g_return_if_fail (label_inactive != NULL);
- g_return_if_fail (label_no_tip != NULL);
-
- old = tips_query->label_inactive;
- tips_query->label_inactive = g_strdup (label_inactive);
- g_free (old);
- old = tips_query->label_no_tip;
- tips_query->label_no_tip = g_strdup (label_no_tip);
- g_free (old);
-}
-
-void
-gtk_tips_query_set_caller (GtkTipsQuery *tips_query,
- GtkWidget *caller)
-{
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
- g_return_if_fail (tips_query->in_query == FALSE);
- if (caller)
- g_return_if_fail (GTK_IS_WIDGET (caller));
-
- if (caller)
- g_object_ref (caller);
-
- if (tips_query->caller)
- g_object_unref (tips_query->caller);
-
- tips_query->caller = caller;
-}
-
-void
-gtk_tips_query_start_query (GtkTipsQuery *tips_query)
-{
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
- g_return_if_fail (tips_query->in_query == FALSE);
- g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (tips_query)));
-
- tips_query->in_query = TRUE;
- gtk_signal_emit (GTK_OBJECT (tips_query), tips_query_signals[SIGNAL_START_QUERY]);
-}
-
-void
-gtk_tips_query_stop_query (GtkTipsQuery *tips_query)
-{
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
- g_return_if_fail (tips_query->in_query == TRUE);
-
- gtk_signal_emit (GTK_OBJECT (tips_query), tips_query_signals[SIGNAL_STOP_QUERY]);
- tips_query->in_query = FALSE;
-}
-
-static void
-gtk_tips_query_real_start_query (GtkTipsQuery *tips_query)
-{
- gint failure;
-
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
-
- tips_query->query_cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (tips_query)),
- GDK_QUESTION_ARROW);
- failure = gdk_pointer_grab (GTK_WIDGET (tips_query)->window,
- TRUE,
- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
- GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK,
- NULL,
- tips_query->query_cursor,
- GDK_CURRENT_TIME);
- if (failure)
- {
- gdk_cursor_unref (tips_query->query_cursor);
- tips_query->query_cursor = NULL;
- }
- gtk_grab_add (GTK_WIDGET (tips_query));
-}
-
-static void
-gtk_tips_query_real_stop_query (GtkTipsQuery *tips_query)
-{
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
-
- gtk_grab_remove (GTK_WIDGET (tips_query));
- if (tips_query->query_cursor)
- {
- gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (tips_query)),
- GDK_CURRENT_TIME);
- gdk_cursor_unref (tips_query->query_cursor);
- tips_query->query_cursor = NULL;
- }
- if (tips_query->last_crossed)
- {
- g_object_unref (tips_query->last_crossed);
- tips_query->last_crossed = NULL;
- }
-
- gtk_label_set_text (GTK_LABEL (tips_query), tips_query->label_inactive);
-}
-
-static void
-gtk_tips_query_widget_entered (GtkTipsQuery *tips_query,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private)
-{
- g_return_if_fail (GTK_IS_TIPS_QUERY (tips_query));
-
- if (!tip_text)
- tip_text = tips_query->label_no_tip;
-
- if (!g_str_equal (GTK_LABEL (tips_query)->label, (gchar*) tip_text))
- gtk_label_set_text (GTK_LABEL (tips_query), tip_text);
-}
-
-static void
-gtk_tips_query_emit_widget_entered (GtkTipsQuery *tips_query,
- GtkWidget *widget)
-{
- GtkTooltipsData *tdata;
-
- if (widget == (GtkWidget*) tips_query)
- widget = NULL;
-
- if (widget)
- tdata = gtk_tooltips_data_get (widget);
- else
- tdata = NULL;
-
- if (!widget && tips_query->last_crossed)
- {
- gtk_signal_emit (GTK_OBJECT (tips_query),
- tips_query_signals[SIGNAL_WIDGET_ENTERED],
- NULL,
- NULL,
- NULL);
- g_object_unref (tips_query->last_crossed);
- tips_query->last_crossed = NULL;
- }
- else if (widget && widget != tips_query->last_crossed)
- {
- g_object_ref (widget);
- if (tdata || tips_query->emit_always)
- gtk_signal_emit (GTK_OBJECT (tips_query),
- tips_query_signals[SIGNAL_WIDGET_ENTERED],
- widget,
- tdata ? tdata->tip_text : NULL,
- tdata ? tdata->tip_private : NULL);
- if (tips_query->last_crossed)
- g_object_unref (tips_query->last_crossed);
- tips_query->last_crossed = widget;
- }
-}
-
-static gint
-gtk_tips_query_event (GtkWidget *widget,
- GdkEvent *event)
-{
- GtkTipsQuery *tips_query;
- GtkWidget *event_widget;
- gboolean event_handled;
-
- g_return_val_if_fail (GTK_IS_TIPS_QUERY (widget), FALSE);
-
- tips_query = GTK_TIPS_QUERY (widget);
- if (!tips_query->in_query)
- {
- if (GTK_WIDGET_CLASS (parent_class)->event)
- return GTK_WIDGET_CLASS (parent_class)->event (widget, event);
- else
- return FALSE;
- }
-
- event_widget = gtk_get_event_widget (event);
-
- event_handled = FALSE;
- switch (event->type)
- {
- GdkWindow *pointer_window;
-
- case GDK_LEAVE_NOTIFY:
- if (event_widget)
- pointer_window = gdk_window_get_pointer (event_widget->window, NULL, NULL, NULL);
- else
- pointer_window = NULL;
- event_widget = NULL;
- if (pointer_window)
- {
- gpointer event_widget_ptr;
- gdk_window_get_user_data (pointer_window, &event_widget_ptr);
- event_widget = event_widget_ptr;
- }
- gtk_tips_query_emit_widget_entered (tips_query, event_widget);
- event_handled = TRUE;
- break;
-
- case GDK_ENTER_NOTIFY:
- gtk_tips_query_emit_widget_entered (tips_query, event_widget);
- event_handled = TRUE;
- break;
-
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- if (event_widget)
- {
- if (event_widget == (GtkWidget*) tips_query ||
- event_widget == tips_query->caller)
- gtk_tips_query_stop_query (tips_query);
- else
- {
- gint stop;
- GtkTooltipsData *tdata;
-
- stop = TRUE;
- tdata = gtk_tooltips_data_get (event_widget);
- if (tdata || tips_query->emit_always)
- gtk_signal_emit (GTK_OBJECT (tips_query),
- tips_query_signals[SIGNAL_WIDGET_SELECTED],
- event_widget,
- tdata ? tdata->tip_text : NULL,
- tdata ? tdata->tip_private : NULL,
- event,
- &stop);
-
- if (stop)
- gtk_tips_query_stop_query (tips_query);
- }
- }
- event_handled = TRUE;
- break;
-
- default:
- break;
- }
-
- return event_handled;
-}
-
-#define __GTK_TIPS_QUERY_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtktipsquery.h b/gtk/gtktipsquery.h
deleted file mode 100644
index b792d81219..0000000000
--- a/gtk/gtktipsquery.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkQueryTips: Query onscreen widgets for their tooltips
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_TIPS_QUERY_H__
-#define __GTK_TIPS_QUERY_H__
-
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-/* --- type macros --- */
-#define GTK_TYPE_TIPS_QUERY (gtk_tips_query_get_type ())
-#define GTK_TIPS_QUERY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TIPS_QUERY, GtkTipsQuery))
-#define GTK_TIPS_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TIPS_QUERY, GtkTipsQueryClass))
-#define GTK_IS_TIPS_QUERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TIPS_QUERY))
-#define GTK_IS_TIPS_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TIPS_QUERY))
-#define GTK_TIPS_QUERY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TIPS_QUERY, GtkTipsQueryClass))
-
-
-/* --- typedefs --- */
-typedef struct _GtkTipsQuery GtkTipsQuery;
-typedef struct _GtkTipsQueryClass GtkTipsQueryClass;
-
-
-/* --- structures --- */
-struct _GtkTipsQuery
-{
- GtkLabel label;
-
- guint emit_always : 1;
- guint in_query : 1;
- gchar *label_inactive;
- gchar *label_no_tip;
-
- GtkWidget *caller;
- GtkWidget *last_crossed;
-
- GdkCursor *query_cursor;
-};
-
-struct _GtkTipsQueryClass
-{
- GtkLabelClass parent_class;
-
- void (*start_query) (GtkTipsQuery *tips_query);
- void (*stop_query) (GtkTipsQuery *tips_query);
- void (*widget_entered) (GtkTipsQuery *tips_query,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private);
- gint (*widget_selected) (GtkTipsQuery *tips_query,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private,
- GdkEventButton *event);
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-
-/* --- prototypes --- */
-GType gtk_tips_query_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_tips_query_new (void);
-void gtk_tips_query_start_query (GtkTipsQuery *tips_query);
-void gtk_tips_query_stop_query (GtkTipsQuery *tips_query);
-void gtk_tips_query_set_caller (GtkTipsQuery *tips_query,
- GtkWidget *caller);
-void gtk_tips_query_set_labels (GtkTipsQuery *tips_query,
- const gchar *label_inactive,
- const gchar *label_no_tip);
-
-G_END_DECLS
-
-#endif /* __GTK_TIPS_QUERY_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtktoggleaction.h b/gtk/gtktoggleaction.h
index 5f72546326..2cdf3fd184 100644
--- a/gtk/gtktoggleaction.h
+++ b/gtk/gtktoggleaction.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktogglebutton.h b/gtk/gtktogglebutton.h
index 686dab8614..321b472ffb 100644
--- a/gtk/gtktogglebutton.h
+++ b/gtk/gtktogglebutton.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -88,10 +88,6 @@ void gtk_toggle_button_set_inconsistent (GtkToggleButton *toggle_button,
gboolean gtk_toggle_button_get_inconsistent (GtkToggleButton *toggle_button);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_toggle_button_set_state gtk_toggle_button_set_active
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_END_DECLS
#endif /* __GTK_TOGGLE_BUTTON_H__ */
diff --git a/gtk/gtktoggletoolbutton.h b/gtk/gtktoggletoolbutton.h
index bc04d1e45e..90314327c9 100644
--- a/gtk/gtktoggletoolbutton.h
+++ b/gtk/gtktoggletoolbutton.h
@@ -20,7 +20,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c
index b56abdf462..dcd0bc988b 100644
--- a/gtk/gtktoolbar.c
+++ b/gtk/gtktoolbar.c
@@ -219,20 +219,7 @@ static void gtk_toolbar_arrow_button_clicked (GtkWidget *button,
GtkToolbar *toolbar);
static void gtk_toolbar_update_button_relief (GtkToolbar *toolbar);
static gboolean gtk_toolbar_popup_menu (GtkWidget *toolbar);
-static GtkWidget *internal_insert_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position,
- gboolean use_stock);
static void gtk_toolbar_reconfigured (GtkToolbar *toolbar);
-static gboolean gtk_toolbar_check_new_api (GtkToolbar *toolbar);
-static gboolean gtk_toolbar_check_old_api (GtkToolbar *toolbar);
static GtkReliefStyle get_button_relief (GtkToolbar *toolbar);
static gint get_internal_padding (GtkToolbar *toolbar);
@@ -246,12 +233,6 @@ static ToolbarContent *toolbar_content_new_tool_item (GtkToolbar
GtkToolItem *item,
gboolean is_placeholder,
gint pos);
-static ToolbarContent *toolbar_content_new_compatibility (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- GtkWidget *icon,
- GtkWidget *label,
- gint pos);
static void toolbar_content_remove (ToolbarContent *content,
GtkToolbar *toolbar);
static void toolbar_content_free (ToolbarContent *content);
@@ -503,23 +484,6 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
P_("If an arrow should be shown if the toolbar doesn't fit"),
TRUE,
GTK_PARAM_READWRITE));
-
-
- /**
- * GtkToolbar:tooltips:
- *
- * If the tooltips of the toolbar should be active or not.
- *
- * Since: 2.8
- */
- g_object_class_install_property (gobject_class,
- PROP_TOOLTIPS,
- g_param_spec_boolean ("tooltips",
- P_("Tooltips"),
- P_("If the tooltips of the toolbar should be active or not"),
- TRUE,
- GTK_PARAM_READWRITE));
-
/**
* GtkToolbar:icon-size:
@@ -676,9 +640,7 @@ gtk_toolbar_init (GtkToolbar *toolbar)
toolbar->style = DEFAULT_TOOLBAR_STYLE;
toolbar->icon_size = DEFAULT_ICON_SIZE;
priv->animation = DEFAULT_ANIMATION_STATE;
- toolbar->tooltips = gtk_tooltips_new ();
- g_object_ref_sink (toolbar->tooltips);
-
+
priv->arrow_button = gtk_toggle_button_new ();
g_signal_connect (priv->arrow_button, "button-press-event",
G_CALLBACK (gtk_toolbar_arrow_button_press), toolbar);
@@ -728,9 +690,6 @@ gtk_toolbar_set_property (GObject *object,
case PROP_SHOW_ARROW:
gtk_toolbar_set_show_arrow (toolbar, g_value_get_boolean (value));
break;
- case PROP_TOOLTIPS:
- gtk_toolbar_set_tooltips (toolbar, g_value_get_boolean (value));
- break;
case PROP_ICON_SIZE:
gtk_toolbar_set_icon_size (toolbar, g_value_get_int (value));
break;
@@ -766,9 +725,6 @@ gtk_toolbar_get_property (GObject *object,
case PROP_SHOW_ARROW:
g_value_set_boolean (value, priv->show_arrow);
break;
- case PROP_TOOLTIPS:
- g_value_set_boolean (value, gtk_toolbar_get_tooltips (toolbar));
- break;
case PROP_ICON_SIZE:
g_value_set_int (value, gtk_toolbar_get_icon_size (toolbar));
break;
@@ -2283,8 +2239,6 @@ gtk_toolbar_set_drop_highlight_item (GtkToolbar *toolbar,
g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
g_return_if_fail (tool_item == NULL || GTK_IS_TOOL_ITEM (tool_item));
- gtk_toolbar_check_new_api (toolbar);
-
priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
if (!tool_item)
@@ -2466,10 +2420,7 @@ gtk_toolbar_add (GtkContainer *container,
{
GtkToolbar *toolbar = GTK_TOOLBAR (container);
- if (GTK_IS_TOOL_ITEM (widget))
- gtk_toolbar_insert (toolbar, GTK_TOOL_ITEM (widget), -1);
- else
- gtk_toolbar_append_widget (toolbar, widget, NULL, NULL);
+ gtk_toolbar_insert (toolbar, GTK_TOOL_ITEM (widget), -1);
}
static void
@@ -2763,9 +2714,6 @@ gtk_toolbar_insert (GtkToolbar *toolbar,
g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
g_return_if_fail (GTK_IS_TOOL_ITEM (item));
- if (!gtk_toolbar_check_new_api (toolbar))
- return;
-
if (pos >= 0)
pos = logical_to_physical (toolbar, pos);
@@ -2796,9 +2744,6 @@ gtk_toolbar_get_item_index (GtkToolbar *toolbar,
g_return_val_if_fail (GTK_IS_TOOL_ITEM (item), -1);
g_return_val_if_fail (GTK_WIDGET (item)->parent == GTK_WIDGET (toolbar), -1);
- if (!gtk_toolbar_check_new_api (toolbar))
- return -1;
-
priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
n = 0;
@@ -2819,43 +2764,6 @@ gtk_toolbar_get_item_index (GtkToolbar *toolbar,
}
/**
- * gtk_toolbar_set_orientation:
- * @toolbar: a #GtkToolbar.
- * @orientation: a new #GtkOrientation.
- *
- * Sets whether a toolbar should appear horizontally or vertically.
- *
- * Deprecated: 2.16: Use gtk_orientable_set_orientation() instead.
- **/
-void
-gtk_toolbar_set_orientation (GtkToolbar *toolbar,
- GtkOrientation orientation)
-{
- g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
-
- g_signal_emit (toolbar, toolbar_signals[ORIENTATION_CHANGED], 0, orientation);
-}
-
-/**
- * gtk_toolbar_get_orientation:
- * @toolbar: a #GtkToolbar
- *
- * Retrieves the current orientation of the toolbar. See
- * gtk_toolbar_set_orientation().
- *
- * Return value: the orientation
- *
- * Deprecated: 2.16: Use gtk_orientable_get_orientation() instead.
- **/
-GtkOrientation
-gtk_toolbar_get_orientation (GtkToolbar *toolbar)
-{
- g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL);
-
- return toolbar->orientation;
-}
-
-/**
* gtk_toolbar_set_style:
* @toolbar: a #GtkToolbar.
* @style: the new style for @toolbar.
@@ -2922,50 +2830,6 @@ gtk_toolbar_unset_style (GtkToolbar *toolbar)
}
/**
- * gtk_toolbar_set_tooltips:
- * @toolbar: a #GtkToolbar.
- * @enable: set to %FALSE to disable the tooltips, or %TRUE to enable them.
- *
- * Sets if the tooltips of a toolbar should be active or not.
- *
- * Deprecated: 2.14: The toolkit-wide #GtkSettings:gtk-enable-tooltips property
- * is now used instead.
- **/
-void
-gtk_toolbar_set_tooltips (GtkToolbar *toolbar,
- gboolean enable)
-{
- g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
-
- if (enable)
- gtk_tooltips_enable (toolbar->tooltips);
- else
- gtk_tooltips_disable (toolbar->tooltips);
-
- g_object_notify (G_OBJECT (toolbar), "tooltips");
-}
-
-/**
- * gtk_toolbar_get_tooltips:
- * @toolbar: a #GtkToolbar
- *
- * Retrieves whether tooltips are enabled. See
- * gtk_toolbar_set_tooltips().
- *
- * Return value: %TRUE if tooltips are enabled
- *
- * Deprecated: 2.14: The toolkit-wide #GtkSettings:gtk-enable-tooltips property
- * is now used instead.
- **/
-gboolean
-gtk_toolbar_get_tooltips (GtkToolbar *toolbar)
-{
- g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE);
-
- return TRUE;
-}
-
-/**
* gtk_toolbar_get_n_items:
* @toolbar: a #GtkToolbar
*
@@ -2982,9 +2846,6 @@ gtk_toolbar_get_n_items (GtkToolbar *toolbar)
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), -1);
- if (!gtk_toolbar_check_new_api (toolbar))
- return -1;
-
priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
return physical_to_logical (toolbar, g_list_length (priv->content));
@@ -3013,9 +2874,6 @@ gtk_toolbar_get_nth_item (GtkToolbar *toolbar,
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), NULL);
- if (!gtk_toolbar_check_new_api (toolbar))
- return NULL;
-
n_items = gtk_toolbar_get_n_items (toolbar);
if (n < 0 || n >= n_items)
@@ -3120,9 +2978,6 @@ gtk_toolbar_get_show_arrow (GtkToolbar *toolbar)
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE);
- if (!gtk_toolbar_check_new_api (toolbar))
- return FALSE;
-
priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
return priv->show_arrow;
@@ -3152,9 +3007,6 @@ gtk_toolbar_get_drop_index (GtkToolbar *toolbar,
{
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), -1);
- if (!gtk_toolbar_check_new_api (toolbar))
- return -1;
-
return physical_to_logical (toolbar, find_drop_index (toolbar, x, y));
}
@@ -3165,9 +3017,6 @@ gtk_toolbar_finalize (GObject *object)
GtkToolbar *toolbar = GTK_TOOLBAR (object);
GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
- if (toolbar->tooltips)
- g_object_unref (toolbar->tooltips);
-
if (priv->arrow_button)
gtk_widget_unparent (priv->arrow_button);
@@ -3269,458 +3118,6 @@ gtk_toolbar_unset_icon_size (GtkToolbar *toolbar)
}
}
-/*
- * Deprecated API
- */
-
-/**
- * gtk_toolbar_append_item:
- * @toolbar: a #GtkToolbar.
- * @text: give your toolbar button a label.
- * @tooltip_text: a string that appears when the user holds the mouse over this item.
- * @tooltip_private_text: use with #GtkTipsQuery.
- * @icon: a #GtkWidget that should be used as the button's icon.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: a pointer to any data you wish to be passed to the callback.
- *
- * Inserts a new item into the toolbar. You must specify the position
- * in the toolbar where it will be inserted.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar item as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget *
-gtk_toolbar_append_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- toolbar->num_children);
-}
-
-/**
- * gtk_toolbar_prepend_item:
- * @toolbar: a #GtkToolbar.
- * @text: give your toolbar button a label.
- * @tooltip_text: a string that appears when the user holds the mouse over this item.
- * @tooltip_private_text: use with #GtkTipsQuery.
- * @icon: a #GtkWidget that should be used as the button's icon.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: a pointer to any data you wish to be passed to the callback.
- *
- * Adds a new button to the beginning (top or left edges) of the given toolbar.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar item as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget *
-gtk_toolbar_prepend_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- 0);
-}
-
-/**
- * gtk_toolbar_insert_item:
- * @toolbar: a #GtkToolbar.
- * @text: give your toolbar button a label.
- * @tooltip_text: a string that appears when the user holds the mouse over this item.
- * @tooltip_private_text: use with #GtkTipsQuery.
- * @icon: a #GtkWidget that should be used as the button's icon.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: a pointer to any data you wish to be passed to the callback.
- * @position: the number of widgets to insert this item after.
- *
- * Inserts a new item into the toolbar. You must specify the position in the
- * toolbar where it will be inserted.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar item as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget *
-gtk_toolbar_insert_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position)
-{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- position);
-}
-
-/**
- * gtk_toolbar_insert_stock:
- * @toolbar: A #GtkToolbar
- * @stock_id: The id of the stock item you want to insert
- * @tooltip_text: The text in the tooltip of the toolbar button
- * @tooltip_private_text: The private text of the tooltip
- * @callback: The callback called when the toolbar button is clicked.
- * @user_data: user data passed to callback
- * @position: The position the button shall be inserted at.
- * -1 means at the end.
- *
- * Inserts a stock item at the specified position of the toolbar. If
- * @stock_id is not a known stock item ID, it's inserted verbatim,
- * except that underscores used to mark mnemonics are removed.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Returns: the inserted widget
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- */
-GtkWidget*
-gtk_toolbar_insert_stock (GtkToolbar *toolbar,
- const gchar *stock_id,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GCallback callback,
- gpointer user_data,
- gint position)
-{
- return internal_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, stock_id,
- tooltip_text, tooltip_private_text,
- NULL, callback, user_data,
- position, TRUE);
-}
-
-/**
- * gtk_toolbar_append_space:
- * @toolbar: a #GtkToolbar.
- *
- * Adds a new space to the end of the toolbar.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_append_space (GtkToolbar *toolbar)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- toolbar->num_children);
-}
-
-/**
- * gtk_toolbar_prepend_space:
- * @toolbar: a #GtkToolbar.
- *
- * Adds a new space to the beginning of the toolbar.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_prepend_space (GtkToolbar *toolbar)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- 0);
-}
-
-/**
- * gtk_toolbar_insert_space:
- * @toolbar: a #GtkToolbar
- * @position: the number of widgets after which a space should be inserted.
- *
- * Inserts a new space in the toolbar at the specified position.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_insert_space (GtkToolbar *toolbar,
- gint position)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- position);
-}
-
-/**
- * gtk_toolbar_remove_space:
- * @toolbar: a #GtkToolbar.
- * @position: the index of the space to remove.
- *
- * Removes a space from the specified position.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_remove_space (GtkToolbar *toolbar,
- gint position)
-{
- GtkToolbarPrivate *priv;
- ToolbarContent *content;
-
- g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
-
- if (!gtk_toolbar_check_old_api (toolbar))
- return;
-
- priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
-
- content = g_list_nth_data (priv->content, position);
-
- if (!content)
- {
- g_warning ("Toolbar position %d doesn't exist", position);
- return;
- }
-
- if (!toolbar_content_is_separator (content))
- {
- g_warning ("Toolbar position %d is not a space", position);
- return;
- }
-
- toolbar_content_remove (content, toolbar);
- toolbar_content_free (content);
-}
-
-/**
- * gtk_toolbar_append_widget:
- * @toolbar: a #GtkToolbar.
- * @widget: a #GtkWidget to add to the toolbar.
- * @tooltip_text: (allow-none): the element's tooltip.
- * @tooltip_private_text: (allow-none): used for context-sensitive help about this toolbar element.
- *
- * Adds a widget to the end of the given toolbar.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_append_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const gchar *tooltip_text,
- const gchar *tooltip_private_text)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- toolbar->num_children);
-}
-
-/**
- * gtk_toolbar_prepend_widget:
- * @toolbar: a #GtkToolbar.
- * @widget: a #GtkWidget to add to the toolbar.
- * @tooltip_text: (allow-none): the element's tooltip.
- * @tooltip_private_text: (allow-none): used for context-sensitive help about this toolbar element.
- *
- * Adds a widget to the beginning of the given toolbar.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_prepend_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const gchar *tooltip_text,
- const gchar *tooltip_private_text)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- 0);
-}
-
-/**
- * gtk_toolbar_insert_widget:
- * @toolbar: a #GtkToolbar.
- * @widget: a #GtkWidget to add to the toolbar.
- * @tooltip_text: (allow-none): the element's tooltip.
- * @tooltip_private_text: (allow-none): used for context-sensitive help about this toolbar element.
- * @position: the number of widgets to insert this widget after.
- *
- * Inserts a widget in the toolbar at the given position.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-void
-gtk_toolbar_insert_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const char *tooltip_text,
- const char *tooltip_private_text,
- gint position)
-{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- position);
-}
-
-/**
- * gtk_toolbar_append_element:
- * @toolbar: a #GtkToolbar.
- * @type: a value of type #GtkToolbarChildType that determines what @widget will be.
- * @widget: (allow-none): a #GtkWidget, or %NULL.
- * @text: the element's label.
- * @tooltip_text: the element's tooltip.
- * @tooltip_private_text: used for context-sensitive help about this toolbar element.
- * @icon: a #GtkWidget that provides pictorial representation of the element's function.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: any data you wish to pass to the callback.
- *
- * Adds a new element to the end of a toolbar.
- *
- * If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
- * If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
- * the radio group for the new element. In all other cases, @widget must
- * be %NULL.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar element as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget*
-gtk_toolbar_append_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element (toolbar, type, widget, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- toolbar->num_children);
-}
-
-/**
- * gtk_toolbar_prepend_element:
- * @toolbar: a #GtkToolbar.
- * @type: a value of type #GtkToolbarChildType that determines what @widget will be.
- * @widget: (allow-none): a #GtkWidget, or %NULL
- * @text: the element's label.
- * @tooltip_text: the element's tooltip.
- * @tooltip_private_text: used for context-sensitive help about this toolbar element.
- * @icon: a #GtkWidget that provides pictorial representation of the element's function.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: any data you wish to pass to the callback.
- *
- * Adds a new element to the beginning of a toolbar.
- *
- * If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
- * If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
- * the radio group for the new element. In all other cases, @widget must
- * be %NULL.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar element as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget *
-gtk_toolbar_prepend_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element (toolbar, type, widget, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data, 0);
-}
-
-/**
- * gtk_toolbar_insert_element:
- * @toolbar: a #GtkToolbar.
- * @type: a value of type #GtkToolbarChildType that determines what @widget
- * will be.
- * @widget: (allow-none): a #GtkWidget, or %NULL.
- * @text: the element's label.
- * @tooltip_text: the element's tooltip.
- * @tooltip_private_text: used for context-sensitive help about this toolbar element.
- * @icon: a #GtkWidget that provides pictorial representation of the element's function.
- * @callback: the function to be executed when the button is pressed.
- * @user_data: any data you wish to pass to the callback.
- * @position: the number of widgets to insert this element after.
- *
- * Inserts a new element in the toolbar at the given position.
- *
- * If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
- * If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
- * the radio group for the new element. In all other cases, @widget must
- * be %NULL.
- *
- * @callback must be a pointer to a function taking a #GtkWidget and a gpointer as
- * arguments. Use G_CALLBACK() to cast the function to #GCallback.
- *
- * Return value: the new toolbar element as a #GtkWidget.
- *
- * Deprecated: 2.4: Use gtk_toolbar_insert() instead.
- **/
-GtkWidget *
-gtk_toolbar_insert_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position)
-{
- return internal_insert_element (toolbar, type, widget, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data, position, FALSE);
-}
-
static void
set_child_packing_and_visibility(GtkToolbar *toolbar,
GtkToolbarChild *child)
@@ -3759,138 +3156,6 @@ set_child_packing_and_visibility(GtkToolbar *toolbar,
}
}
-static GtkWidget *
-internal_insert_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position,
- gboolean use_stock)
-{
- GtkWidget *box;
- ToolbarContent *content;
- char *free_me = NULL;
-
- GtkWidget *child_widget;
- GtkWidget *child_label;
- GtkWidget *child_icon;
-
- g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), NULL);
- if (type == GTK_TOOLBAR_CHILD_WIDGET)
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
- else if (type != GTK_TOOLBAR_CHILD_RADIOBUTTON)
- g_return_val_if_fail (widget == NULL, NULL);
- if (GTK_IS_TOOL_ITEM (widget))
- g_warning (MIXED_API_WARNING);
-
- if (!gtk_toolbar_check_old_api (toolbar))
- return NULL;
-
- child_widget = NULL;
- child_label = NULL;
- child_icon = NULL;
-
- switch (type)
- {
- case GTK_TOOLBAR_CHILD_SPACE:
- break;
-
- case GTK_TOOLBAR_CHILD_WIDGET:
- child_widget = widget;
- break;
-
- case GTK_TOOLBAR_CHILD_BUTTON:
- case GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
- case GTK_TOOLBAR_CHILD_RADIOBUTTON:
- if (type == GTK_TOOLBAR_CHILD_BUTTON)
- {
- child_widget = gtk_button_new ();
- }
- else if (type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
- {
- child_widget = gtk_toggle_button_new ();
- gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child_widget), FALSE);
- }
- else /* type == GTK_TOOLBAR_CHILD_RADIOBUTTON */
- {
- GSList *group = NULL;
-
- if (widget)
- group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
-
- child_widget = gtk_radio_button_new (group);
- gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child_widget), FALSE);
- }
-
- gtk_button_set_relief (GTK_BUTTON (child_widget), get_button_relief (toolbar));
- gtk_button_set_focus_on_click (GTK_BUTTON (child_widget), FALSE);
-
- if (callback)
- {
- g_signal_connect (child_widget, "clicked",
- callback, user_data);
- }
-
- if (toolbar->style == GTK_TOOLBAR_BOTH_HORIZ)
- box = gtk_hbox_new (FALSE, 0);
- else
- box = gtk_vbox_new (FALSE, 0);
-
- gtk_container_add (GTK_CONTAINER (child_widget), box);
- gtk_widget_show (box);
-
- if (text && use_stock)
- {
- GtkStockItem stock_item;
- if (gtk_stock_lookup (text, &stock_item))
- {
- if (!icon)
- icon = gtk_image_new_from_stock (text, toolbar->icon_size);
-
- text = free_me = _gtk_toolbar_elide_underscores (stock_item.label);
- }
- }
-
- if (text)
- {
- child_label = gtk_label_new (text);
-
- gtk_container_add (GTK_CONTAINER (box), child_label);
- }
-
- if (icon)
- {
- child_icon = GTK_WIDGET (icon);
- gtk_container_add (GTK_CONTAINER (box), child_icon);
- }
-
- gtk_widget_show (child_widget);
- break;
-
- default:
- g_assert_not_reached ();
- break;
- }
-
- if ((type != GTK_TOOLBAR_CHILD_SPACE) && tooltip_text)
- {
- gtk_tooltips_set_tip (toolbar->tooltips, child_widget,
- tooltip_text, tooltip_private_text);
- }
-
- content = toolbar_content_new_compatibility (toolbar, type, child_widget,
- child_icon, child_label, position);
-
- g_free (free_me);
-
- return child_widget;
-}
-
/*
* ToolbarContent methods
*/
@@ -3959,54 +3224,6 @@ toolbar_content_new_tool_item (GtkToolbar *toolbar,
return content;
}
-static ToolbarContent *
-toolbar_content_new_compatibility (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- GtkWidget *icon,
- GtkWidget *label,
- gint pos)
-{
- ToolbarContent *content;
- GtkToolbarChild *child;
- GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
-
- content = g_slice_new0 (ToolbarContent);
-
- child = &(content->u.compatibility.child);
-
- content->type = COMPATIBILITY;
- child->type = type;
- child->widget = widget;
- child->icon = icon;
- child->label = label;
-
- if (type != GTK_TOOLBAR_CHILD_SPACE)
- {
- gtk_widget_set_parent (child->widget, GTK_WIDGET (toolbar));
- }
- else
- {
- content->u.compatibility.space_visible = TRUE;
- gtk_widget_queue_resize (GTK_WIDGET (toolbar));
- }
-
- if (type == GTK_TOOLBAR_CHILD_BUTTON ||
- type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON ||
- type == GTK_TOOLBAR_CHILD_RADIOBUTTON)
- {
- set_child_packing_and_visibility (toolbar, child);
- }
-
- priv->content = g_list_insert (priv->content, content, pos);
- toolbar->children = g_list_insert (toolbar->children, child, pos);
- priv->need_rebuild = TRUE;
-
- toolbar->num_children++;
-
- return content;
-}
-
static void
toolbar_content_remove (ToolbarContent *content,
GtkToolbar *toolbar)
@@ -4824,39 +4041,6 @@ get_shadow_type (GtkToolbar *toolbar)
return shadow_type;
}
-/*
- * API checks
- */
-static gboolean
-gtk_toolbar_check_old_api (GtkToolbar *toolbar)
-{
- GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
-
- if (priv->api_mode == NEW_API)
- {
- g_warning (MIXED_API_WARNING);
- return FALSE;
- }
-
- priv->api_mode = OLD_API;
- return TRUE;
-}
-
-static gboolean
-gtk_toolbar_check_new_api (GtkToolbar *toolbar)
-{
- GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
-
- if (priv->api_mode == OLD_API)
- {
- g_warning (MIXED_API_WARNING);
- return FALSE;
- }
-
- priv->api_mode = NEW_API;
- return TRUE;
-}
-
/* GTK+ internal methods */
gint
diff --git a/gtk/gtktoolbar.h b/gtk/gtktoolbar.h
index 333b328871..89af1d82a5 100644
--- a/gtk/gtktoolbar.h
+++ b/gtk/gtktoolbar.h
@@ -29,7 +29,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -38,19 +38,11 @@
#include <gtk/gtkcontainer.h>
-#include <gtk/gtktooltips.h>
#include <gtk/gtktoolitem.h>
-#ifndef GTK_DISABLE_DEPRECATED
-
-/* Not needed, retained for compatibility -Yosh */
-#include <gtk/gtkpixmap.h>
-#include <gtk/gtksignal.h>
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
G_BEGIN_DECLS
+
#define GTK_TYPE_TOOLBAR (gtk_toolbar_get_type ())
#define GTK_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TOOLBAR, GtkToolbar))
#define GTK_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TOOLBAR, GtkToolbarClass))
@@ -101,12 +93,6 @@ struct _GtkToolbar
GtkToolbarStyle GSEAL (style);
GtkIconSize GSEAL (icon_size);
-#ifndef GTK_DISABLE_DEPRECATED
- GtkTooltips *GSEAL (tooltips);
-#else
- gpointer GSEAL (_tooltips);
-#endif
-
/*< private >*/
gint GSEAL (button_maxw); /* maximum width of homogeneous children */
gint GSEAL (button_maxh); /* maximum height of homogeneous children */
@@ -183,106 +169,6 @@ void _gtk_toolbar_paint_space_line (GtkWidget *widget
gint _gtk_toolbar_get_default_space_size (void);
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-GtkOrientation gtk_toolbar_get_orientation (GtkToolbar *toolbar);
-void gtk_toolbar_set_orientation (GtkToolbar *toolbar,
- GtkOrientation orientation);
-gboolean gtk_toolbar_get_tooltips (GtkToolbar *toolbar);
-void gtk_toolbar_set_tooltips (GtkToolbar *toolbar,
- gboolean enable);
-
-/* Simple button items */
-GtkWidget* gtk_toolbar_append_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data);
-GtkWidget* gtk_toolbar_prepend_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data);
-GtkWidget* gtk_toolbar_insert_item (GtkToolbar *toolbar,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position);
-
-/* Stock Items */
-GtkWidget* gtk_toolbar_insert_stock (GtkToolbar *toolbar,
- const gchar *stock_id,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GCallback callback,
- gpointer user_data,
- gint position);
-
-/* Space Items */
-void gtk_toolbar_append_space (GtkToolbar *toolbar);
-void gtk_toolbar_prepend_space (GtkToolbar *toolbar);
-void gtk_toolbar_insert_space (GtkToolbar *toolbar,
- gint position);
-void gtk_toolbar_remove_space (GtkToolbar *toolbar,
- gint position);
-/* Any element type */
-GtkWidget* gtk_toolbar_append_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data);
-
-GtkWidget* gtk_toolbar_prepend_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data);
-
-GtkWidget* gtk_toolbar_insert_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GCallback callback,
- gpointer user_data,
- gint position);
-
-/* Generic Widgets */
-void gtk_toolbar_append_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const char *tooltip_text,
- const char *tooltip_private_text);
-void gtk_toolbar_prepend_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const char *tooltip_text,
- const char *tooltip_private_text);
-void gtk_toolbar_insert_widget (GtkToolbar *toolbar,
- GtkWidget *widget,
- const char *tooltip_text,
- const char *tooltip_private_text,
- gint position);
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
-
G_END_DECLS
#endif /* __GTK_TOOLBAR_H__ */
diff --git a/gtk/gtktoolbutton.h b/gtk/gtktoolbutton.h
index cacabe1700..e9ba386a16 100644
--- a/gtk/gtktoolbutton.h
+++ b/gtk/gtktoolbutton.h
@@ -20,7 +20,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktoolitem.c b/gtk/gtktoolitem.c
index 606ce1e847..536392c4f3 100644
--- a/gtk/gtktoolitem.c
+++ b/gtk/gtktoolitem.c
@@ -24,8 +24,6 @@
#include <string.h>
-#undef GTK_DISABLE_DEPRECATED /* GtkTooltips */
-
#include "gtktoolitem.h"
#include "gtkmarshalers.h"
#include "gtktoolshell.h"
@@ -78,7 +76,6 @@
enum {
CREATE_MENU_PROXY,
TOOLBAR_RECONFIGURED,
- SET_TOOLTIP,
LAST_SIGNAL
};
@@ -138,10 +135,6 @@ static void gtk_tool_item_size_request (GtkWidget *widget,
GtkRequisition *requisition);
static void gtk_tool_item_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
-static gboolean gtk_tool_item_real_set_tooltip (GtkToolItem *tool_item,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private);
static void gtk_tool_item_activatable_interface_init (GtkActivatableIface *iface);
static void gtk_tool_item_update (GtkActivatable *activatable,
@@ -184,7 +177,6 @@ gtk_tool_item_class_init (GtkToolItemClass *klass)
widget_class->parent_set = gtk_tool_item_parent_set;
klass->create_menu_proxy = _gtk_tool_item_create_menu_proxy;
- klass->set_tooltip = gtk_tool_item_real_set_tooltip;
g_object_class_install_property (object_class,
PROP_VISIBLE_HORIZONTAL,
@@ -274,33 +266,6 @@ gtk_tool_item_class_init (GtkToolItemClass *klass)
NULL, NULL,
_gtk_marshal_VOID__VOID,
G_TYPE_NONE, 0);
-/**
- * GtkToolItem::set-tooltip:
- * @tool_item: the object the signal was emitted on
- * @tooltips: the #GtkTooltips
- * @tip_text: the tooltip text
- * @tip_private: the tooltip private text
- *
- * This signal is emitted when the toolitem's tooltip changes.
- * Application developers can use gtk_tool_item_set_tooltip() to
- * set the item's tooltip.
- *
- * Return value: %TRUE if the signal was handled, %FALSE if not
- *
- * Deprecated: 2.12: With the new tooltip API, there is no
- * need to use this signal anymore.
- **/
- toolitem_signals[SET_TOOLTIP] =
- g_signal_new (I_("set-tooltip"),
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkToolItemClass, set_tooltip),
- _gtk_boolean_handled_accumulator, NULL,
- _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING,
- G_TYPE_BOOLEAN, 3,
- GTK_TYPE_TOOLTIPS,
- G_TYPE_STRING,
- G_TYPE_STRING);
g_type_class_add_private (object_class, sizeof (GtkToolItemPrivate));
}
@@ -1077,51 +1042,6 @@ gtk_tool_item_set_is_important (GtkToolItem *tool_item, gboolean is_important)
}
}
-static gboolean
-gtk_tool_item_real_set_tooltip (GtkToolItem *tool_item,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private)
-{
- GtkWidget *child = GTK_BIN (tool_item)->child;
-
- if (!child)
- return FALSE;
-
- gtk_widget_set_tooltip_text (child, tip_text);
-
- return TRUE;
-}
-
-/**
- * gtk_tool_item_set_tooltip:
- * @tool_item: a #GtkToolItem
- * @tooltips: The #GtkTooltips object to be used
- * @tip_text: (allow-none): text to be used as tooltip text for @tool_item
- * @tip_private: (allow-none): text to be used as private tooltip text
- *
- * Sets the #GtkTooltips object to be used for @tool_item, the
- * text to be displayed as tooltip on the item and the private text
- * to be used. See gtk_tooltips_set_tip().
- *
- * Since: 2.4
- *
- * Deprecated: 2.12: Use gtk_tool_item_set_tooltip_text() instead.
- **/
-void
-gtk_tool_item_set_tooltip (GtkToolItem *tool_item,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private)
-{
- gboolean retval;
-
- g_return_if_fail (GTK_IS_TOOL_ITEM (tool_item));
-
- g_signal_emit (tool_item, toolitem_signals[SET_TOOLTIP], 0,
- tooltips, tip_text, tip_private, &retval);
-}
-
/**
* gtk_tool_item_set_tooltip_text:
* @tool_item: a #GtkToolItem
diff --git a/gtk/gtktoolitem.h b/gtk/gtktoolitem.h
index 7f8d9ada18..1e1ecbfc3d 100644
--- a/gtk/gtktoolitem.h
+++ b/gtk/gtktoolitem.h
@@ -20,7 +20,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -28,7 +28,6 @@
#define __GTK_TOOL_ITEM_H__
#include <gtk/gtkbin.h>
-#include <gtk/gtktooltips.h>
#include <gtk/gtkmenuitem.h>
#include <gtk/gtksizegroup.h>
@@ -60,14 +59,6 @@ struct _GtkToolItemClass
/* signals */
gboolean (* create_menu_proxy) (GtkToolItem *tool_item);
void (* toolbar_reconfigured) (GtkToolItem *tool_item);
-#ifndef GTK_DISABLE_DEPRECATED
- gboolean (* set_tooltip) (GtkToolItem *tool_item,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private);
-#else
- gpointer _set_tooltip;
-#endif
/* Padding for future expansion */
void (* _gtk_reserved1) (void);
@@ -86,13 +77,6 @@ gboolean gtk_tool_item_get_homogeneous (GtkToolItem *tool_item);
void gtk_tool_item_set_expand (GtkToolItem *tool_item,
gboolean expand);
gboolean gtk_tool_item_get_expand (GtkToolItem *tool_item);
-
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_tool_item_set_tooltip (GtkToolItem *tool_item,
- GtkTooltips *tooltips,
- const gchar *tip_text,
- const gchar *tip_private);
-#endif /* GTK_DISABLE_DEPRECATED */
void gtk_tool_item_set_tooltip_text (GtkToolItem *tool_item,
const gchar *text);
void gtk_tool_item_set_tooltip_markup (GtkToolItem *tool_item,
diff --git a/gtk/gtktooltip.h b/gtk/gtktooltip.h
index cc16cb0454..ac310c908d 100644
--- a/gtk/gtktooltip.h
+++ b/gtk/gtktooltip.h
@@ -19,7 +19,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktooltips.c b/gtk/gtktooltips.c
deleted file mode 100644
index 6c9131073d..0000000000
--- a/gtk/gtktooltips.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "gtklabel.h"
-#include "gtkmain.h"
-#include "gtkmenuitem.h"
-#include "gtkprivate.h"
-#include "gtkwidget.h"
-#include "gtkwindow.h"
-#include "gtkstyle.h"
-#include "gtktooltips.h"
-#include "gtkintl.h"
-#include "gtkalias.h"
-
-
-#define DEFAULT_DELAY 500 /* Default delay in ms */
-#define STICKY_DELAY 0 /* Delay before popping up next tip
- * if we're sticky
- */
-#define STICKY_REVERT_DELAY 1000 /* Delay before sticky tooltips revert
- * to normal
- */
-#define GTK_TOOLTIPS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_TOOLTIPS, GtkTooltipsPrivate))
-
-typedef struct _GtkTooltipsPrivate GtkTooltipsPrivate;
-
-struct _GtkTooltipsPrivate
-{
- GHashTable *tips_data_table;
-};
-
-
-static void gtk_tooltips_finalize (GObject *object);
-static void gtk_tooltips_destroy (GtkObject *object);
-
-static void gtk_tooltips_destroy_data (GtkTooltipsData *tooltipsdata);
-
-static void gtk_tooltips_widget_remove (GtkWidget *widget,
- gpointer data);
-
-static const gchar tooltips_data_key[] = "_GtkTooltipsData";
-static const gchar tooltips_info_key[] = "_GtkTooltipsInfo";
-
-G_DEFINE_TYPE (GtkTooltips, gtk_tooltips, GTK_TYPE_OBJECT)
-
-static void
-gtk_tooltips_class_init (GtkTooltipsClass *class)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) class;
- GObjectClass *gobject_class = (GObjectClass *) class;
-
- gobject_class->finalize = gtk_tooltips_finalize;
-
- object_class->destroy = gtk_tooltips_destroy;
-
- g_type_class_add_private (gobject_class, sizeof (GtkTooltipsPrivate));
-}
-
-static void
-gtk_tooltips_init (GtkTooltips *tooltips)
-{
- GtkTooltipsPrivate *private = GTK_TOOLTIPS_GET_PRIVATE (tooltips);
-
- tooltips->tip_window = NULL;
- tooltips->active_tips_data = NULL;
- tooltips->tips_data_list = NULL;
-
- tooltips->delay = DEFAULT_DELAY;
- tooltips->enabled = TRUE;
- tooltips->timer_tag = 0;
- tooltips->use_sticky_delay = FALSE;
- tooltips->last_popdown.tv_sec = -1;
- tooltips->last_popdown.tv_usec = -1;
-
- private->tips_data_table =
- g_hash_table_new_full (NULL, NULL, NULL,
- (GDestroyNotify) gtk_tooltips_destroy_data);
-
- gtk_tooltips_force_window (tooltips);
-}
-
-static void
-gtk_tooltips_finalize (GObject *object)
-{
- GtkTooltipsPrivate *private = GTK_TOOLTIPS_GET_PRIVATE (object);
-
- g_hash_table_destroy (private->tips_data_table);
-
- G_OBJECT_CLASS (gtk_tooltips_parent_class)->finalize (object);
-}
-
-GtkTooltips *
-gtk_tooltips_new (void)
-{
- return g_object_new (GTK_TYPE_TOOLTIPS, NULL);
-}
-
-static void
-gtk_tooltips_destroy_data (GtkTooltipsData *tooltipsdata)
-{
- g_free (tooltipsdata->tip_text);
- g_free (tooltipsdata->tip_private);
-
- g_signal_handlers_disconnect_by_func (tooltipsdata->widget,
- gtk_tooltips_widget_remove,
- tooltipsdata);
-
- g_object_set_data (G_OBJECT (tooltipsdata->widget), I_(tooltips_data_key), NULL);
- g_object_unref (tooltipsdata->widget);
- g_free (tooltipsdata);
-}
-
-static void
-gtk_tooltips_destroy (GtkObject *object)
-{
- GtkTooltips *tooltips = GTK_TOOLTIPS (object);
- GtkTooltipsPrivate *private = GTK_TOOLTIPS_GET_PRIVATE (tooltips);
-
- if (tooltips->tip_window)
- {
- gtk_widget_destroy (tooltips->tip_window);
- tooltips->tip_window = NULL;
- }
-
- g_hash_table_remove_all (private->tips_data_table);
-
- GTK_OBJECT_CLASS (gtk_tooltips_parent_class)->destroy (object);
-}
-
-void
-gtk_tooltips_force_window (GtkTooltips *tooltips)
-{
- g_return_if_fail (GTK_IS_TOOLTIPS (tooltips));
-
- if (!tooltips->tip_window)
- {
- tooltips->tip_window = gtk_window_new (GTK_WINDOW_POPUP);
- g_signal_connect (tooltips->tip_window,
- "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &tooltips->tip_window);
-
- tooltips->tip_label = gtk_label_new (NULL);
- gtk_container_add (GTK_CONTAINER (tooltips->tip_window),
- tooltips->tip_label);
- }
-}
-
-void
-gtk_tooltips_enable (GtkTooltips *tooltips)
-{
- g_return_if_fail (tooltips != NULL);
-
- tooltips->enabled = TRUE;
-}
-
-void
-gtk_tooltips_disable (GtkTooltips *tooltips)
-{
- g_return_if_fail (tooltips != NULL);
-
- tooltips->enabled = FALSE;
-}
-
-void
-gtk_tooltips_set_delay (GtkTooltips *tooltips,
- guint delay)
-{
- g_return_if_fail (tooltips != NULL);
-
- tooltips->delay = delay;
-}
-
-GtkTooltipsData*
-gtk_tooltips_data_get (GtkWidget *widget)
-{
- g_return_val_if_fail (widget != NULL, NULL);
-
- return g_object_get_data (G_OBJECT (widget), tooltips_data_key);
-}
-
-
-/**
- * gtk_tooltips_set_tip:
- * @tooltips: a #GtkTooltips.
- * @widget: the #GtkWidget you wish to associate the tip with.
- * @tip_text: (allow-none): a string containing the tip itself.
- * @tip_private: (allow-none): a string of any further information that may be useful if the user gets stuck.
- *
- * Adds a tooltip containing the message @tip_text to the specified #GtkWidget.
- * Deprecated: 2.12:
- */
-void
-gtk_tooltips_set_tip (GtkTooltips *tooltips,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private)
-{
- GtkTooltipsData *tooltipsdata;
-
- g_return_if_fail (GTK_IS_TOOLTIPS (tooltips));
- g_return_if_fail (widget != NULL);
-
- tooltipsdata = gtk_tooltips_data_get (widget);
-
- if (!tip_text)
- {
- if (tooltipsdata)
- gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata);
- return;
- }
-
- if (tooltips->active_tips_data
- && tooltipsdata
- && tooltips->active_tips_data->widget == widget
- && GTK_WIDGET_DRAWABLE (tooltips->active_tips_data->widget))
- {
- g_free (tooltipsdata->tip_text);
- g_free (tooltipsdata->tip_private);
-
- tooltipsdata->tip_text = g_strdup (tip_text);
- tooltipsdata->tip_private = g_strdup (tip_private);
- }
- else
- {
- g_object_ref (widget);
-
- if (tooltipsdata)
- gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata);
-
- tooltipsdata = g_new0 (GtkTooltipsData, 1);
-
- tooltipsdata->tooltips = tooltips;
- tooltipsdata->widget = widget;
-
- tooltipsdata->tip_text = g_strdup (tip_text);
- tooltipsdata->tip_private = g_strdup (tip_private);
-
- g_hash_table_insert (GTK_TOOLTIPS_GET_PRIVATE (tooltips)->tips_data_table,
- widget, tooltipsdata);
-
- g_object_set_data (G_OBJECT (widget), I_(tooltips_data_key),
- tooltipsdata);
-
- g_signal_connect (widget, "destroy",
- G_CALLBACK (gtk_tooltips_widget_remove),
- tooltipsdata);
- }
-
- gtk_widget_set_tooltip_text (widget, tip_text);
-}
-
-static void
-gtk_tooltips_widget_remove (GtkWidget *widget,
- gpointer data)
-{
- GtkTooltipsData *tooltipsdata = (GtkTooltipsData*) data;
- GtkTooltips *tooltips = tooltipsdata->tooltips;
- GtkTooltipsPrivate *private = GTK_TOOLTIPS_GET_PRIVATE (tooltips);
-
- g_hash_table_remove (private->tips_data_table, tooltipsdata->widget);
-}
-
-/**
- * gtk_tooltips_get_info_from_tip_window:
- * @tip_window: a #GtkWindow
- * @tooltips: the return location for the tooltips which are displayed
- * in @tip_window, or %NULL
- * @current_widget: the return location for the widget whose tooltips
- * are displayed, or %NULL
- *
- * Determines the tooltips and the widget they belong to from the window in
- * which they are displayed.
- *
- * This function is mostly intended for use by accessibility technologies;
- * applications should have little use for it.
- *
- * Return value: %TRUE if @tip_window is displaying tooltips, otherwise %FALSE.
- *
- * Since: 2.4
- *
- * Deprecated: 2.12:
- **/
-gboolean
-gtk_tooltips_get_info_from_tip_window (GtkWindow *tip_window,
- GtkTooltips **tooltips,
- GtkWidget **current_widget)
-{
- GtkTooltips *current_tooltips;
- gboolean has_tips;
-
- g_return_val_if_fail (GTK_IS_WINDOW (tip_window), FALSE);
-
- current_tooltips = g_object_get_data (G_OBJECT (tip_window), tooltips_info_key);
-
- has_tips = current_tooltips != NULL;
-
- if (tooltips)
- *tooltips = current_tooltips;
- if (current_widget)
- *current_widget = (has_tips && current_tooltips->active_tips_data) ? current_tooltips->active_tips_data->widget : NULL;
-
- return has_tips;
-}
-
-#define __GTK_TOOLTIPS_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtktooltips.h b/gtk/gtktooltips.h
deleted file mode 100644
index a86085652c..0000000000
--- a/gtk/gtktooltips.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_TOOLTIPS_H__
-#define __GTK_TOOLTIPS_H__
-
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkwindow.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TOOLTIPS (gtk_tooltips_get_type ())
-#define GTK_TOOLTIPS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TOOLTIPS, GtkTooltips))
-#define GTK_TOOLTIPS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TOOLTIPS, GtkTooltipsClass))
-#define GTK_IS_TOOLTIPS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TOOLTIPS))
-#define GTK_IS_TOOLTIPS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TOOLTIPS))
-#define GTK_TOOLTIPS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TOOLTIPS, GtkTooltipsClass))
-
-
-typedef struct _GtkTooltips GtkTooltips;
-typedef struct _GtkTooltipsClass GtkTooltipsClass;
-typedef struct _GtkTooltipsData GtkTooltipsData;
-
-struct _GtkTooltipsData
-{
- GtkTooltips *tooltips;
- GtkWidget *widget;
- gchar *tip_text;
- gchar *tip_private;
-};
-
-struct _GtkTooltips
-{
- GtkObject parent_instance;
-
- /*< private >*/
- GtkWidget *tip_window;
- GtkWidget *tip_label;
- GtkTooltipsData *active_tips_data;
- GList *tips_data_list; /* unused */
-
- guint delay : 30;
- guint enabled : 1;
- guint have_grab : 1;
- guint use_sticky_delay : 1;
- gint timer_tag;
- GTimeVal last_popdown;
-};
-
-struct _GtkTooltipsClass
-{
- GtkObjectClass parent_class;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-GType gtk_tooltips_get_type (void) G_GNUC_CONST;
-GtkTooltips* gtk_tooltips_new (void);
-
-void gtk_tooltips_enable (GtkTooltips *tooltips);
-void gtk_tooltips_disable (GtkTooltips *tooltips);
-void gtk_tooltips_set_delay (GtkTooltips *tooltips,
- guint delay);
-void gtk_tooltips_set_tip (GtkTooltips *tooltips,
- GtkWidget *widget,
- const gchar *tip_text,
- const gchar *tip_private);
-GtkTooltipsData* gtk_tooltips_data_get (GtkWidget *widget);
-void gtk_tooltips_force_window (GtkTooltips *tooltips);
-
-gboolean gtk_tooltips_get_info_from_tip_window (GtkWindow *tip_window,
- GtkTooltips **tooltips,
- GtkWidget **current_widget);
-
-G_END_DECLS
-
-#endif /* __GTK_TOOLTIPS_H__ */
-
-#endif /* GTK_DISABLE_DEPRECATED */
diff --git a/gtk/gtktree.c b/gtk/gtktree.c
deleted file mode 100644
index 7d842c1378..0000000000
--- a/gtk/gtktree.c
+++ /dev/null
@@ -1,1136 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtksignal.h"
-#include "gtklist.h"
-
-#define GTK_ENABLE_BROKEN
-#include "gtktree.h"
-#include "gtktreeitem.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-enum {
- SELECTION_CHANGED,
- SELECT_CHILD,
- UNSELECT_CHILD,
- LAST_SIGNAL
-};
-
-static void gtk_tree_class_init (GtkTreeClass *klass);
-static void gtk_tree_init (GtkTree *tree);
-static void gtk_tree_destroy (GtkObject *object);
-static void gtk_tree_map (GtkWidget *widget);
-static void gtk_tree_parent_set (GtkWidget *widget,
- GtkWidget *previous_parent);
-static void gtk_tree_unmap (GtkWidget *widget);
-static void gtk_tree_realize (GtkWidget *widget);
-static gint gtk_tree_motion_notify (GtkWidget *widget,
- GdkEventMotion *event);
-static gint gtk_tree_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_tree_button_release (GtkWidget *widget,
- GdkEventButton *event);
-static void gtk_tree_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_tree_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_tree_add (GtkContainer *container,
- GtkWidget *widget);
-static void gtk_tree_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data);
-
-static void gtk_real_tree_select_child (GtkTree *tree,
- GtkWidget *child);
-static void gtk_real_tree_unselect_child (GtkTree *tree,
- GtkWidget *child);
-
-static GtkType gtk_tree_child_type (GtkContainer *container);
-
-static GtkContainerClass *parent_class = NULL;
-static guint tree_signals[LAST_SIGNAL] = { 0 };
-
-GtkType
-gtk_tree_get_type (void)
-{
- static GtkType tree_type = 0;
-
- if (!tree_type)
- {
- static const GtkTypeInfo tree_info =
- {
- "GtkTree",
- sizeof (GtkTree),
- sizeof (GtkTreeClass),
- (GtkClassInitFunc) gtk_tree_class_init,
- (GtkObjectInitFunc) gtk_tree_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkTree");
- tree_type = gtk_type_unique (gtk_container_get_type (), &tree_info);
- }
-
- return tree_type;
-}
-
-static void
-gtk_tree_class_init (GtkTreeClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- container_class = (GtkContainerClass*) class;
-
- parent_class = gtk_type_class (gtk_container_get_type ());
-
-
- object_class->destroy = gtk_tree_destroy;
-
- widget_class->map = gtk_tree_map;
- widget_class->unmap = gtk_tree_unmap;
- widget_class->parent_set = gtk_tree_parent_set;
- widget_class->realize = gtk_tree_realize;
- widget_class->motion_notify_event = gtk_tree_motion_notify;
- widget_class->button_press_event = gtk_tree_button_press;
- widget_class->button_release_event = gtk_tree_button_release;
- widget_class->size_request = gtk_tree_size_request;
- widget_class->size_allocate = gtk_tree_size_allocate;
-
- container_class->add = gtk_tree_add;
- container_class->remove =
- (void (*)(GtkContainer *, GtkWidget *)) gtk_tree_remove_item;
- container_class->forall = gtk_tree_forall;
- container_class->child_type = gtk_tree_child_type;
-
- class->selection_changed = NULL;
- class->select_child = gtk_real_tree_select_child;
- class->unselect_child = gtk_real_tree_unselect_child;
-
- tree_signals[SELECTION_CHANGED] =
- gtk_signal_new (I_("selection-changed"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTreeClass, selection_changed),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- tree_signals[SELECT_CHILD] =
- gtk_signal_new (I_("select-child"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTreeClass, select_child),
- _gtk_marshal_VOID__OBJECT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_WIDGET);
- tree_signals[UNSELECT_CHILD] =
- gtk_signal_new (I_("unselect-child"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTreeClass, unselect_child),
- _gtk_marshal_VOID__OBJECT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_WIDGET);
-}
-
-static GtkType
-gtk_tree_child_type (GtkContainer *container)
-{
- return GTK_TYPE_TREE_ITEM;
-}
-
-static void
-gtk_tree_init (GtkTree *tree)
-{
- tree->children = NULL;
- tree->root_tree = tree;
- tree->selection = NULL;
- tree->tree_owner = NULL;
- tree->selection_mode = GTK_SELECTION_SINGLE;
- tree->indent_value = 9;
- tree->current_indent = 0;
- tree->level = 0;
- tree->view_mode = GTK_TREE_VIEW_LINE;
- tree->view_line = TRUE;
-}
-
-GtkWidget*
-gtk_tree_new (void)
-{
- return GTK_WIDGET (gtk_type_new (gtk_tree_get_type ()));
-}
-
-void
-gtk_tree_append (GtkTree *tree,
- GtkWidget *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_tree_insert (tree, tree_item, -1);
-}
-
-void
-gtk_tree_prepend (GtkTree *tree,
- GtkWidget *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_tree_insert (tree, tree_item, 0);
-}
-
-void
-gtk_tree_insert (GtkTree *tree,
- GtkWidget *tree_item,
- gint position)
-{
- gint nchildren;
-
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- nchildren = g_list_length (tree->children);
-
- if ((position < 0) || (position > nchildren))
- position = nchildren;
-
- if (position == nchildren)
- tree->children = g_list_append (tree->children, tree_item);
- else
- tree->children = g_list_insert (tree->children, tree_item, position);
-
- gtk_widget_set_parent (tree_item, GTK_WIDGET (tree));
-}
-
-static void
-gtk_tree_add (GtkContainer *container,
- GtkWidget *child)
-{
- GtkTree *tree;
-
- g_return_if_fail (GTK_IS_TREE (container));
- g_return_if_fail (GTK_IS_TREE_ITEM (child));
-
- tree = GTK_TREE (container);
-
- tree->children = g_list_append (tree->children, child);
-
- gtk_widget_set_parent (child, GTK_WIDGET (container));
-
- if (!tree->selection && (tree->selection_mode == GTK_SELECTION_BROWSE))
- gtk_tree_select_child (tree, child);
-}
-
-static gint
-gtk_tree_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkTree *tree;
- GtkWidget *item;
-
- g_return_val_if_fail (GTK_IS_TREE (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- tree = GTK_TREE (widget);
- item = gtk_get_event_widget ((GdkEvent*) event);
-
- while (item && !GTK_IS_TREE_ITEM (item))
- item = item->parent;
-
- if (!item || (item->parent != widget))
- return FALSE;
-
- switch(event->button)
- {
- case 1:
- gtk_tree_select_child (tree, item);
- break;
- case 2:
- if(GTK_TREE_ITEM(item)->subtree) gtk_tree_item_expand(GTK_TREE_ITEM(item));
- break;
- case 3:
- if(GTK_TREE_ITEM(item)->subtree) gtk_tree_item_collapse(GTK_TREE_ITEM(item));
- break;
- }
-
- return TRUE;
-}
-
-static gint
-gtk_tree_button_release (GtkWidget *widget,
- GdkEventButton *event)
-{
- GtkTree *tree;
- GtkWidget *item;
-
- g_return_val_if_fail (GTK_IS_TREE (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- tree = GTK_TREE (widget);
- item = gtk_get_event_widget ((GdkEvent*) event);
-
- return TRUE;
-}
-
-gint
-gtk_tree_child_position (GtkTree *tree,
- GtkWidget *child)
-{
- GList *children;
- gint pos;
-
-
- g_return_val_if_fail (GTK_IS_TREE (tree), -1);
- g_return_val_if_fail (child != NULL, -1);
-
- pos = 0;
- children = tree->children;
-
- while (children)
- {
- if (child == GTK_WIDGET (children->data))
- return pos;
-
- pos += 1;
- children = children->next;
- }
-
-
- return -1;
-}
-
-void
-gtk_tree_clear_items (GtkTree *tree,
- gint start,
- gint end)
-{
- GtkWidget *widget;
- GList *clear_list;
- GList *tmp_list;
- guint nchildren;
- guint index;
-
- g_return_if_fail (GTK_IS_TREE (tree));
-
- nchildren = g_list_length (tree->children);
-
- if (nchildren > 0)
- {
- if ((end < 0) || (end > nchildren))
- end = nchildren;
-
- if (start >= end)
- return;
-
- tmp_list = g_list_nth (tree->children, start);
- clear_list = NULL;
- index = start;
- while (tmp_list && index <= end)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
- index++;
-
- clear_list = g_list_prepend (clear_list, widget);
- }
-
- gtk_tree_remove_items (tree, clear_list);
- }
-}
-
-static void
-gtk_tree_destroy (GtkObject *object)
-{
- GtkTree *tree;
- GtkWidget *child;
- GList *children;
-
- g_return_if_fail (GTK_IS_TREE (object));
-
- tree = GTK_TREE (object);
-
- children = tree->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- g_object_ref (child);
- gtk_widget_unparent (child);
- gtk_widget_destroy (child);
- g_object_unref (child);
- }
-
- g_list_free (tree->children);
- tree->children = NULL;
-
- if (tree->root_tree == tree)
- {
- GList *node;
- for (node = tree->selection; node; node = node->next)
- g_object_unref (node->data);
- g_list_free (tree->selection);
- tree->selection = NULL;
- }
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static void
-gtk_tree_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- GtkTree *tree;
- GtkWidget *child;
- GList *children;
-
-
- g_return_if_fail (GTK_IS_TREE (container));
- g_return_if_fail (callback != NULL);
-
- tree = GTK_TREE (container);
- children = tree->children;
-
- while (children)
- {
- child = children->data;
- children = children->next;
-
- (* callback) (child, callback_data);
- }
-}
-
-static void
-gtk_tree_unselect_all (GtkTree *tree)
-{
- GList *tmp_list, *selection;
- GtkWidget *tmp_item;
-
- selection = tree->selection;
- tree->selection = NULL;
-
- tmp_list = selection;
- while (tmp_list)
- {
- tmp_item = selection->data;
-
- if (tmp_item->parent &&
- GTK_IS_TREE (tmp_item->parent) &&
- GTK_TREE (tmp_item->parent)->root_tree == tree)
- gtk_tree_item_deselect (GTK_TREE_ITEM (tmp_item));
-
- g_object_unref (tmp_item);
-
- tmp_list = tmp_list->next;
- }
-
- g_list_free (selection);
-}
-
-static void
-gtk_tree_parent_set (GtkWidget *widget,
- GtkWidget *previous_parent)
-{
- GtkTree *tree = GTK_TREE (widget);
- GtkWidget *child;
- GList *children;
-
- if (GTK_IS_TREE (widget->parent))
- {
- gtk_tree_unselect_all (tree);
-
- /* set root tree for this tree */
- tree->root_tree = GTK_TREE(widget->parent)->root_tree;
-
- tree->level = GTK_TREE(GTK_WIDGET(tree)->parent)->level+1;
- tree->indent_value = GTK_TREE(GTK_WIDGET(tree)->parent)->indent_value;
- tree->current_indent = GTK_TREE(GTK_WIDGET(tree)->parent)->current_indent +
- tree->indent_value;
- tree->view_mode = GTK_TREE(GTK_WIDGET(tree)->parent)->view_mode;
- tree->view_line = GTK_TREE(GTK_WIDGET(tree)->parent)->view_line;
- }
- else
- {
- tree->root_tree = tree;
-
- tree->level = 0;
- tree->current_indent = 0;
- }
-
- children = tree->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (GTK_TREE_ITEM (child)->subtree)
- gtk_tree_parent_set (GTK_TREE_ITEM (child)->subtree, child);
- }
-}
-
-static void
-gtk_tree_map (GtkWidget *widget)
-{
- GtkTree *tree = GTK_TREE (widget);
- GtkWidget *child;
- GList *children;
-
- gtk_widget_set_mapped (widget, TRUE);
-
- children = tree->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child) &&
- !gtk_widget_get_mapped (child))
- gtk_widget_map (child);
-
- if (GTK_TREE_ITEM (child)->subtree)
- {
- child = GTK_WIDGET (GTK_TREE_ITEM (child)->subtree);
-
- if (gtk_widget_get_visible (child) && !gtk_widget_get_mapped (child))
- gtk_widget_map (child);
- }
- }
-
- gdk_window_show (widget->window);
-}
-
-static gint
-gtk_tree_motion_notify (GtkWidget *widget,
- GdkEventMotion *event)
-{
- g_return_val_if_fail (GTK_IS_TREE (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
-#ifdef TREE_DEBUG
- g_message("gtk_tree_motion_notify\n");
-#endif /* TREE_DEBUG */
-
- return FALSE;
-}
-
-static void
-gtk_tree_realize (GtkWidget *widget)
-{
- GdkWindowAttr attributes;
- gint attributes_mask;
-
-
- g_return_if_fail (GTK_IS_TREE (widget));
-
- gtk_widget_set_realized (widget, TRUE);
-
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
-
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, widget);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_STATE_NORMAL]);
-}
-
-void
-gtk_tree_remove_item (GtkTree *container,
- GtkWidget *widget)
-{
- GList *item_list;
-
- g_return_if_fail (GTK_IS_TREE (container));
- g_return_if_fail (widget != NULL);
- g_return_if_fail (container == GTK_TREE (widget->parent));
-
- item_list = g_list_append (NULL, widget);
-
- gtk_tree_remove_items (GTK_TREE (container), item_list);
-
- g_list_free (item_list);
-}
-
-/* used by gtk_tree_remove_items to make the function independent of
- order in list of items to remove.
- Sort item by depth in tree */
-static gint
-gtk_tree_sort_item_by_depth(GtkWidget* a, GtkWidget* b)
-{
- if((GTK_TREE(a->parent)->level) < (GTK_TREE(b->parent)->level))
- return 1;
- if((GTK_TREE(a->parent)->level) > (GTK_TREE(b->parent)->level))
- return -1;
-
- return 0;
-}
-
-void
-gtk_tree_remove_items (GtkTree *tree,
- GList *items)
-{
- GtkWidget *widget;
- GList *selected_widgets;
- GList *tmp_list;
- GList *sorted_list;
- GtkTree *real_tree;
- GtkTree *root_tree;
-
- g_return_if_fail (GTK_IS_TREE (tree));
-
-#ifdef TREE_DEBUG
- g_message("+ gtk_tree_remove_items [ tree %#x items list %#x ]\n", (int)tree, (int)items);
-#endif /* TREE_DEBUG */
-
- /* We may not yet be mapped, so we actively have to find our
- * root tree
- */
- if (tree->root_tree)
- root_tree = tree->root_tree;
- else
- {
- GtkWidget *tmp = GTK_WIDGET (tree);
- while (GTK_IS_TREE (tmp->parent))
- tmp = tmp->parent;
-
- root_tree = GTK_TREE (tmp);
- }
-
- tmp_list = items;
- selected_widgets = NULL;
- sorted_list = NULL;
- widget = NULL;
-
-#ifdef TREE_DEBUG
- g_message("* sort list by depth\n");
-#endif /* TREE_DEBUG */
-
- while (tmp_list)
- {
-
-#ifdef TREE_DEBUG
- g_message ("* item [%#x] depth [%d]\n",
- (int)tmp_list->data,
- (int)GTK_TREE(GTK_WIDGET(tmp_list->data)->parent)->level);
-#endif /* TREE_DEBUG */
-
- sorted_list = g_list_insert_sorted(sorted_list,
- tmp_list->data,
- (GCompareFunc)gtk_tree_sort_item_by_depth);
- tmp_list = g_list_next(tmp_list);
- }
-
-#ifdef TREE_DEBUG
- /* print sorted list */
- g_message("* sorted list result\n");
- tmp_list = sorted_list;
- while(tmp_list)
- {
- g_message("* item [%#x] depth [%d]\n",
- (int)tmp_list->data,
- (int)GTK_TREE(GTK_WIDGET(tmp_list->data)->parent)->level);
- tmp_list = g_list_next(tmp_list);
- }
-#endif /* TREE_DEBUG */
-
-#ifdef TREE_DEBUG
- g_message("* scan sorted list\n");
-#endif /* TREE_DEBUG */
-
- tmp_list = sorted_list;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
-#ifdef TREE_DEBUG
- g_message("* item [%#x] subtree [%#x]\n",
- (int)widget, (int)GTK_TREE_ITEM_SUBTREE(widget));
-#endif /* TREE_DEBUG */
-
- /* get real owner of this widget */
- real_tree = GTK_TREE(widget->parent);
-#ifdef TREE_DEBUG
- g_message("* subtree having this widget [%#x]\n", (int)real_tree);
-#endif /* TREE_DEBUG */
-
-
- if (widget->state == GTK_STATE_SELECTED)
- {
- selected_widgets = g_list_prepend (selected_widgets, widget);
-#ifdef TREE_DEBUG
- g_message("* selected widget - adding it in selected list [%#x]\n",
- (int)selected_widgets);
-#endif /* TREE_DEBUG */
- }
-
- /* remove this item from its real parent */
-#ifdef TREE_DEBUG
- g_message("* remove widget from its owner tree\n");
-#endif /* TREE_DEBUG */
- real_tree->children = g_list_remove (real_tree->children, widget);
-
- /* remove subtree associate at this item if it exist */
- if(GTK_TREE_ITEM(widget)->subtree)
- {
-#ifdef TREE_DEBUG
- g_message("* remove subtree associate at this item [%#x]\n",
- (int) GTK_TREE_ITEM(widget)->subtree);
-#endif /* TREE_DEBUG */
- if (gtk_widget_get_mapped (GTK_TREE_ITEM(widget)->subtree))
- gtk_widget_unmap (GTK_TREE_ITEM(widget)->subtree);
-
- gtk_widget_unparent (GTK_TREE_ITEM(widget)->subtree);
- GTK_TREE_ITEM(widget)->subtree = NULL;
- }
-
- /* really remove widget for this item */
-#ifdef TREE_DEBUG
- g_message("* unmap and unparent widget [%#x]\n", (int)widget);
-#endif /* TREE_DEBUG */
- if (gtk_widget_get_mapped (widget))
- gtk_widget_unmap (widget);
-
- gtk_widget_unparent (widget);
-
- /* delete subtree if there is no children in it */
- if(real_tree->children == NULL &&
- real_tree != root_tree)
- {
-#ifdef TREE_DEBUG
- g_message("* owner tree don't have children ... destroy it\n");
-#endif /* TREE_DEBUG */
- gtk_tree_item_remove_subtree(GTK_TREE_ITEM(real_tree->tree_owner));
- }
-
-#ifdef TREE_DEBUG
- g_message("* next item in list\n");
-#endif /* TREE_DEBUG */
- }
-
- if (selected_widgets)
- {
-#ifdef TREE_DEBUG
- g_message("* scan selected item list\n");
-#endif /* TREE_DEBUG */
- tmp_list = selected_widgets;
- while (tmp_list)
- {
- widget = tmp_list->data;
- tmp_list = tmp_list->next;
-
-#ifdef TREE_DEBUG
- g_message("* widget [%#x] subtree [%#x]\n",
- (int)widget, (int)GTK_TREE_ITEM_SUBTREE(widget));
-#endif /* TREE_DEBUG */
-
- /* remove widget of selection */
- root_tree->selection = g_list_remove (root_tree->selection, widget);
-
- /* unref it to authorize is destruction */
- g_object_unref (widget);
- }
-
- /* emit only one selection_changed signal */
- gtk_signal_emit (GTK_OBJECT (root_tree),
- tree_signals[SELECTION_CHANGED]);
- }
-
-#ifdef TREE_DEBUG
- g_message("* free selected_widgets list\n");
-#endif /* TREE_DEBUG */
- g_list_free (selected_widgets);
- g_list_free (sorted_list);
-
- if (root_tree->children && !root_tree->selection &&
- (root_tree->selection_mode == GTK_SELECTION_BROWSE))
- {
-#ifdef TREE_DEBUG
- g_message("* BROWSE mode, select another item\n");
-#endif /* TREE_DEBUG */
- widget = root_tree->children->data;
- gtk_tree_select_child (root_tree, widget);
- }
-
- if (gtk_widget_get_visible (GTK_WIDGET (root_tree)))
- {
-#ifdef TREE_DEBUG
- g_message("* query queue resizing for root_tree\n");
-#endif /* TREE_DEBUG */
- gtk_widget_queue_resize (GTK_WIDGET (root_tree));
- }
-}
-
-void
-gtk_tree_select_child (GtkTree *tree,
- GtkWidget *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_signal_emit (GTK_OBJECT (tree), tree_signals[SELECT_CHILD], tree_item);
-}
-
-void
-gtk_tree_select_item (GtkTree *tree,
- gint item)
-{
- GList *tmp_list;
-
- g_return_if_fail (GTK_IS_TREE (tree));
-
- tmp_list = g_list_nth (tree->children, item);
- if (tmp_list)
- gtk_tree_select_child (tree, GTK_WIDGET (tmp_list->data));
-
-}
-
-static void
-gtk_tree_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkTree *tree;
- GtkWidget *child, *subtree;
- GtkAllocation child_allocation;
- GList *children;
-
-
- g_return_if_fail (GTK_IS_TREE (widget));
- g_return_if_fail (allocation != NULL);
-
- tree = GTK_TREE (widget);
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- if (tree->children)
- {
- child_allocation.x = GTK_CONTAINER (tree)->border_width;
- child_allocation.y = GTK_CONTAINER (tree)->border_width;
- child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2);
-
- children = tree->children;
-
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child))
- {
- GtkRequisition child_requisition;
- gtk_widget_get_child_requisition (child, &child_requisition);
-
- child_allocation.height = child_requisition.height;
-
- gtk_widget_size_allocate (child, &child_allocation);
-
- child_allocation.y += child_allocation.height;
-
- if((subtree = GTK_TREE_ITEM(child)->subtree))
- if(gtk_widget_get_visible (subtree))
- {
- child_allocation.height = subtree->requisition.height;
- gtk_widget_size_allocate (subtree, &child_allocation);
- child_allocation.y += child_allocation.height;
- }
- }
- }
- }
-
-}
-
-static void
-gtk_tree_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkTree *tree;
- GtkWidget *child, *subtree;
- GList *children;
- GtkRequisition child_requisition;
-
-
- g_return_if_fail (GTK_IS_TREE (widget));
- g_return_if_fail (requisition != NULL);
-
- tree = GTK_TREE (widget);
- requisition->width = 0;
- requisition->height = 0;
-
- children = tree->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (gtk_widget_get_visible (child))
- {
- gtk_widget_size_request (child, &child_requisition);
-
- requisition->width = MAX (requisition->width, child_requisition.width);
- requisition->height += child_requisition.height;
-
- if((subtree = GTK_TREE_ITEM(child)->subtree) &&
- gtk_widget_get_visible (subtree))
- {
- gtk_widget_size_request (subtree, &child_requisition);
-
- requisition->width = MAX (requisition->width,
- child_requisition.width);
-
- requisition->height += child_requisition.height;
- }
- }
- }
-
- requisition->width += GTK_CONTAINER (tree)->border_width * 2;
- requisition->height += GTK_CONTAINER (tree)->border_width * 2;
-
- requisition->width = MAX (requisition->width, 1);
- requisition->height = MAX (requisition->height, 1);
-
-}
-
-static void
-gtk_tree_unmap (GtkWidget *widget)
-{
-
- g_return_if_fail (GTK_IS_TREE (widget));
-
- gtk_widget_set_mapped (widget, FALSE);
- gdk_window_hide (widget->window);
-
-}
-
-void
-gtk_tree_unselect_child (GtkTree *tree,
- GtkWidget *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_signal_emit (GTK_OBJECT (tree), tree_signals[UNSELECT_CHILD], tree_item);
-}
-
-void
-gtk_tree_unselect_item (GtkTree *tree,
- gint item)
-{
- GList *tmp_list;
-
- g_return_if_fail (GTK_IS_TREE (tree));
-
- tmp_list = g_list_nth (tree->children, item);
- if (tmp_list)
- gtk_tree_unselect_child (tree, GTK_WIDGET (tmp_list->data));
-
-}
-
-static void
-gtk_real_tree_select_child (GtkTree *tree,
- GtkWidget *child)
-{
- GList *selection, *root_selection;
- GList *tmp_list;
- GtkWidget *tmp_item;
-
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (child));
-
- root_selection = tree->root_tree->selection;
-
- switch (tree->root_tree->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
-
- selection = root_selection;
-
- /* remove old selection list */
- while (selection)
- {
- tmp_item = selection->data;
-
- if (tmp_item != child)
- {
- gtk_tree_item_deselect (GTK_TREE_ITEM (tmp_item));
-
- tmp_list = selection;
- selection = selection->next;
-
- root_selection = g_list_remove_link (root_selection, tmp_list);
- g_object_unref (tmp_item);
-
- g_list_free (tmp_list);
- }
- else
- selection = selection->next;
- }
-
- if (child->state == GTK_STATE_NORMAL)
- {
- gtk_tree_item_select (GTK_TREE_ITEM (child));
- root_selection = g_list_prepend (root_selection, child);
- g_object_ref (child);
- }
- else if (child->state == GTK_STATE_SELECTED)
- {
- gtk_tree_item_deselect (GTK_TREE_ITEM (child));
- root_selection = g_list_remove (root_selection, child);
- g_object_unref (child);
- }
-
- tree->root_tree->selection = root_selection;
-
- gtk_signal_emit (GTK_OBJECT (tree->root_tree),
- tree_signals[SELECTION_CHANGED]);
- break;
-
-
- case GTK_SELECTION_BROWSE:
- selection = root_selection;
-
- while (selection)
- {
- tmp_item = selection->data;
-
- if (tmp_item != child)
- {
- gtk_tree_item_deselect (GTK_TREE_ITEM (tmp_item));
-
- tmp_list = selection;
- selection = selection->next;
-
- root_selection = g_list_remove_link (root_selection, tmp_list);
- g_object_unref (tmp_item);
-
- g_list_free (tmp_list);
- }
- else
- selection = selection->next;
- }
-
- tree->root_tree->selection = root_selection;
-
- if (child->state == GTK_STATE_NORMAL)
- {
- gtk_tree_item_select (GTK_TREE_ITEM (child));
- root_selection = g_list_prepend (root_selection, child);
- g_object_ref (child);
- tree->root_tree->selection = root_selection;
- gtk_signal_emit (GTK_OBJECT (tree->root_tree),
- tree_signals[SELECTION_CHANGED]);
- }
- break;
-
- case GTK_SELECTION_MULTIPLE:
- break;
- }
-}
-
-static void
-gtk_real_tree_unselect_child (GtkTree *tree,
- GtkWidget *child)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
- g_return_if_fail (GTK_IS_TREE_ITEM (child));
-
- switch (tree->selection_mode)
- {
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_BROWSE:
- if (child->state == GTK_STATE_SELECTED)
- {
- GtkTree* root_tree = GTK_TREE_ROOT_TREE(tree);
- gtk_tree_item_deselect (GTK_TREE_ITEM (child));
- root_tree->selection = g_list_remove (root_tree->selection, child);
- g_object_unref (child);
- gtk_signal_emit (GTK_OBJECT (tree->root_tree),
- tree_signals[SELECTION_CHANGED]);
- }
- break;
-
- case GTK_SELECTION_MULTIPLE:
- break;
- }
-}
-
-void
-gtk_tree_set_selection_mode (GtkTree *tree,
- GtkSelectionMode mode)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
-
- tree->selection_mode = mode;
-}
-
-void
-gtk_tree_set_view_mode (GtkTree *tree,
- GtkTreeViewMode mode)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
-
- tree->view_mode = mode;
-}
-
-void
-gtk_tree_set_view_lines (GtkTree *tree,
- gboolean flag)
-{
- g_return_if_fail (GTK_IS_TREE (tree));
-
- tree->view_line = flag;
-}
-
-#define __GTK_TREE_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtktree.h b/gtk/gtktree.h
deleted file mode 100644
index 1d0e1f7343..0000000000
--- a/gtk/gtktree.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifdef GTK_ENABLE_BROKEN
-
-#ifndef __GTK_TREE_H__
-#define __GTK_TREE_H__
-
-
-#include <gtk/gtkcontainer.h>
-
-
-G_BEGIN_DECLS
-
-/* set this flag to enable tree debugging output */
-/* #define TREE_DEBUG */
-
-#define GTK_TYPE_TREE (gtk_tree_get_type ())
-#define GTK_TREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE, GtkTree))
-#define GTK_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE, GtkTreeClass))
-#define GTK_IS_TREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE))
-#define GTK_IS_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE))
-#define GTK_TREE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE, GtkTreeClass))
-
-
-#define GTK_IS_ROOT_TREE(obj) ((GtkObject*) GTK_TREE(obj)->root_tree == (GtkObject*)obj)
-#define GTK_TREE_ROOT_TREE(obj) (GTK_TREE(obj)->root_tree ? GTK_TREE(obj)->root_tree : GTK_TREE(obj))
-#define GTK_TREE_SELECTION_OLD(obj) (GTK_TREE_ROOT_TREE(obj)->selection)
-
-typedef enum
-{
- GTK_TREE_VIEW_LINE, /* default view mode */
- GTK_TREE_VIEW_ITEM
-} GtkTreeViewMode;
-
-typedef struct _GtkTree GtkTree;
-typedef struct _GtkTreeClass GtkTreeClass;
-
-struct _GtkTree
-{
- GtkContainer container;
-
- GList *children;
-
- GtkTree* root_tree; /* owner of selection list */
- GtkWidget* tree_owner;
- GList *selection;
- guint level;
- guint indent_value;
- guint current_indent;
- guint selection_mode : 2;
- guint view_mode : 1;
- guint view_line : 1;
-};
-
-struct _GtkTreeClass
-{
- GtkContainerClass parent_class;
-
- void (* selection_changed) (GtkTree *tree);
- void (* select_child) (GtkTree *tree,
- GtkWidget *child);
- void (* unselect_child) (GtkTree *tree,
- GtkWidget *child);
-};
-
-
-GType gtk_tree_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_tree_new (void);
-void gtk_tree_append (GtkTree *tree,
- GtkWidget *tree_item);
-void gtk_tree_prepend (GtkTree *tree,
- GtkWidget *tree_item);
-void gtk_tree_insert (GtkTree *tree,
- GtkWidget *tree_item,
- gint position);
-void gtk_tree_remove_items (GtkTree *tree,
- GList *items);
-void gtk_tree_clear_items (GtkTree *tree,
- gint start,
- gint end);
-void gtk_tree_select_item (GtkTree *tree,
- gint item);
-void gtk_tree_unselect_item (GtkTree *tree,
- gint item);
-void gtk_tree_select_child (GtkTree *tree,
- GtkWidget *tree_item);
-void gtk_tree_unselect_child (GtkTree *tree,
- GtkWidget *tree_item);
-gint gtk_tree_child_position (GtkTree *tree,
- GtkWidget *child);
-void gtk_tree_set_selection_mode (GtkTree *tree,
- GtkSelectionMode mode);
-void gtk_tree_set_view_mode (GtkTree *tree,
- GtkTreeViewMode mode);
-void gtk_tree_set_view_lines (GtkTree *tree,
- gboolean flag);
-
-/* deprecated function, use gtk_container_remove instead.
- */
-void gtk_tree_remove_item (GtkTree *tree,
- GtkWidget *child);
-
-
-G_END_DECLS
-
-#endif /* __GTK_TREE_H__ */
-
-#endif /* GTK_ENABLE_BROKEN */
diff --git a/gtk/gtktreednd.h b/gtk/gtktreednd.h
index 517ba50d2a..e0de421f90 100644
--- a/gtk/gtktreednd.h
+++ b/gtk/gtktreednd.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreeitem.c b/gtk/gtktreeitem.c
deleted file mode 100644
index a6ca505ffe..0000000000
--- a/gtk/gtktreeitem.c
+++ /dev/null
@@ -1,1000 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef GTK_DISABLE_DEPRECATED
-
-#include "config.h"
-
-#include "gtklabel.h"
-#include "gtkeventbox.h"
-#include "gtkpixmap.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtksignal.h"
-#define GTK_ENABLE_BROKEN
-#include "gtktree.h"
-#include "gtktreeitem.h"
-#include "gtkintl.h"
-
-#include "gtkalias.h"
-
-#include "tree_plus.xpm"
-#include "tree_minus.xpm"
-
-#define DEFAULT_DELTA 9
-
-enum {
- COLLAPSE_TREE,
- EXPAND_TREE,
- LAST_SIGNAL
-};
-
-typedef struct _GtkTreePixmaps GtkTreePixmaps;
-
-struct _GtkTreePixmaps {
- gint refcount;
- GdkColormap *colormap;
-
- GdkPixmap *pixmap_plus;
- GdkPixmap *pixmap_minus;
- GdkBitmap *mask_plus;
- GdkBitmap *mask_minus;
-};
-
-static GList *pixmaps = NULL;
-
-static void gtk_tree_item_class_init (GtkTreeItemClass *klass);
-static void gtk_tree_item_init (GtkTreeItem *tree_item);
-static void gtk_tree_item_realize (GtkWidget *widget);
-static void gtk_tree_item_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_tree_item_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void gtk_tree_item_paint (GtkWidget *widget,
- GdkRectangle *area);
-static gint gtk_tree_item_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_tree_item_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static void gtk_tree_item_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data);
-
-static void gtk_real_tree_item_select (GtkItem *item);
-static void gtk_real_tree_item_deselect (GtkItem *item);
-static void gtk_real_tree_item_toggle (GtkItem *item);
-static void gtk_real_tree_item_expand (GtkTreeItem *item);
-static void gtk_real_tree_item_collapse (GtkTreeItem *item);
-static void gtk_tree_item_destroy (GtkObject *object);
-static gint gtk_tree_item_subtree_button_click (GtkWidget *widget);
-static void gtk_tree_item_subtree_button_changed_state (GtkWidget *widget);
-
-static void gtk_tree_item_map(GtkWidget*);
-static void gtk_tree_item_unmap(GtkWidget*);
-
-static void gtk_tree_item_add_pixmaps (GtkTreeItem *tree_item);
-static void gtk_tree_item_remove_pixmaps (GtkTreeItem *tree_item);
-
-static GtkItemClass *parent_class = NULL;
-static guint tree_item_signals[LAST_SIGNAL] = { 0 };
-
-GtkType
-gtk_tree_item_get_type (void)
-{
- static GtkType tree_item_type = 0;
-
- if (!tree_item_type)
- {
- static const GtkTypeInfo tree_item_info =
- {
- "GtkTreeItem",
- sizeof (GtkTreeItem),
- sizeof (GtkTreeItemClass),
- (GtkClassInitFunc) gtk_tree_item_class_init,
- (GtkObjectInitFunc) gtk_tree_item_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- I_("GtkTreeItem");
- tree_item_type = gtk_type_unique (gtk_item_get_type (), &tree_item_info);
- }
-
- return tree_item_type;
-}
-
-static void
-gtk_tree_item_class_init (GtkTreeItemClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
- GtkItemClass *item_class;
-
- parent_class = gtk_type_class (GTK_TYPE_ITEM);
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- item_class = (GtkItemClass*) class;
- container_class = (GtkContainerClass*) class;
-
- object_class->destroy = gtk_tree_item_destroy;
-
- widget_class->realize = gtk_tree_item_realize;
- widget_class->size_request = gtk_tree_item_size_request;
- widget_class->size_allocate = gtk_tree_item_size_allocate;
- widget_class->button_press_event = gtk_tree_item_button_press;
- widget_class->expose_event = gtk_tree_item_expose;
- widget_class->map = gtk_tree_item_map;
- widget_class->unmap = gtk_tree_item_unmap;
-
- container_class->forall = gtk_tree_item_forall;
-
- item_class->select = gtk_real_tree_item_select;
- item_class->deselect = gtk_real_tree_item_deselect;
- item_class->toggle = gtk_real_tree_item_toggle;
-
- class->expand = gtk_real_tree_item_expand;
- class->collapse = gtk_real_tree_item_collapse;
-
- tree_item_signals[EXPAND_TREE] =
- gtk_signal_new (I_("expand"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTreeItemClass, expand),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
- tree_item_signals[COLLAPSE_TREE] =
- gtk_signal_new (I_("collapse"),
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GtkTreeItemClass, collapse),
- _gtk_marshal_VOID__VOID,
- GTK_TYPE_NONE, 0);
-}
-
-/* callback for event box mouse event */
-static gint
-gtk_tree_item_subtree_button_click (GtkWidget *widget)
-{
- GtkTreeItem* item;
-
- g_return_val_if_fail (GTK_IS_EVENT_BOX (widget), FALSE);
-
- item = (GtkTreeItem*) gtk_object_get_user_data (GTK_OBJECT (widget));
- if (!gtk_widget_is_sensitive (GTK_WIDGET (item)))
- return FALSE;
-
- if (item->expanded)
- gtk_tree_item_collapse (item);
- else
- gtk_tree_item_expand (item);
-
- return TRUE;
-}
-
-/* callback for event box state changed */
-static void
-gtk_tree_item_subtree_button_changed_state (GtkWidget *widget)
-{
- g_return_if_fail (GTK_IS_EVENT_BOX (widget));
-
- if (gtk_widget_get_visible (widget))
- {
-
- if (widget->state == GTK_STATE_NORMAL)
- gdk_window_set_background (widget->window, &widget->style->base[widget->state]);
- else
- gdk_window_set_background (widget->window, &widget->style->bg[widget->state]);
-
- if (gtk_widget_is_drawable (widget))
- gdk_window_clear_area (widget->window, 0, 0,
- widget->allocation.width, widget->allocation.height);
- }
-}
-
-static void
-gtk_tree_item_init (GtkTreeItem *tree_item)
-{
- GtkWidget *eventbox, *pixmapwid;
-
- tree_item->expanded = FALSE;
- tree_item->subtree = NULL;
- gtk_widget_set_can_focus (GTK_WIDGET (tree_item), TRUE);
-
- /* create an event box containing one pixmaps */
- eventbox = gtk_event_box_new();
- gtk_widget_set_events (eventbox, GDK_BUTTON_PRESS_MASK);
- gtk_signal_connect(GTK_OBJECT(eventbox), "state-changed",
- G_CALLBACK (gtk_tree_item_subtree_button_changed_state),
- (gpointer)NULL);
- gtk_signal_connect(GTK_OBJECT(eventbox), "realize",
- G_CALLBACK (gtk_tree_item_subtree_button_changed_state),
- (gpointer)NULL);
- gtk_signal_connect(GTK_OBJECT(eventbox), "button-press-event",
- G_CALLBACK (gtk_tree_item_subtree_button_click),
- (gpointer)NULL);
- gtk_object_set_user_data(GTK_OBJECT(eventbox), tree_item);
- tree_item->pixmaps_box = eventbox;
-
- /* create pixmap for button '+' */
- pixmapwid = gtk_type_new (gtk_pixmap_get_type ());
- if (!tree_item->expanded)
- gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid);
- gtk_widget_show (pixmapwid);
- tree_item->plus_pix_widget = pixmapwid;
- g_object_ref_sink (tree_item->plus_pix_widget);
-
- /* create pixmap for button '-' */
- pixmapwid = gtk_type_new (gtk_pixmap_get_type ());
- if (tree_item->expanded)
- gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid);
- gtk_widget_show (pixmapwid);
- tree_item->minus_pix_widget = pixmapwid;
- g_object_ref_sink (tree_item->minus_pix_widget);
-
- gtk_widget_set_parent (eventbox, GTK_WIDGET (tree_item));
-}
-
-
-GtkWidget*
-gtk_tree_item_new (void)
-{
- GtkWidget *tree_item;
-
- tree_item = GTK_WIDGET (gtk_type_new (gtk_tree_item_get_type ()));
-
- return tree_item;
-}
-
-GtkWidget*
-gtk_tree_item_new_with_label (const gchar *label)
-{
- GtkWidget *tree_item;
- GtkWidget *label_widget;
-
- tree_item = gtk_tree_item_new ();
- label_widget = gtk_label_new (label);
- gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5);
-
- gtk_container_add (GTK_CONTAINER (tree_item), label_widget);
- gtk_widget_show (label_widget);
-
-
- return tree_item;
-}
-
-void
-gtk_tree_item_set_subtree (GtkTreeItem *tree_item,
- GtkWidget *subtree)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
- g_return_if_fail (GTK_IS_TREE (subtree));
-
- if (tree_item->subtree)
- {
- g_warning("there is already a subtree for this tree item\n");
- return;
- }
-
- tree_item->subtree = subtree;
- GTK_TREE (subtree)->tree_owner = GTK_WIDGET (tree_item);
-
- /* show subtree button */
- if (tree_item->pixmaps_box)
- gtk_widget_show (tree_item->pixmaps_box);
-
- if (tree_item->expanded)
- gtk_widget_show (subtree);
- else
- gtk_widget_hide (subtree);
-
- gtk_widget_set_parent (subtree, GTK_WIDGET (tree_item)->parent);
-}
-
-void
-gtk_tree_item_select (GtkTreeItem *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_item_select (GTK_ITEM (tree_item));
-}
-
-void
-gtk_tree_item_deselect (GtkTreeItem *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_item_deselect (GTK_ITEM (tree_item));
-}
-
-void
-gtk_tree_item_expand (GtkTreeItem *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[EXPAND_TREE], NULL);
-}
-
-void
-gtk_tree_item_collapse (GtkTreeItem *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[COLLAPSE_TREE], NULL);
-}
-
-static void
-gtk_tree_item_add_pixmaps (GtkTreeItem *tree_item)
-{
- GList *tmp_list;
- GdkColormap *colormap;
- GtkTreePixmaps *pixmap_node = NULL;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- if (tree_item->pixmaps)
- return;
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_item));
-
- tmp_list = pixmaps;
- while (tmp_list)
- {
- pixmap_node = (GtkTreePixmaps *)tmp_list->data;
-
- if (pixmap_node->colormap == colormap)
- break;
-
- tmp_list = tmp_list->next;
- }
-
- if (tmp_list)
- {
- pixmap_node->refcount++;
- tree_item->pixmaps = tmp_list;
- }
- else
- {
- pixmap_node = g_new (GtkTreePixmaps, 1);
-
- pixmap_node->colormap = colormap;
- g_object_ref (colormap);
-
- pixmap_node->refcount = 1;
-
- /* create pixmaps for plus icon */
- pixmap_node->pixmap_plus =
- gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window,
- &pixmap_node->mask_plus,
- NULL,
- (gchar **)tree_plus);
-
- /* create pixmaps for minus icon */
- pixmap_node->pixmap_minus =
- gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window,
- &pixmap_node->mask_minus,
- NULL,
- (gchar **)tree_minus);
-
- tree_item->pixmaps = pixmaps = g_list_prepend (pixmaps, pixmap_node);
- }
-
- gtk_pixmap_set (GTK_PIXMAP (tree_item->plus_pix_widget),
- pixmap_node->pixmap_plus, pixmap_node->mask_plus);
- gtk_pixmap_set (GTK_PIXMAP (tree_item->minus_pix_widget),
- pixmap_node->pixmap_minus, pixmap_node->mask_minus);
-}
-
-static void
-gtk_tree_item_remove_pixmaps (GtkTreeItem *tree_item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- if (tree_item->pixmaps)
- {
- GtkTreePixmaps *pixmap_node = (GtkTreePixmaps *)tree_item->pixmaps->data;
-
- g_assert (pixmap_node->refcount > 0);
-
- if (--pixmap_node->refcount == 0)
- {
- g_object_unref (pixmap_node->colormap);
- g_object_unref (pixmap_node->pixmap_plus);
- g_object_unref (pixmap_node->mask_plus);
- g_object_unref (pixmap_node->pixmap_minus);
- g_object_unref (pixmap_node->mask_minus);
-
- pixmaps = g_list_remove_link (pixmaps, tree_item->pixmaps);
- g_list_free_1 (tree_item->pixmaps);
- g_free (pixmap_node);
- }
-
- tree_item->pixmaps = NULL;
- }
-}
-
-static void
-gtk_tree_item_realize (GtkWidget *widget)
-{
- GTK_WIDGET_CLASS (parent_class)->realize (widget);
-
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_STATE_NORMAL]);
-
- gtk_tree_item_add_pixmaps (GTK_TREE_ITEM (widget));
-}
-
-static void
-gtk_tree_item_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkBin *bin = GTK_BIN (widget);
- GtkTreeItem *item = GTK_TREE_ITEM (widget);
- GtkRequisition child_requisition;
-
- requisition->width = (GTK_CONTAINER (widget)->border_width +
- widget->style->xthickness) * 2;
- requisition->height = GTK_CONTAINER (widget)->border_width * 2;
-
- if (bin->child && gtk_widget_get_visible (bin->child))
- {
- GtkRequisition pix_requisition;
-
- gtk_widget_size_request (bin->child, &child_requisition);
-
- requisition->width += child_requisition.width;
-
- gtk_widget_size_request (item->pixmaps_box,
- &pix_requisition);
- requisition->width += pix_requisition.width + DEFAULT_DELTA +
- GTK_TREE (widget->parent)->current_indent;
-
- requisition->height += MAX (child_requisition.height,
- pix_requisition.height);
- }
-}
-
-static void
-gtk_tree_item_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkBin *bin = GTK_BIN (widget);
- GtkTreeItem *item = GTK_TREE_ITEM (widget);
- GtkAllocation child_allocation;
- gint border_width;
- int temp;
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- if (bin->child)
- {
- border_width = (GTK_CONTAINER (widget)->border_width +
- widget->style->xthickness);
-
- child_allocation.x = border_width + GTK_TREE(widget->parent)->current_indent;
- child_allocation.y = GTK_CONTAINER (widget)->border_width;
-
- child_allocation.width = item->pixmaps_box->requisition.width;
- child_allocation.height = item->pixmaps_box->requisition.height;
-
- temp = allocation->height - child_allocation.height;
- child_allocation.y += ( temp / 2 ) + ( temp % 2 );
-
- gtk_widget_size_allocate (item->pixmaps_box, &child_allocation);
-
- child_allocation.y = GTK_CONTAINER (widget)->border_width;
- child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2);
- child_allocation.x += item->pixmaps_box->requisition.width+DEFAULT_DELTA;
-
- child_allocation.width =
- MAX (1, (gint)allocation->width - ((gint)child_allocation.x + border_width));
-
- gtk_widget_size_allocate (bin->child, &child_allocation);
- }
-}
-
-static void
-gtk_tree_item_draw_lines (GtkWidget *widget)
-{
- GtkTreeItem* item;
- GtkTree* tree;
- guint lx1, ly1, lx2, ly2;
- GdkGC* gc;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (widget));
-
- item = GTK_TREE_ITEM(widget);
- tree = GTK_TREE(widget->parent);
-
- if (!tree->view_line)
- return;
-
- gc = widget->style->text_gc[GTK_STATE_NORMAL];
-
- /* draw vertical line */
- lx1 = item->pixmaps_box->allocation.width;
- lx1 = lx2 = ((lx1 / 2) + (lx1 % 2) +
- GTK_CONTAINER (widget)->border_width + 1 + tree->current_indent);
- ly1 = 0;
- ly2 = widget->allocation.height;
-
- if (g_list_last (tree->children)->data == widget)
- ly2 = (ly2 / 2) + (ly2 % 2);
-
- if (tree != tree->root_tree)
- gdk_draw_line (widget->window, gc, lx1, ly1, lx2, ly2);
-
- /* draw vertical line for subtree connecting */
- if(g_list_last(tree->children)->data != (gpointer)widget)
- ly2 = (ly2 / 2) + (ly2 % 2);
-
- lx2 += DEFAULT_DELTA;
-
- if (item->subtree && item->expanded)
- gdk_draw_line (widget->window, gc,
- lx2, ly2, lx2, widget->allocation.height);
-
- /* draw horizontal line */
- ly1 = ly2;
- lx2 += 2;
-
- gdk_draw_line (widget->window, gc, lx1, ly1, lx2, ly2);
-
- lx2 -= DEFAULT_DELTA+2;
- ly1 = 0;
- ly2 = widget->allocation.height;
-
- if (tree != tree->root_tree)
- {
- item = GTK_TREE_ITEM (tree->tree_owner);
- tree = GTK_TREE (GTK_WIDGET (tree)->parent);
- while (tree != tree->root_tree)
- {
- lx1 = lx2 -= tree->indent_value;
-
- if (g_list_last (tree->children)->data != item)
- gdk_draw_line (widget->window, gc, lx1, ly1, lx2, ly2);
- item = GTK_TREE_ITEM (tree->tree_owner);
- tree = GTK_TREE (GTK_WIDGET (tree)->parent);
- }
- }
-}
-
-static void
-gtk_tree_item_paint (GtkWidget *widget,
- GdkRectangle *area)
-{
- GdkRectangle child_area, item_area;
- GtkTreeItem* tree_item;
-
- /* FIXME: We should honor tree->view_mode, here - I think
- * the desired effect is that when the mode is VIEW_ITEM,
- * only the subitem is drawn as selected, not the entire
- * line. (Like the way that the tree in Windows Explorer
- * works).
- */
- if (gtk_widget_is_drawable (widget))
- {
- tree_item = GTK_TREE_ITEM(widget);
-
- if (widget->state == GTK_STATE_NORMAL)
- {
- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
- gdk_window_clear_area (widget->window, area->x, area->y, area->width, area->height);
- }
- else
- {
- if (!gtk_widget_is_sensitive (widget))
- gtk_paint_flat_box(widget->style, widget->window,
- widget->state, GTK_SHADOW_NONE,
- area, widget, "treeitem",
- 0, 0, -1, -1);
- else
- gtk_paint_flat_box(widget->style, widget->window,
- widget->state, GTK_SHADOW_ETCHED_OUT,
- area, widget, "treeitem",
- 0, 0, -1, -1);
- }
-
- /* draw left size of tree item */
- item_area.x = 0;
- item_area.y = 0;
- item_area.width = (tree_item->pixmaps_box->allocation.width + DEFAULT_DELTA +
- GTK_TREE (widget->parent)->current_indent + 2);
- item_area.height = widget->allocation.height;
-
-
- if (gdk_rectangle_intersect(&item_area, area, &child_area))
- {
-
- gtk_tree_item_draw_lines(widget);
-
- if (tree_item->pixmaps_box &&
- gtk_widget_get_visible(tree_item->pixmaps_box) &&
- gtk_widget_intersect (tree_item->pixmaps_box, area, &child_area))
- {
- gtk_widget_queue_draw_area (tree_item->pixmaps_box,
- child_area.x, child_area.y,
- child_area.width, child_area.height);
- gdk_window_process_updates (tree_item->pixmaps_box->window, TRUE);
- }
- }
-
- if (gtk_widget_has_focus (widget))
- gtk_paint_focus (widget->style, widget->window, gtk_widget_get_state (widget),
- NULL, widget, "treeitem",
- 0, 0,
- widget->allocation.width,
- widget->allocation.height);
-
- }
-}
-
-static gint
-gtk_tree_item_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- if (event->type == GDK_BUTTON_PRESS
- && gtk_widget_is_sensitive(widget)
- && !gtk_widget_has_focus (widget))
- gtk_widget_grab_focus (widget);
-
- return (event->type == GDK_BUTTON_PRESS && gtk_widget_is_sensitive(widget));
-}
-
-static void
-gtk_tree_item_expose_child (GtkWidget *child,
- gpointer client_data)
-{
- struct {
- GtkWidget *container;
- GdkEventExpose *event;
- } *data = client_data;
-
- if (gtk_widget_is_drawable (child) &&
- !gtk_widget_get_has_window (child) &&
- (child->window == data->event->window))
- {
- GdkEvent *child_event = gdk_event_new (GDK_EXPOSE);
- child_event->expose = *data->event;
- g_object_ref (child_event->expose.window);
-
- child_event->expose.region = gtk_widget_region_intersect (child,
- data->event->region);
- if (!gdk_region_empty (child_event->expose.region))
- {
- gdk_region_get_clipbox (child_event->expose.region, &child_event->expose.area);
- gtk_widget_send_expose (child, child_event);
- }
- gdk_event_free (child_event);
- }
-}
-
-static gint
-gtk_tree_item_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- struct {
- GtkWidget *container;
- GdkEventExpose *event;
- } data;
-
- if (gtk_widget_is_drawable (widget))
- {
- gtk_tree_item_paint (widget, &event->area);
-
- data.container = widget;
- data.event = event;
-
- gtk_container_forall (GTK_CONTAINER (widget),
- gtk_tree_item_expose_child,
- &data);
- }
-
- return FALSE;
-}
-
-static void
-gtk_real_tree_item_select (GtkItem *item)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (item));
-
- widget = GTK_WIDGET (item);
-
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
-
- if (!widget->parent || GTK_TREE (widget->parent)->view_mode == GTK_TREE_VIEW_LINE)
- gtk_widget_set_state (GTK_TREE_ITEM (item)->pixmaps_box, GTK_STATE_SELECTED);
-}
-
-static void
-gtk_real_tree_item_deselect (GtkItem *item)
-{
- GtkTreeItem *tree_item;
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (item));
-
- tree_item = GTK_TREE_ITEM (item);
- widget = GTK_WIDGET (item);
-
- gtk_widget_set_state (widget, GTK_STATE_NORMAL);
-
- if (!widget->parent || GTK_TREE (widget->parent)->view_mode == GTK_TREE_VIEW_LINE)
- gtk_widget_set_state (tree_item->pixmaps_box, GTK_STATE_NORMAL);
-}
-
-static void
-gtk_real_tree_item_toggle (GtkItem *item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM (item));
-
- if(!gtk_widget_is_sensitive(GTK_WIDGET (item)))
- return;
-
- if (GTK_IS_TREE (GTK_WIDGET (item)->parent))
- gtk_tree_select_child (GTK_TREE (GTK_WIDGET (item)->parent),
- GTK_WIDGET (item));
- else
- {
- /* Should we really bother with this bit? A listitem not in a list?
- * -Johannes Keukelaar
- * yes, always be on the safe side!
- * -timj
- */
- if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
- else
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
- }
-}
-
-static void
-gtk_real_tree_item_expand (GtkTreeItem *tree_item)
-{
- GtkTree* tree;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- if (tree_item->subtree && !tree_item->expanded)
- {
- tree = GTK_TREE (GTK_WIDGET (tree_item)->parent);
-
- /* hide subtree widget */
- gtk_widget_show (tree_item->subtree);
-
- /* hide button '+' and show button '-' */
- if (tree_item->pixmaps_box)
- {
- gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box),
- tree_item->plus_pix_widget);
- gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box),
- tree_item->minus_pix_widget);
- }
- if (tree->root_tree)
- gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree));
- tree_item->expanded = TRUE;
- }
-}
-
-static void
-gtk_real_tree_item_collapse (GtkTreeItem *tree_item)
-{
- GtkTree* tree;
-
- g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));
-
- if (tree_item->subtree && tree_item->expanded)
- {
- tree = GTK_TREE (GTK_WIDGET (tree_item)->parent);
-
- /* hide subtree widget */
- gtk_widget_hide (tree_item->subtree);
-
- /* hide button '-' and show button '+' */
- if (tree_item->pixmaps_box)
- {
- gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box),
- tree_item->minus_pix_widget);
- gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box),
- tree_item->plus_pix_widget);
- }
- if (tree->root_tree)
- gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree));
- tree_item->expanded = FALSE;
- }
-}
-
-static void
-gtk_tree_item_destroy (GtkObject *object)
-{
- GtkTreeItem* item = GTK_TREE_ITEM(object);
- GtkWidget* child;
-
-#ifdef TREE_DEBUG
- g_message("+ gtk_tree_item_destroy [object %#x]\n", (int)object);
-#endif /* TREE_DEBUG */
-
- /* free sub tree if it exist */
- child = item->subtree;
- if (child)
- {
- g_object_ref (child);
- gtk_widget_unparent (child);
- gtk_widget_destroy (child);
- g_object_unref (child);
- item->subtree = NULL;
- }
-
- /* free pixmaps box */
- child = item->pixmaps_box;
- if (child)
- {
- g_object_ref (child);
- gtk_widget_unparent (child);
- gtk_widget_destroy (child);
- g_object_unref (child);
- item->pixmaps_box = NULL;
- }
-
-
- /* destroy plus pixmap */
- if (item->plus_pix_widget)
- {
- gtk_widget_destroy (item->plus_pix_widget);
- g_object_unref (item->plus_pix_widget);
- item->plus_pix_widget = NULL;
- }
-
- /* destroy minus pixmap */
- if (item->minus_pix_widget)
- {
- gtk_widget_destroy (item->minus_pix_widget);
- g_object_unref (item->minus_pix_widget);
- item->minus_pix_widget = NULL;
- }
-
- /* By removing the pixmaps here, and not in unrealize, we depend on
- * the fact that a widget can never change colormap or visual.
- */
- gtk_tree_item_remove_pixmaps (item);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-
-#ifdef TREE_DEBUG
- g_message("- gtk_tree_item_destroy\n");
-#endif /* TREE_DEBUG */
-}
-
-void
-gtk_tree_item_remove_subtree (GtkTreeItem* item)
-{
- g_return_if_fail (GTK_IS_TREE_ITEM(item));
- g_return_if_fail (item->subtree != NULL);
-
- if (GTK_TREE (item->subtree)->children)
- {
- /* The following call will remove the children and call
- * gtk_tree_item_remove_subtree() again. So we are done.
- */
- gtk_tree_remove_items (GTK_TREE (item->subtree),
- GTK_TREE (item->subtree)->children);
- return;
- }
-
- if (gtk_widget_get_mapped (item->subtree))
- gtk_widget_unmap (item->subtree);
-
- gtk_widget_unparent (item->subtree);
-
- if (item->pixmaps_box)
- gtk_widget_hide (item->pixmaps_box);
-
- item->subtree = NULL;
-
- if (item->expanded)
- {
- item->expanded = FALSE;
- if (item->pixmaps_box)
- {
- gtk_container_remove (GTK_CONTAINER (item->pixmaps_box),
- item->minus_pix_widget);
- gtk_container_add (GTK_CONTAINER (item->pixmaps_box),
- item->plus_pix_widget);
- }
- }
-}
-
-static void
-gtk_tree_item_map (GtkWidget *widget)
-{
- GtkBin *bin = GTK_BIN (widget);
- GtkTreeItem* item = GTK_TREE_ITEM(widget);
-
- gtk_widget_set_mapped (widget, TRUE);
-
- if(item->pixmaps_box &&
- gtk_widget_get_visible (item->pixmaps_box) &&
- !gtk_widget_get_mapped (item->pixmaps_box))
- gtk_widget_map (item->pixmaps_box);
-
- if (bin->child &&
- gtk_widget_get_visible (bin->child) &&
- !gtk_widget_get_mapped (bin->child))
- gtk_widget_map (bin->child);
-
- gdk_window_show (widget->window);
-}
-
-static void
-gtk_tree_item_unmap (GtkWidget *widget)
-{
- GtkBin *bin = GTK_BIN (widget);
- GtkTreeItem* item = GTK_TREE_ITEM(widget);
-
- gtk_widget_set_mapped (widget, FALSE);
-
- gdk_window_hide (widget->window);
-
- if(item->pixmaps_box &&
- gtk_widget_get_visible (item->pixmaps_box) &&
- gtk_widget_get_mapped (item->pixmaps_box))
- gtk_widget_unmap (bin->child);
-
- if (bin->child &&
- gtk_widget_get_visible (bin->child) &&
- gtk_widget_get_mapped (bin->child))
- gtk_widget_unmap (bin->child);
-}
-
-static void
-gtk_tree_item_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- GtkBin *bin = GTK_BIN (container);
- GtkTreeItem *tree_item = GTK_TREE_ITEM (container);
-
- if (bin->child)
- (* callback) (bin->child, callback_data);
- if (include_internals && tree_item->subtree)
- (* callback) (tree_item->subtree, callback_data);
- if (include_internals && tree_item->pixmaps_box)
- (* callback) (tree_item->pixmaps_box, callback_data);
-}
-
-#define __GTK_TREE_ITEM_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtktreeitem.h b/gtk/gtktreeitem.h
deleted file mode 100644
index 0e8dbaf1dd..0000000000
--- a/gtk/gtktreeitem.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* 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 Lesser 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifdef GTK_ENABLE_BROKEN
-
-#ifndef __GTK_TREE_ITEM_H__
-#define __GTK_TREE_ITEM_H__
-
-
-#include <gtk/gtkitem.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TREE_ITEM (gtk_tree_item_get_type ())
-#define GTK_TREE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_ITEM, GtkTreeItem))
-#define GTK_TREE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_ITEM, GtkTreeItemClass))
-#define GTK_IS_TREE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_ITEM))
-#define GTK_IS_TREE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_ITEM))
-#define GTK_TREE_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_ITEM, GtkTreeItemClass))
-
-
-#define GTK_TREE_ITEM_SUBTREE(obj) (GTK_TREE_ITEM(obj)->subtree)
-
-
-typedef struct _GtkTreeItem GtkTreeItem;
-typedef struct _GtkTreeItemClass GtkTreeItemClass;
-
-struct _GtkTreeItem
-{
- GtkItem item;
-
- GtkWidget *subtree;
- GtkWidget *pixmaps_box;
- GtkWidget *plus_pix_widget, *minus_pix_widget;
-
- GList *pixmaps; /* pixmap node for this items color depth */
-
- guint expanded : 1;
-};
-
-struct _GtkTreeItemClass
-{
- GtkItemClass parent_class;
-
- void (* expand) (GtkTreeItem *tree_item);
- void (* collapse) (GtkTreeItem *tree_item);
-};
-
-
-GType gtk_tree_item_get_type (void) G_GNUC_CONST;
-GtkWidget* gtk_tree_item_new (void);
-GtkWidget* gtk_tree_item_new_with_label (const gchar *label);
-void gtk_tree_item_set_subtree (GtkTreeItem *tree_item,
- GtkWidget *subtree);
-void gtk_tree_item_remove_subtree (GtkTreeItem *tree_item);
-void gtk_tree_item_select (GtkTreeItem *tree_item);
-void gtk_tree_item_deselect (GtkTreeItem *tree_item);
-void gtk_tree_item_expand (GtkTreeItem *tree_item);
-void gtk_tree_item_collapse (GtkTreeItem *tree_item);
-
-
-G_END_DECLS
-
-#endif /* __GTK_TREE_ITEM_H__ */
-
-#endif /* GTK_ENABLE_BROKEN */
diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h
index ba0fe4ef3e..e7f59c672b 100644
--- a/gtk/gtktreemodel.h
+++ b/gtk/gtktreemodel.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -153,10 +153,6 @@ gboolean gtk_tree_path_is_ancestor (GtkTreePath *path,
gboolean gtk_tree_path_is_descendant (GtkTreePath *path,
GtkTreePath *ancestor);
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_tree_path_new_root() gtk_tree_path_new_first()
-#endif /* !GTK_DISABLE_DEPRECATED */
-
/* Row reference (an object that tracks model changes so it refers to the same
* row always; a path refers to a position, not a fixed row). You almost always
* want to call gtk_tree_row_reference_new.
@@ -245,11 +241,6 @@ void gtk_tree_model_foreach (GtkTreeModel *model
GtkTreeModelForeachFunc func,
gpointer user_data);
-
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_tree_model_get_iter_root(tree_model, iter) gtk_tree_model_get_iter_first(tree_model, iter)
-#endif /* !GTK_DISABLE_DEPRECATED */
-
/* Signals */
void gtk_tree_model_row_changed (GtkTreeModel *tree_model,
GtkTreePath *path,
diff --git a/gtk/gtktreemodelfilter.h b/gtk/gtktreemodelfilter.h
index dbff64aed3..653e395a03 100644
--- a/gtk/gtktreemodelfilter.h
+++ b/gtk/gtktreemodelfilter.h
@@ -18,7 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreemodelsort.h b/gtk/gtktreemodelsort.h
index 4823398579..e144b32c78 100644
--- a/gtk/gtktreemodelsort.h
+++ b/gtk/gtktreemodelsort.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreeselection.h b/gtk/gtktreeselection.h
index ece7ab8e6c..267a2af37e 100644
--- a/gtk/gtktreeselection.h
+++ b/gtk/gtktreeselection.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreesortable.h b/gtk/gtktreesortable.h
index a576e2dff0..52dea7199d 100644
--- a/gtk/gtktreesortable.h
+++ b/gtk/gtktreesortable.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h
index b47b1ecb33..aee9baca97 100644
--- a/gtk/gtktreestore.h
+++ b/gtk/gtktreestore.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index f464ec4010..5f1fb04f55 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -13018,71 +13018,6 @@ gtk_tree_view_get_visible_rect (GtkTreeView *tree_view,
}
/**
- * gtk_tree_view_widget_to_tree_coords:
- * @tree_view: a #GtkTreeView
- * @wx: X coordinate relative to bin_window
- * @wy: Y coordinate relative to bin_window
- * @tx: return location for tree X coordinate
- * @ty: return location for tree Y coordinate
- *
- * Converts bin_window coordinates to coordinates for the
- * tree (the full scrollable area of the tree).
- *
- * Deprecated: 2.12: Due to historial reasons the name of this function is
- * incorrect. For converting coordinates relative to the widget to
- * bin_window coordinates, please see
- * gtk_tree_view_convert_widget_to_bin_window_coords().
- *
- **/
-void
-gtk_tree_view_widget_to_tree_coords (GtkTreeView *tree_view,
- gint wx,
- gint wy,
- gint *tx,
- gint *ty)
-{
- g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-
- if (tx)
- *tx = wx + tree_view->priv->hadjustment->value;
- if (ty)
- *ty = wy + tree_view->priv->dy;
-}
-
-/**
- * gtk_tree_view_tree_to_widget_coords:
- * @tree_view: a #GtkTreeView
- * @tx: tree X coordinate
- * @ty: tree Y coordinate
- * @wx: return location for X coordinate relative to bin_window
- * @wy: return location for Y coordinate relative to bin_window
- *
- * Converts tree coordinates (coordinates in full scrollable area of the tree)
- * to bin_window coordinates.
- *
- * Deprecated: 2.12: Due to historial reasons the name of this function is
- * incorrect. For converting bin_window coordinates to coordinates relative
- * to bin_window, please see
- * gtk_tree_view_convert_bin_window_to_widget_coords().
- *
- **/
-void
-gtk_tree_view_tree_to_widget_coords (GtkTreeView *tree_view,
- gint tx,
- gint ty,
- gint *wx,
- gint *wy)
-{
- g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
-
- if (wx)
- *wx = tx - tree_view->priv->hadjustment->value;
- if (wy)
- *wy = ty - tree_view->priv->dy;
-}
-
-
-/**
* gtk_tree_view_convert_widget_to_tree_coords:
* @tree_view: a #GtkTreeView
* @wx: X coordinate relative to the widget
diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h
index 098ab5ce17..71734c941e 100644
--- a/gtk/gtktreeview.h
+++ b/gtk/gtktreeview.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -260,19 +260,6 @@ void gtk_tree_view_get_background_area (GtkTreeView
GdkRectangle *rect);
void gtk_tree_view_get_visible_rect (GtkTreeView *tree_view,
GdkRectangle *visible_rect);
-
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_tree_view_widget_to_tree_coords (GtkTreeView *tree_view,
- gint wx,
- gint wy,
- gint *tx,
- gint *ty);
-void gtk_tree_view_tree_to_widget_coords (GtkTreeView *tree_view,
- gint tx,
- gint ty,
- gint *wx,
- gint *wy);
-#endif /* !GTK_DISABLE_DEPRECATED */
gboolean gtk_tree_view_get_visible_range (GtkTreeView *tree_view,
GtkTreePath **start_path,
GtkTreePath **end_path);
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index 348a9df98a..5c36375321 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -1587,23 +1587,6 @@ gtk_tree_view_column_cell_layout_get_cells (GtkCellLayout *layout)
}
/**
- * gtk_tree_view_column_get_cell_renderers:
- * @tree_column: A #GtkTreeViewColumn
- *
- * Returns a newly-allocated #GList of all the cell renderers in the column,
- * in no particular order. The list must be freed with g_list_free().
- *
- * Return value: A list of #GtkCellRenderers
- *
- * Deprecated: 2.18: use gtk_cell_layout_get_cells() instead.
- **/
-GList *
-gtk_tree_view_column_get_cell_renderers (GtkTreeViewColumn *tree_column)
-{
- return gtk_tree_view_column_cell_layout_get_cells (GTK_CELL_LAYOUT (tree_column));
-}
-
-/**
* gtk_tree_view_column_add_attribute:
* @tree_column: A #GtkTreeViewColumn.
* @cell_renderer: the #GtkCellRenderer to set attributes on
diff --git a/gtk/gtktreeviewcolumn.h b/gtk/gtktreeviewcolumn.h
index b06e845d9f..4e72235bc8 100644
--- a/gtk/gtktreeviewcolumn.h
+++ b/gtk/gtktreeviewcolumn.h
@@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -135,9 +135,6 @@ void gtk_tree_view_column_pack_end (GtkTreeViewCol
GtkCellRenderer *cell,
gboolean expand);
void gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column);
-#ifndef GTK_DISABLE_DEPRECATED
-GList *gtk_tree_view_column_get_cell_renderers (GtkTreeViewColumn *tree_column);
-#endif
void gtk_tree_view_column_add_attribute (GtkTreeViewColumn *tree_column,
GtkCellRenderer *cell_renderer,
const gchar *attribute,
diff --git a/gtk/gtktypeutils.c b/gtk/gtktypeutils.c
index 6047d6f218..b66289d019 100644
--- a/gtk/gtktypeutils.c
+++ b/gtk/gtktypeutils.c
@@ -24,8 +24,6 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#undef GTK_DISABLE_DEPRECATED
-
#include "config.h"
#include <string.h> /* strcmp */
@@ -34,111 +32,6 @@
#include "gtkintl.h"
#include "gtkalias.h"
-
-/* --- functions --- */
-GtkType
-gtk_type_unique (GtkType parent_type,
- const GtkTypeInfo *gtkinfo)
-{
- GTypeInfo tinfo = { 0, };
-
- g_return_val_if_fail (GTK_TYPE_IS_OBJECT (parent_type), 0);
- g_return_val_if_fail (gtkinfo != NULL, 0);
- g_return_val_if_fail (gtkinfo->type_name != NULL, 0);
- g_return_val_if_fail (g_type_from_name (gtkinfo->type_name) == 0, 0);
-
- tinfo.class_size = gtkinfo->class_size;
- tinfo.base_init = gtkinfo->base_class_init_func;
- tinfo.base_finalize = NULL;
- tinfo.class_init = (GClassInitFunc) gtkinfo->class_init_func;
- tinfo.class_finalize = NULL;
- tinfo.class_data = NULL;
- tinfo.instance_size = gtkinfo->object_size;
- tinfo.n_preallocs = 0;
- tinfo.instance_init = gtkinfo->object_init_func;
-
- return g_type_register_static (parent_type, gtkinfo->type_name, &tinfo, 0);
-}
-
-/**
- * gtk_type_class
- * @type: a #GtkType.
- *
- * Returns a pointer pointing to the class of @type or %NULL if there
- * was any trouble identifying @type. Initializes the class if
- * necessary.
- *
- * Returns: pointer to the class.
- *
- * Deprecated: 2.14: Use g_type_class_peek() or g_type_class_ref() instead.
- **/
-gpointer
-gtk_type_class (GtkType type)
-{
- static GQuark quark_static_class = 0;
- gpointer class;
-
- if (!G_TYPE_IS_ENUM (type) && !G_TYPE_IS_FLAGS (type))
- g_return_val_if_fail (G_TYPE_IS_OBJECT (type), NULL);
-
- /* ok, this is a bit ugly, GLib reference counts classes,
- * and gtk_type_class() used to always return static classes.
- * while we coud be faster with just peeking the glib class
- * for the normal code path, we can't be sure that that
- * class stays around (someone else might be holding the
- * reference count and is going to drop it later). so to
- * ensure that Gtk actually holds a static reference count
- * on the class, we use GType qdata to store referenced
- * classes, and only return those.
- */
-
- class = g_type_get_qdata (type, quark_static_class);
- if (!class)
- {
- if (!quark_static_class)
- quark_static_class = g_quark_from_static_string ("GtkStaticTypeClass");
-
- class = g_type_class_ref (type);
- g_assert (class != NULL);
- g_type_set_qdata (type, quark_static_class, class);
- }
-
- return class;
-}
-
-gpointer
-gtk_type_new (GtkType type)
-{
- gpointer object;
-
- g_return_val_if_fail (GTK_TYPE_IS_OBJECT (type), NULL);
-
- object = g_object_new (type, NULL);
-
- return object;
-}
-
-void
-gtk_type_init (GTypeDebugFlags debug_flags)
-{
- static gboolean initialized = FALSE;
-
- if (!initialized)
- {
- GType unused;
-
- initialized = TRUE;
-
- /* initialize GLib type system
- */
- g_type_init_with_debug_flags (debug_flags);
-
- /* GTK_TYPE_OBJECT
- */
- unused = gtk_object_get_type ();
- }
-}
-
GType
gtk_identifier_get_type (void)
{
@@ -153,66 +46,5 @@ gtk_identifier_get_type (void)
return our_type;
}
-GtkEnumValue*
-gtk_type_enum_get_values (GtkType enum_type)
-{
- GEnumClass *class;
-
- g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), NULL);
-
- class = gtk_type_class (enum_type);
-
- return class->values;
-}
-
-GtkFlagValue*
-gtk_type_flags_get_values (GtkType flags_type)
-{
- GFlagsClass *class;
-
- g_return_val_if_fail (G_TYPE_IS_FLAGS (flags_type), NULL);
-
- class = gtk_type_class (flags_type);
-
- return class->values;
-}
-
-GtkEnumValue*
-gtk_type_enum_find_value (GtkType enum_type,
- const gchar *value_name)
-{
- GtkEnumValue *value;
- GEnumClass *class;
-
- g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), NULL);
- g_return_val_if_fail (value_name != NULL, NULL);
-
- class = gtk_type_class (enum_type);
- value = g_enum_get_value_by_name (class, value_name);
- if (!value)
- value = g_enum_get_value_by_nick (class, value_name);
-
- return value;
-}
-
-GtkFlagValue*
-gtk_type_flags_find_value (GtkType flags_type,
- const gchar *value_name)
-{
- GtkFlagValue *value;
- GFlagsClass *class;
-
- g_return_val_if_fail (G_TYPE_IS_FLAGS (flags_type), NULL);
- g_return_val_if_fail (value_name != NULL, NULL);
-
- class = gtk_type_class (flags_type);
- value = g_flags_get_value_by_name (class, value_name);
- if (!value)
- value = g_flags_get_value_by_nick (class, value_name);
-
- return value;
-}
-
-
#define __GTK_TYPE_UTILS_C__
#include "gtkaliasdef.c"
diff --git a/gtk/gtktypeutils.h b/gtk/gtktypeutils.h
index 48b664c2a7..75711a3f4a 100644
--- a/gtk/gtktypeutils.h
+++ b/gtk/gtktypeutils.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -59,79 +59,7 @@ typedef void (*GtkCallbackMarshal) (GtkObject *object,
typedef gchar * (*GtkTranslateFunc) (const gchar *path,
gpointer func_data);
-
-/* Everything below is deprecated and superseded by GType API
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-/* Fundamental Types
- * many of these are just aliases for GLib types to maintain
- * compatibility
- */
-
-#define GTK_TYPE_INVALID G_TYPE_INVALID
-#define GTK_TYPE_NONE G_TYPE_NONE
-#define GTK_TYPE_ENUM G_TYPE_ENUM
-#define GTK_TYPE_FLAGS G_TYPE_FLAGS
-
-/* GtkArg types */
-#define GTK_TYPE_CHAR G_TYPE_CHAR
-#define GTK_TYPE_UCHAR G_TYPE_UCHAR
-#define GTK_TYPE_BOOL G_TYPE_BOOLEAN
-#define GTK_TYPE_INT G_TYPE_INT
-#define GTK_TYPE_UINT G_TYPE_UINT
-#define GTK_TYPE_LONG G_TYPE_LONG
-#define GTK_TYPE_ULONG G_TYPE_ULONG
-#define GTK_TYPE_FLOAT G_TYPE_FLOAT
-#define GTK_TYPE_DOUBLE G_TYPE_DOUBLE
-#define GTK_TYPE_STRING G_TYPE_STRING
-#define GTK_TYPE_BOXED G_TYPE_BOXED
-#define GTK_TYPE_POINTER G_TYPE_POINTER
-
-typedef GType GtkFundamentalType;
-
-/* --- type macros --- */
-#define GTK_CLASS_NAME(class) (g_type_name (G_TYPE_FROM_CLASS (class)))
-#define GTK_CLASS_TYPE(class) (G_TYPE_FROM_CLASS (class))
-#define GTK_TYPE_IS_OBJECT(type) (g_type_is_a ((type), GTK_TYPE_OBJECT))
-
-/* outdated macros that really shouldn't e used anymore,
- * use the GLib type system instead
- */
-#define GTK_TYPE_FUNDAMENTAL_LAST (G_TYPE_LAST_RESERVED_FUNDAMENTAL - 1)
-#define GTK_TYPE_FUNDAMENTAL_MAX (G_TYPE_FUNDAMENTAL_MAX)
-
-#define GTK_FUNDAMENTAL_TYPE G_TYPE_FUNDAMENTAL
-#define GTK_STRUCT_OFFSET G_STRUCT_OFFSET
-
-/* glib macro wrappers (compatibility) */
-#define GTK_CHECK_CAST G_TYPE_CHECK_INSTANCE_CAST
-#define GTK_CHECK_CLASS_CAST G_TYPE_CHECK_CLASS_CAST
-#define GTK_CHECK_GET_CLASS G_TYPE_INSTANCE_GET_CLASS
-#define GTK_CHECK_TYPE G_TYPE_CHECK_INSTANCE_TYPE
-#define GTK_CHECK_CLASS_TYPE G_TYPE_CHECK_CLASS_TYPE
-
-/* glib type wrappers (compatibility) */
-
-typedef GType GtkType;
-typedef GTypeInstance GtkTypeObject;
-typedef GTypeClass GtkTypeClass;
-typedef GBaseInitFunc GtkClassInitFunc;
-typedef GInstanceInitFunc GtkObjectInitFunc;
-typedef GSignalCMarshaller GtkSignalMarshaller;
-
-typedef void (*GtkDestroyNotify) (gpointer data);
-typedef void (*GtkSignalFunc) (void);
-
-#define GTK_SIGNAL_FUNC(f) G_CALLBACK(f)
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
-#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
-
-/* Used by gtk_container_foreach_unmarshal () */
-
+#if defined (GTK_COMPILATION)
/* GtkArg, used to hold differently typed values */
struct _GtkArg
{
@@ -166,96 +94,7 @@ struct _GtkArg
} signal_data;
} d;
};
-
-/* argument value access macros, these must not contain casts,
- * to allow the usage of these macros in combination with the
- * address operator, e.g. &GTK_VALUE_CHAR (*arg)
- */
-#define GTK_VALUE_CHAR(a) ((a).d.char_data)
-#define GTK_VALUE_UCHAR(a) ((a).d.uchar_data)
-#define GTK_VALUE_BOOL(a) ((a).d.bool_data)
-#define GTK_VALUE_INT(a) ((a).d.int_data)
-#define GTK_VALUE_UINT(a) ((a).d.uint_data)
-#define GTK_VALUE_LONG(a) ((a).d.long_data)
-#define GTK_VALUE_ULONG(a) ((a).d.ulong_data)
-#define GTK_VALUE_FLOAT(a) ((a).d.float_data)
-#define GTK_VALUE_DOUBLE(a) ((a).d.double_data)
-#define GTK_VALUE_STRING(a) ((a).d.string_data)
-#define GTK_VALUE_ENUM(a) ((a).d.int_data)
-#define GTK_VALUE_FLAGS(a) ((a).d.uint_data)
-#define GTK_VALUE_BOXED(a) ((a).d.pointer_data)
-#define GTK_VALUE_OBJECT(a) ((a).d.object_data)
-#define GTK_VALUE_POINTER(a) ((a).d.pointer_data)
-#define GTK_VALUE_SIGNAL(a) ((a).d.signal_data)
-
-#endif /* !GTK_DISABLE_DEPRECATED || GTK_COMPILATION */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-/* return location macros, these all narrow down to
- * pointer types, because return values need to be
- * passed by reference
- */
-#define GTK_RETLOC_CHAR(a) ((gchar*) (a).d.pointer_data)
-#define GTK_RETLOC_UCHAR(a) ((guchar*) (a).d.pointer_data)
-#define GTK_RETLOC_BOOL(a) ((gboolean*) (a).d.pointer_data)
-#define GTK_RETLOC_INT(a) ((gint*) (a).d.pointer_data)
-#define GTK_RETLOC_UINT(a) ((guint*) (a).d.pointer_data)
-#define GTK_RETLOC_LONG(a) ((glong*) (a).d.pointer_data)
-#define GTK_RETLOC_ULONG(a) ((gulong*) (a).d.pointer_data)
-#define GTK_RETLOC_FLOAT(a) ((gfloat*) (a).d.pointer_data)
-#define GTK_RETLOC_DOUBLE(a) ((gdouble*) (a).d.pointer_data)
-#define GTK_RETLOC_STRING(a) ((gchar**) (a).d.pointer_data)
-#define GTK_RETLOC_ENUM(a) ((gint*) (a).d.pointer_data)
-#define GTK_RETLOC_FLAGS(a) ((guint*) (a).d.pointer_data)
-#define GTK_RETLOC_BOXED(a) ((gpointer*) (a).d.pointer_data)
-#define GTK_RETLOC_OBJECT(a) ((GtkObject**) (a).d.pointer_data)
-#define GTK_RETLOC_POINTER(a) ((gpointer*) (a).d.pointer_data)
-/* GTK_RETLOC_SIGNAL() - no such thing */
-
-/* type registration, it is recommended to use
- * g_type_register_static() or
- * g_type_register_dynamic() instead
- */
-typedef struct _GtkTypeInfo GtkTypeInfo;
-
-struct _GtkTypeInfo
-{
- gchar *type_name;
- guint object_size;
- guint class_size;
- GtkClassInitFunc class_init_func;
- GtkObjectInitFunc object_init_func;
- gpointer reserved_1;
- gpointer reserved_2;
- GtkClassInitFunc base_class_init_func;
-};
-
-void gtk_type_init (GTypeDebugFlags debug_flags);
-GtkType gtk_type_unique (GtkType parent_type,
- const GtkTypeInfo *gtkinfo);
-gpointer gtk_type_class (GtkType type);
-gpointer gtk_type_new (GtkType type);
-
-/* --- compatibility defines --- */
-#define gtk_type_name(type) g_type_name (type)
-#define gtk_type_from_name(name) g_type_from_name (name)
-#define gtk_type_parent(type) g_type_parent (type)
-#define gtk_type_is_a(type, is_a_type) g_type_is_a ((type), (is_a_type))
-
-/* enum/flags compatibility functions, we strongly
- * recommend to use the glib enum/flags classes directly
- */
-typedef GEnumValue GtkEnumValue;
-typedef GFlagsValue GtkFlagValue;
-GtkEnumValue* gtk_type_enum_get_values (GtkType enum_type);
-GtkFlagValue* gtk_type_flags_get_values (GtkType flags_type);
-GtkEnumValue* gtk_type_enum_find_value (GtkType enum_type,
- const gchar *value_name);
-GtkFlagValue* gtk_type_flags_find_value (GtkType flags_type,
- const gchar *value_name);
-
-#endif /* GTK_DISABLE_DEPRECATED */
+#endif /* GTK_COMPILATION */
G_END_DECLS
diff --git a/gtk/gtkuimanager.h b/gtk/gtkuimanager.h
index e58c2912db..faaf9ef787 100644
--- a/gtk/gtkuimanager.h
+++ b/gtk/gtkuimanager.h
@@ -28,7 +28,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvbbox.c b/gtk/gtkvbbox.c
index c6bf3696cf..ef8ea6c352 100644
--- a/gtk/gtkvbbox.c
+++ b/gtk/gtkvbbox.c
@@ -55,7 +55,6 @@
* gtk_button_box_set_layout().
*/
-static gint default_spacing = 10;
static GtkButtonBoxStyle default_layout_style = GTK_BUTTONBOX_EDGE;
G_DEFINE_TYPE (GtkVButtonBox, gtk_vbutton_box, GTK_TYPE_BUTTON_BOX)
@@ -85,68 +84,6 @@ gtk_vbutton_box_new (void)
return g_object_new (GTK_TYPE_VBUTTON_BOX, NULL);
}
-/**
- * gtk_vbutton_box_set_spacing_default:
- * @spacing: an integer value.
- *
- * Changes the default spacing that is placed between widgets in an
- * vertical button box.
- *
- * Deprecated: 2.0: Use gtk_box_set_spacing() instead.
- */
-void
-gtk_vbutton_box_set_spacing_default (gint spacing)
-{
- default_spacing = spacing;
-}
-
-/**
- * gtk_vbutton_box_set_layout_default:
- * @layout: a new #GtkButtonBoxStyle.
- *
- * Sets a new layout mode that will be used by all button boxes.
- *
- * Deprecated: 2.0: Use gtk_button_box_set_layout() instead.
- */
-void
-gtk_vbutton_box_set_layout_default (GtkButtonBoxStyle layout)
-{
- g_return_if_fail (layout >= GTK_BUTTONBOX_DEFAULT_STYLE &&
- layout <= GTK_BUTTONBOX_CENTER);
-
- default_layout_style = layout;
-}
-
-/**
- * gtk_vbutton_box_get_spacing_default:
- *
- * Retrieves the current default spacing for vertical button boxes. This is the number of pixels
- * to be placed between the buttons when they are arranged.
- *
- * Returns: the default number of pixels between buttons.
- *
- * Deprecated: 2.0: Use gtk_box_get_spacing() instead.
- */
-gint
-gtk_vbutton_box_get_spacing_default (void)
-{
- return default_spacing;
-}
-
-/**
- * gtk_vbutton_box_get_layout_default:
- *
- * Retrieves the current layout used to arrange buttons in button box widgets.
- *
- * Returns: the current #GtkButtonBoxStyle.
- *
- * Deprecated: 2.0: Use gtk_button_box_get_layout() instead.
- */
-GtkButtonBoxStyle
-gtk_vbutton_box_get_layout_default (void)
-{
- return default_layout_style;
-}
GtkButtonBoxStyle
_gtk_vbutton_box_get_layout_default (void)
diff --git a/gtk/gtkvbbox.h b/gtk/gtkvbbox.h
index 996eb57a60..c21be52303 100644
--- a/gtk/gtkvbbox.h
+++ b/gtk/gtkvbbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -63,20 +63,11 @@ struct _GtkVButtonBoxClass
GType gtk_vbutton_box_get_type (void) G_GNUC_CONST;
GtkWidget *gtk_vbutton_box_new (void);
-/* buttons can be added by gtk_container_add() */
-
-#ifndef GTK_DISABLE_DEPRECATED
-gint gtk_vbutton_box_get_spacing_default (void);
-void gtk_vbutton_box_set_spacing_default (gint spacing);
-
-GtkButtonBoxStyle gtk_vbutton_box_get_layout_default (void);
-void gtk_vbutton_box_set_layout_default (GtkButtonBoxStyle layout);
-#endif
/* private API */
GtkButtonBoxStyle _gtk_vbutton_box_get_layout_default (void);
-G_END_DECLS
+G_END_DECLS
#endif /* __GTK_VBBOX_H__ */
diff --git a/gtk/gtkvbox.h b/gtk/gtkvbox.h
index 68b549a743..5cd7bb9551 100644
--- a/gtk/gtkvbox.h
+++ b/gtk/gtkvbox.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkviewport.h b/gtk/gtkviewport.h
index da6b97c8d5..15427e8801 100644
--- a/gtk/gtkviewport.h
+++ b/gtk/gtkviewport.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvolumebutton.h b/gtk/gtkvolumebutton.h
index 1fd9bd9074..d5afa8fa04 100644
--- a/gtk/gtkvolumebutton.h
+++ b/gtk/gtkvolumebutton.h
@@ -27,7 +27,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvpaned.h b/gtk/gtkvpaned.h
index 49a1aec48b..a42efa3edc 100644
--- a/gtk/gtkvpaned.h
+++ b/gtk/gtkvpaned.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvruler.h b/gtk/gtkvruler.h
index 4cade7ba66..b9c7829220 100644
--- a/gtk/gtkvruler.h
+++ b/gtk/gtkvruler.h
@@ -34,7 +34,7 @@
* distribution.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvscale.h b/gtk/gtkvscale.h
index cf67920596..ce4953e5ec 100644
--- a/gtk/gtkvscale.h
+++ b/gtk/gtkvscale.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvscrollbar.h b/gtk/gtkvscrollbar.h
index 2cd2ec971c..ca2179075b 100644
--- a/gtk/gtkvscrollbar.h
+++ b/gtk/gtkvscrollbar.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkvseparator.h b/gtk/gtkvseparator.h
index a82ebfe10a..62c7bf50e1 100644
--- a/gtk/gtkvseparator.h
+++ b/gtk/gtkvseparator.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index b27207c927..c97a56164e 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -540,7 +540,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->unmap_event = NULL;
klass->window_state_event = NULL;
klass->property_notify_event = _gtk_selection_property_notify;
- klass->selection_clear_event = gtk_selection_clear;
+ 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;
@@ -3002,31 +3002,6 @@ gtk_widget_new (GType type,
return widget;
}
-/**
- * gtk_widget_set:
- * @widget: a #GtkWidget
- * @first_property_name: name of first property to set
- * @Varargs: value of first property, followed by more properties,
- * %NULL-terminated
- *
- * Precursor of g_object_set().
- *
- * Deprecated: 2.0: Use g_object_set() instead.
- **/
-void
-gtk_widget_set (GtkWidget *widget,
- const gchar *first_property_name,
- ...)
-{
- va_list var_args;
-
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- va_start (var_args, first_property_name);
- g_object_set_valist (G_OBJECT (widget), first_property_name, var_args);
- va_end (var_args);
-}
-
static inline void
gtk_widget_queue_draw_child (GtkWidget *widget)
{
@@ -3743,55 +3718,6 @@ gtk_widget_queue_draw (GtkWidget *widget)
rect.width, rect.height);
}
-/* Invalidates the given area (allocation-relative-coordinates)
- * in all of the widget's windows
- */
-/**
- * gtk_widget_queue_clear_area:
- * @widget: a #GtkWidget
- * @x: x coordinate of upper-left corner of rectangle to redraw
- * @y: y coordinate of upper-left corner of rectangle to redraw
- * @width: width of region to draw
- * @height: height of region to draw
- *
- * This function is no longer different from
- * gtk_widget_queue_draw_area(), though it once was. Now it just calls
- * gtk_widget_queue_draw_area(). Originally
- * gtk_widget_queue_clear_area() would force a redraw of the
- * background for %GTK_NO_WINDOW widgets, and
- * gtk_widget_queue_draw_area() would not. Now both functions ensure
- * the background will be redrawn.
- *
- * Deprecated: 2.2: Use gtk_widget_queue_draw_area() instead.
- **/
-void
-gtk_widget_queue_clear_area (GtkWidget *widget,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- gtk_widget_queue_draw_area (widget, x, y, width, height);
-}
-
-/**
- * gtk_widget_queue_clear:
- * @widget: a #GtkWidget
- *
- * This function does the same as gtk_widget_queue_draw().
- *
- * Deprecated: 2.2: Use gtk_widget_queue_draw() instead.
- **/
-void
-gtk_widget_queue_clear (GtkWidget *widget)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- gtk_widget_queue_draw (widget);
-}
-
/**
* gtk_widget_queue_resize:
* @widget: a #GtkWidget
@@ -3831,39 +3757,6 @@ gtk_widget_queue_resize_no_redraw (GtkWidget *widget)
}
/**
- * gtk_widget_draw:
- * @widget: a #GtkWidget
- * @area: area to draw
- *
- * In GTK+ 1.2, this function would immediately render the
- * region @area of a widget, by invoking the virtual draw method of a
- * widget. In GTK+ 2.0, the draw method is gone, and instead
- * gtk_widget_draw() simply invalidates the specified region of the
- * widget, then updates the invalid region of the widget immediately.
- * Usually you don't want to update the region immediately for
- * performance reasons, so in general gtk_widget_queue_draw_area() is
- * a better choice if you want to draw a region of a widget.
- **/
-void
-gtk_widget_draw (GtkWidget *widget,
- const GdkRectangle *area)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- if (gtk_widget_is_drawable (widget))
- {
- if (area)
- gtk_widget_queue_draw_area (widget,
- area->x, area->y,
- area->width, area->height);
- else
- gtk_widget_queue_draw (widget);
-
- gdk_window_process_updates (widget->window, TRUE);
- }
-}
-
-/**
* gtk_widget_size_request:
* @widget: a #GtkWidget
* @requisition: a #GtkRequisition to be filled in
@@ -4650,7 +4543,7 @@ _gtk_widget_get_accel_path (GtkWidget *widget,
apath = g_object_get_qdata (G_OBJECT (widget), quark_accel_path);
if (locked)
- *locked = apath ? apath->accel_group->lock_count > 0 : TRUE;
+ *locked = apath ? gtk_accel_group_get_is_locked (apath->accel_group) : TRUE;
return apath ? g_quark_to_string (apath->path_quark) : NULL;
}
@@ -7848,76 +7741,6 @@ gtk_widget_error_bell (GtkWidget *widget)
gdk_window_beep (widget->window);
}
-/**
- * gtk_widget_set_uposition:
- * @widget: a #GtkWidget
- * @x: x position; -1 to unset x; -2 to leave x unchanged
- * @y: y position; -1 to unset y; -2 to leave y unchanged
- *
- *
- * Sets the position of a widget. The funny "u" in the name comes from
- * the "user position" hint specified by the X Window System, and
- * exists for legacy reasons. This function doesn't work if a widget
- * is inside a container; it's only really useful on #GtkWindow.
- *
- * Don't use this function to center dialogs over the main application
- * window; most window managers will do the centering on your behalf
- * if you call gtk_window_set_transient_for(), and it's really not
- * possible to get the centering to work correctly in all cases from
- * application code. But if you insist, use gtk_window_set_position()
- * to set #GTK_WIN_POS_CENTER_ON_PARENT, don't do the centering
- * manually.
- *
- * Note that although @x and @y can be individually unset, the position
- * is not honoured unless both @x and @y are set.
- **/
-void
-gtk_widget_set_uposition (GtkWidget *widget,
- gint x,
- gint y)
-{
- /* FIXME this function is the only place that aux_info->x and
- * aux_info->y are even used I believe, and this function is
- * deprecated. Should be cleaned up.
- *
- * (Actually, size_allocate uses them) -Yosh
- */
-
- GtkWidgetAuxInfo *aux_info;
-
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- aux_info =_gtk_widget_get_aux_info (widget, TRUE);
-
- if (x > -2)
- {
- if (x == -1)
- aux_info->x_set = FALSE;
- else
- {
- aux_info->x_set = TRUE;
- aux_info->x = x;
- }
- }
-
- if (y > -2)
- {
- if (y == -1)
- aux_info->y_set = FALSE;
- else
- {
- aux_info->y_set = TRUE;
- aux_info->y = y;
- }
- }
-
- if (GTK_IS_WINDOW (widget) && aux_info->x_set && aux_info->y_set)
- _gtk_window_reposition (GTK_WINDOW (widget), aux_info->x, aux_info->y);
-
- if (gtk_widget_get_visible (widget) && widget->parent)
- gtk_widget_size_allocate (widget, &widget->allocation);
-}
-
static void
gtk_widget_set_usize_internal (GtkWidget *widget,
gint width,
@@ -7950,42 +7773,6 @@ gtk_widget_set_usize_internal (GtkWidget *widget,
}
/**
- * gtk_widget_set_usize:
- * @widget: a #GtkWidget
- * @width: minimum width, or -1 to unset
- * @height: minimum height, or -1 to unset
- *
- * Sets the minimum size of a widget; that is, the widget's size
- * request will be @width by @height. You can use this function to
- * force a widget to be either larger or smaller than it is. The
- * strange "usize" name dates from the early days of GTK+, and derives
- * from X Window System terminology. In many cases,
- * gtk_window_set_default_size() is a better choice for toplevel
- * windows than this function; setting the default size will still
- * allow users to shrink the window. Setting the usize will force them
- * to leave the window at least as large as the usize. When dealing
- * with window sizes, gtk_window_set_geometry_hints() can be a useful
- * function as well.
- *
- * Note the inherent danger of setting any fixed size - themes,
- * translations into other languages, different fonts, and user action
- * can all change the appropriate size for a given widget. So, it's
- * basically impossible to hardcode a size that will always be
- * correct.
- *
- * Deprecated: 2.2: Use gtk_widget_set_size_request() instead.
- **/
-void
-gtk_widget_set_usize (GtkWidget *widget,
- gint width,
- gint height)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- gtk_widget_set_usize_internal (widget, width, height);
-}
-
-/**
* gtk_widget_set_size_request:
* @widget: a #GtkWidget
* @width: width @widget should request, or -1 to unset
@@ -9516,43 +9303,6 @@ gtk_widget_reset_shapes (GtkWidget *widget)
gtk_reset_shapes_recurse (widget, widget->window);
}
-/**
- * gtk_widget_ref:
- * @widget: a #GtkWidget
- *
- * Adds a reference to a widget. This function is exactly the same
- * as calling g_object_ref(), and exists mostly for historical
- * reasons. It can still be convenient to avoid casting a widget
- * to a #GObject, it saves a small amount of typing.
- *
- * Return value: the widget that was referenced
- *
- * Deprecated: 2.12: Use g_object_ref() instead.
- **/
-GtkWidget*
-gtk_widget_ref (GtkWidget *widget)
-{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- return (GtkWidget*) g_object_ref ((GObject*) widget);
-}
-
-/**
- * gtk_widget_unref:
- * @widget: a #GtkWidget
- *
- * Inverse of gtk_widget_ref(). Equivalent to g_object_unref().
- *
- * Deprecated: 2.12: Use g_object_unref() instead.
- **/
-void
-gtk_widget_unref (GtkWidget *widget)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- g_object_unref ((GObject*) widget);
-}
-
static void
expose_window (GdkWindow *window)
{
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 760d7ce569..38b2dca9c6 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -138,49 +138,6 @@ typedef enum
#define GTK_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_WIDGET))
#define GTK_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_WIDGET, GtkWidgetClass))
-/* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
- */
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_TYPE:
- * @wid: a #GtkWidget.
- *
- * Gets the type of a widget.
- *
- * Deprecated: 2.20: Use G_OBJECT_TYPE() instead.
- */
-#define GTK_WIDGET_TYPE(wid) (GTK_OBJECT_TYPE (wid))
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_STATE:
- * @wid: a #GtkWidget.
- *
- * Returns the current state of the widget, as a #GtkStateType.
- *
- * Deprecated: 2.20: Use gtk_widget_get_state() instead.
- */
-#define GTK_WIDGET_STATE(wid) (GTK_WIDGET (wid)->state)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_SAVED_STATE:
- * @wid: a #GtkWidget.
- *
- * Returns the saved state of the widget, as a #GtkStateType.
- *
- * The saved state will be restored when a widget gets sensitive
- * again, after it has been made insensitive with gtk_widget_set_state()
- * or gtk_widget_set_sensitive().
- *
- * Deprecated: 2.20: Do not used it.
- */
-#define GTK_WIDGET_SAVED_STATE(wid) (GTK_WIDGET (wid)->saved_state)
-#endif
-
-
/* Macros for extracting the widget flags from GtkWidget.
*/
/**
@@ -202,241 +159,6 @@ typedef enum
#define GTK_WIDGET_FLAGS(wid) (GTK_OBJECT_FLAGS (wid))
/* FIXME: Deprecating GTK_WIDGET_FLAGS requires fixing GTK internals. */
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_TOPLEVEL:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is a toplevel widget.
- *
- * Deprecated: 2.20: Use gtk_widget_is_toplevel() instead.
- */
-#define GTK_WIDGET_TOPLEVEL(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_NO_WINDOW:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget doesn't have an own #GdkWindow.
- *
- * Deprecated: 2.20: Use gtk_widget_get_has_window() instead.
- */
-#define GTK_WIDGET_NO_WINDOW(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_REALIZED:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is realized.
- *
- * Deprecated: 2.20: Use gtk_widget_get_realized() instead.
- */
-#define GTK_WIDGET_REALIZED(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_MAPPED:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is mapped.
- *
- * Deprecated: 2.20: Use gtk_widget_get_mapped() instead.
- */
-#define GTK_WIDGET_MAPPED(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_VISIBLE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is visible.
- *
- * Deprecated: 2.20: Use gtk_widget_get_visible() instead.
- */
-#define GTK_WIDGET_VISIBLE(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_DRAWABLE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is mapped and visible.
- *
- * Deprecated: 2.20: Use gtk_widget_is_drawable() instead.
- */
-#define GTK_WIDGET_DRAWABLE(wid) (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_SENSITIVE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the #GTK_SENSITIVE flag has be set on the widget.
- *
- * Deprecated: 2.20: Use gtk_widget_get_sensitive() instead.
- */
-#define GTK_WIDGET_SENSITIVE(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_PARENT_SENSITIVE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the #GTK_PARENT_SENSITIVE flag has be set on the widget.
- *
- * Deprecated: 2.20: Use gtk_widget_get_sensitive() on the parent widget instead.
- */
-#define GTK_WIDGET_PARENT_SENSITIVE(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_IS_SENSITIVE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is effectively sensitive.
- *
- * Deprecated: 2.20: Use gtk_widget_is_sensitive() instead.
- */
-#define GTK_WIDGET_IS_SENSITIVE(wid) (GTK_WIDGET_SENSITIVE (wid) && \
- GTK_WIDGET_PARENT_SENSITIVE (wid))
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_CAN_FOCUS:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is able to handle focus grabs.
- *
- * Deprecated: 2.20: Use gtk_widget_get_can_focus() instead.
- */
-#define GTK_WIDGET_CAN_FOCUS(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_HAS_FOCUS:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget has grabbed the focus and no other
- * widget has done so more recently.
- *
- * Deprecated: 2.20: Use gtk_widget_has_focus() instead.
- */
-#define GTK_WIDGET_HAS_FOCUS(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_CAN_DEFAULT:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is allowed to receive the default action
- * via gtk_widget_grab_default().
- *
- * Deprecated: 2.20: Use gtk_widget_get_can_default() instead.
- */
-#define GTK_WIDGET_CAN_DEFAULT(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_HAS_DEFAULT:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget currently is receiving the default action.
- *
- * Deprecated: 2.20: Use gtk_widget_has_default() instead.
- */
-#define GTK_WIDGET_HAS_DEFAULT(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_HAS_GRAB:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is in the grab_widgets stack, and will be
- * the preferred one for receiving events other than ones of cosmetic value.
- *
- * Deprecated: 2.20: Use gtk_widget_has_grab() instead.
- */
-#define GTK_WIDGET_HAS_GRAB(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_RC_STYLE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget's style has been looked up through the rc
- * mechanism.
- *
- * Deprecated: 2.20: Use gtk_widget_has_rc_style() instead.
- */
-#define GTK_WIDGET_RC_STYLE(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_COMPOSITE_CHILD:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget is a composite child of its parent.
- *
- * Deprecated: 2.20: Use the #GtkWidget:composite-child property instead.
- */
-#define GTK_WIDGET_COMPOSITE_CHILD(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_APP_PAINTABLE:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the #GTK_APP_PAINTABLE flag has been set on the widget.
- *
- * Deprecated: 2.20: Use gtk_widget_get_app_paintable() instead.
- */
-#define GTK_WIDGET_APP_PAINTABLE(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_RECEIVES_DEFAULT:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the widget when focused will receive the default action
- * even if there is a different widget set as default.
- *
- * Deprecated: 2.20: Use gtk_widget_get_receives_default() instead.
- */
-#define GTK_WIDGET_RECEIVES_DEFAULT(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
-#endif
-
-#ifndef GTK_DISABLE_DEPRECATED
-/**
- * GTK_WIDGET_DOUBLE_BUFFERED:
- * @wid: a #GtkWidget.
- *
- * Evaluates to %TRUE if the #GTK_DOUBLE_BUFFERED flag has been set on the widget.
- *
- * Deprecated: 2.20: Use gtk_widget_get_double_buffered() instead.
- */
-#define GTK_WIDGET_DOUBLE_BUFFERED(wid) ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
-#endif
-
-
/* Macros for setting and clearing widget flags.
*/
/**
@@ -837,13 +559,6 @@ GtkWidget* gtk_widget_new (GType type,
void gtk_widget_destroy (GtkWidget *widget);
void gtk_widget_destroyed (GtkWidget *widget,
GtkWidget **widget_pointer);
-#ifndef GTK_DISABLE_DEPRECATED
-GtkWidget* gtk_widget_ref (GtkWidget *widget);
-void gtk_widget_unref (GtkWidget *widget);
-void gtk_widget_set (GtkWidget *widget,
- const gchar *first_property_name,
- ...) G_GNUC_NULL_TERMINATED;
-#endif /* GTK_DISABLE_DEPRECATED */
void gtk_widget_unparent (GtkWidget *widget);
void gtk_widget_show (GtkWidget *widget);
void gtk_widget_show_now (GtkWidget *widget);
@@ -865,22 +580,8 @@ void gtk_widget_queue_draw_area (GtkWidget *widget,
gint y,
gint width,
gint height);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_widget_queue_clear (GtkWidget *widget);
-void gtk_widget_queue_clear_area (GtkWidget *widget,
- gint x,
- gint y,
- gint width,
- gint height);
-#endif /* GTK_DISABLE_DEPRECATED */
-
-
void gtk_widget_queue_resize (GtkWidget *widget);
void gtk_widget_queue_resize_no_redraw (GtkWidget *widget);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_widget_draw (GtkWidget *widget,
- const GdkRectangle *area);
-#endif /* GTK_DISABLE_DEPRECATED */
void gtk_widget_size_request (GtkWidget *widget,
GtkRequisition *requisition);
void gtk_widget_size_allocate (GtkWidget *widget,
@@ -1028,15 +729,6 @@ void gtk_widget_set_size_request (GtkWidget *widget,
void gtk_widget_get_size_request (GtkWidget *widget,
gint *width,
gint *height);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_widget_set_uposition (GtkWidget *widget,
- gint x,
- gint y);
-void gtk_widget_set_usize (GtkWidget *widget,
- gint width,
- gint height);
-#endif
-
void gtk_widget_set_events (GtkWidget *widget,
gint events);
void gtk_widget_add_events (GtkWidget *widget,
@@ -1061,42 +753,6 @@ GtkClipboard *gtk_widget_get_clipboard (GtkWidget *widget,
GdkPixmap * gtk_widget_get_snapshot (GtkWidget *widget,
GdkRectangle *clip_rect);
-#ifndef GTK_DISABLE_DEPRECATED
-
-/**
- * gtk_widget_set_visual:
- * @widget: a #GtkWidget
- * @visual: a visual
- *
- * This function is deprecated; it does nothing.
- */
-#define gtk_widget_set_visual(widget,visual) ((void) 0)
-
-/**
- * gtk_widget_push_visual:
- * @visual: a visual
- *
- * This function is deprecated; it does nothing.
- */
-#define gtk_widget_push_visual(visual) ((void) 0)
-
-/**
- * gtk_widget_pop_visual:
- *
- * This function is deprecated; it does nothing.
- */
-#define gtk_widget_pop_visual() ((void) 0)
-
-/**
- * gtk_widget_set_default_visual:
- * @visual: a visual
- *
- * This function is deprecated; it does nothing.
- */
-#define gtk_widget_set_default_visual(visual) ((void) 0)
-
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Accessibility support */
AtkObject* gtk_widget_get_accessible (GtkWidget *widget);
@@ -1162,29 +818,6 @@ void gtk_widget_modify_symbolic_color (GtkWidget *widget,
const gchar *name,
const GdkColor *color);
-#ifndef GTK_DISABLE_DEPRECATED
-
-/**
- * gtk_widget_set_rc_style:
- * @widget: a #GtkWidget.
- *
- * Equivalent to <literal>gtk_widget_set_style (widget, NULL)</literal>.
- *
- * Deprecated: 2.0: Use gtk_widget_set_style() with a %NULL @style argument instead.
- */
-#define gtk_widget_set_rc_style(widget) (gtk_widget_set_style (widget, NULL))
-
-/**
- * gtk_widget_restore_default_style:
- * @widget: a #GtkWidget.
- *
- * Equivalent to <literal>gtk_widget_set_style (widget, NULL)</literal>.
- *
- * Deprecated: 2.0: Use gtk_widget_set_style() with a %NULL @style argument instead.
- */
-#define gtk_widget_restore_default_style(widget) (gtk_widget_set_style (widget, NULL))
-#endif
-
PangoContext *gtk_widget_create_pango_context (GtkWidget *widget);
PangoContext *gtk_widget_get_pango_context (GtkWidget *widget);
PangoLayout *gtk_widget_create_pango_layout (GtkWidget *widget,
@@ -1308,11 +941,6 @@ GType gtk_requisition_get_type (void) G_GNUC_CONST;
GtkRequisition *gtk_requisition_copy (const GtkRequisition *requisition);
void gtk_requisition_free (GtkRequisition *requisition);
-#if defined (GTK_TRACE_OBJECTS) && defined (__GNUC__)
-# define gtk_widget_ref g_object_ref
-# define gtk_widget_unref g_object_unref
-#endif /* GTK_TRACE_OBJECTS && __GNUC__ */
-
void _gtk_widget_set_has_default (GtkWidget *widget,
gboolean has_default);
void _gtk_widget_set_has_grab (GtkWidget *widget,
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 1af7d0205e..8ddf8701b9 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1734,17 +1734,6 @@ gtk_window_set_policy_internal (GtkWindow *window,
gtk_widget_queue_resize_no_redraw (GTK_WIDGET (window));
}
-void
-gtk_window_set_policy (GtkWindow *window,
- gboolean allow_shrink,
- gboolean allow_grow,
- gboolean auto_shrink)
-{
- g_return_if_fail (GTK_IS_WINDOW (window));
-
- gtk_window_set_policy_internal (window, allow_shrink, allow_grow, auto_shrink);
-}
-
static gboolean
handle_keys_changed (gpointer data)
{
@@ -8178,9 +8167,9 @@ _gtk_window_keys_foreach (GtkWindow *window,
GtkAccelGroup *group = groups->data;
gint i;
- for (i = 0; i < group->n_accels; i++)
+ for (i = 0; i < group->priv->n_accels; i++)
{
- GtkAccelKey *key = &group->priv_accels[i].key;
+ GtkAccelKey *key = &group->priv->priv_accels[i].key;
if (key->accel_key)
(*func) (window, key->accel_key, key->accel_mods, FALSE, func_data);
diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h
index 1b4362feaa..22753fcd0e 100644
--- a/gtk/gtkwindow.h
+++ b/gtk/gtkwindow.h
@@ -24,7 +24,7 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif
@@ -35,6 +35,8 @@
#include <gtk/gtkaccelgroup.h>
#include <gtk/gtkbin.h>
+#include "gtk/gtkaccelgroupprivate.h"
+
G_BEGIN_DECLS
@@ -352,14 +354,6 @@ void gtk_window_begin_move_drag (GtkWindow *window,
gint root_y,
guint32 timestamp);
-#ifndef GTK_DISABLE_DEPRECATED
-void gtk_window_set_policy (GtkWindow *window,
- gint allow_shrink,
- gint allow_grow,
- gint auto_shrink);
-#define gtk_window_position gtk_window_set_position
-#endif /* GTK_DISABLE_DEPRECATED */
-
/* Set initial default size of the window (does not constrain user
* resize operations)
*/
diff --git a/gtk/makefile.msc.in b/gtk/makefile.msc.in
index bb6ac9999e..73bedddcf0 100644
--- a/gtk/makefile.msc.in
+++ b/gtk/makefile.msc.in
@@ -114,8 +114,6 @@ gtk_OBJECTS_deprecated = \
gtkprogress.obj \
gtktipsquery.obj \
gtkshow.obj \
- gtksignal.obj \
- gtkpixmap.obj \
gtkpreview.obj \
gtkseparatortoolitem.obj \
gtktypeutils.obj \
@@ -469,7 +467,6 @@ gtk_public_h_sources = \
gtkpagesetup.h \
gtkpaned.h \
gtkpapersize.h \
- gtkpixmap.h \
gtkplug.h \
gtkpreview.h \
gtkprintcontext.h \
@@ -502,7 +499,6 @@ gtk_public_h_sources = \
gtkseparatormenuitem.h \
gtkseparatortoolitem.h \
gtksettings.h \
- gtksignal.h \
gtksizegroup.h \
gtksocket.h \
gtkspinbutton.h \
@@ -618,8 +614,6 @@ gtkmarshal.c : gtkmarshal.list
gtktypefuncs.c : makefile.msc
echo /*none*/ > gtktypefuncs.c
-gtksignal.obj : gtksignal.c gtkmarshal.c gtkmarshal.h
- $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" gtksignal.c
gtk-win32.res : gtk-win32.rc
rc -DBUILDNUMBER=0 -r -fo gtk-win32.res gtk-win32.rc
diff --git a/gtk/tests/builder.c b/gtk/tests/builder.c
index 1e2d86a6de..33f2f84f9b 100644
--- a/gtk/tests/builder.c
+++ b/gtk/tests/builder.c
@@ -2420,10 +2420,10 @@ test_menus (void)
gtk_accel_label_refetch (GTK_ACCEL_LABEL (sample_accel_label));
gtk_accel_label_refetch (GTK_ACCEL_LABEL (item_accel_label));
- g_assert (GTK_ACCEL_LABEL (sample_accel_label)->accel_string != NULL);
- g_assert (GTK_ACCEL_LABEL (item_accel_label)->accel_string != NULL);
- g_assert (strcmp (GTK_ACCEL_LABEL (item_accel_label)->accel_string,
- GTK_ACCEL_LABEL (sample_accel_label)->accel_string) == 0);
+ g_assert (gtk_label_get_text (GTK_LABEL (sample_accel_label)) != NULL);
+ g_assert (gtk_label_get_text (GTK_LABEL (item_accel_label)) != NULL);
+ g_assert (strcmp (gtk_label_get_text (GTK_LABEL (item_accel_label)),
+ gtk_label_get_text (GTK_LABEL (sample_accel_label))) == 0);
/* Check the menu hierarchy worked here */
g_assert (get_parent_menubar (item));
diff --git a/gtk/tests/defaultvalue.c b/gtk/tests/defaultvalue.c
index 5253884b98..dca1ccd0e2 100644
--- a/gtk/tests/defaultvalue.c
+++ b/gtk/tests/defaultvalue.c
@@ -81,13 +81,6 @@ test_type (gconstpointer data)
g_type_is_a (type, gdk_pixbuf_simple_anim_iter_get_type ()))
return;
- /* The gtk_arg compat wrappers can't set up default values */
- if (g_type_is_a (type, GTK_TYPE_CLIST) ||
- g_type_is_a (type, GTK_TYPE_CTREE) ||
- g_type_is_a (type, GTK_TYPE_LIST) ||
- g_type_is_a (type, GTK_TYPE_TIPS_QUERY))
- return;
-
klass = g_type_class_ref (type);
if (g_type_is_a (type, GTK_TYPE_SETTINGS))
@@ -177,11 +170,6 @@ test_type (gconstpointer data)
strcmp (pspec->name, "buffer") == 0))
continue;
- /* Gets set to the cwd */
- if (g_type_is_a (type, GTK_TYPE_FILE_SELECTION) &&
- strcmp (pspec->name, "filename") == 0)
- continue;
-
if (g_type_is_a (type, GTK_TYPE_FONT_SELECTION) &&
strcmp (pspec->name, "font") == 0)
continue;
@@ -269,11 +257,6 @@ test_type (gconstpointer data)
strcmp (pspec->name, "font-desc") == 0))
continue;
- if (g_type_is_a (type, GTK_TYPE_TEXT) &&
- (strcmp (pspec->name, "hadjustment") == 0 ||
- strcmp (pspec->name, "vadjustment") == 0))
- continue;
-
if (g_type_is_a (type, GTK_TYPE_TEXT_VIEW) &&
strcmp (pspec->name, "buffer") == 0)
continue;
diff --git a/gtk/tests/floating.c b/gtk/tests/floating.c
index d0682cf5d2..9c2e93049d 100644
--- a/gtk/tests/floating.c
+++ b/gtk/tests/floating.c
@@ -32,28 +32,16 @@ floating_tests (void)
GtkWidget *widget = g_object_new (GTK_TYPE_LABEL, NULL);
g_object_connect (widget, "signal::destroy", destroy, NULL, NULL);
- g_assert (GTK_OBJECT_FLOATING (widget));
- g_assert (g_object_is_floating (widget));
-
- GTK_OBJECT_UNSET_FLAGS (widget, GTK_FLOATING);
- g_assert (!GTK_OBJECT_FLOATING (widget));
- g_assert (!g_object_is_floating (widget));
-
- GTK_OBJECT_SET_FLAGS (widget, GTK_FLOATING);
- g_assert (GTK_OBJECT_FLOATING (widget));
g_assert (g_object_is_floating (widget));
g_object_ref_sink (widget);
- g_assert (!GTK_OBJECT_FLOATING (widget));
g_assert (!g_object_is_floating (widget));
g_object_force_floating (G_OBJECT (widget));
- g_assert (GTK_OBJECT_FLOATING (widget));
g_assert (g_object_is_floating (widget));
g_object_ref (widget);
- gtk_object_sink (GTK_OBJECT (widget));
- g_assert (!GTK_OBJECT_FLOATING (widget));
+ g_object_ref_sink (widget);
g_assert (!g_object_is_floating (widget));
g_assert (!destroyed);
diff --git a/gtk/tests/object.c b/gtk/tests/object.c
index 4b77e93466..feb724adad 100644
--- a/gtk/tests/object.c
+++ b/gtk/tests/object.c
@@ -55,7 +55,6 @@ list_ignore_properties (gboolean buglist)
{
/* currently untestable properties */
static const IgnoreProperty ignore_properties[] = {
- { "GtkCurve", "", NULL, }, /* Just ignore it, not worth fixing */
{ "GtkContainer", "child", NULL, }, /* needs working child widget */
{ "GtkRadioMenuItem", "group", NULL, }, /* needs working sibling */
{ "GtkWidget", "parent", NULL, }, /* needs working parent widget */