mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-19 09:50:06 +00:00
c7826b5f63
2001-01-03 Havoc Pennington <hp@redhat.com> * gtk/gtktextbtree.c: Adapt to uscore-ification of gtktextiterprivate * gtk/gtktextdisplay.c (gtk_text_layout_draw): remove use of private functions; remove inclusion of private headers. * gtk/gtktextlayout.c (gtk_text_layout_get_iter_at_line): Add this function, so we don't need private functions in gtktextdisplay.c * gtk/gtktextiterprivate.h: underscore-ification * gtk/gtkwidget.c: Clean up a bunch of docs that said "INTERNAL" to instead say "only useful to implement widgets" * gtk/gtkenums.h (GtkMovementStep): Rename GTK_MOVEMENT_CHARS, GTK_MOVEMENT_POSITIONS to GTK_MOVEMENT_LOGICAL_POSITIONS, GTK_MOVEMENT_VISUAL_POSITIONS. Resolves bug 40249. * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap): This function was completely broken * gtk/testtext.c (line_numbers_expose): use gtk_paint_layout * gtk/gtkvscale.c (gtk_vscale_draw_value): use gtk_paint_layout * gtk/gtkvruler.c (gtk_vruler_draw_ticks): use gtk_paint_layout * gtk/gtklabel.c (gtk_label_expose): use gtk_paint_layout * gtk/gtkhscale.c (gtk_hscale_draw_value): use gtk_paint_layout * gtk/gtkhruler.c (gtk_hruler_draw_ticks): use gtk_paint_layout * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_render): use gtk_paint_layout * gtk/gtkaccellabel.c (gtk_accel_label_expose_event): use gtk_paint_layout * gtk/gtkstyle.h: Add draw/paint expander to draw tree expanders. Progress on bug 40103. Add draw_layout to draw a PangoLayout. (struct _GtkStyleClass): Remove draw_cross, draw_oval, draw_ramp, which were not implemented. * gtk/gtktextbuffer.h (struct _GtkTextBufferClass): Add insert_pixbuf signal. Rename delete_text to delete_range since it also deletes pixbufs and child anchors. This almost closes bug 40245 (still need to deal with child anchors) * gtk/gtktextbuffer.c (gtk_text_buffer_class_init): Add insert_pixbuf, change signal names as appropriate, change types of signals taking marks/tags to have the specific type, not just G_TYPE_OBJECT * gtk/gtkmain.c (gtk_get_current_event_state): Add this function; closes bug 40051 * gtk/gtkoptionmenu.c (gtk_option_menu_set_history): clean up unnecessary remove_contents() call (gtk_option_menu_class_init): add a "changed" signal, closes bug 40039 (gtk_option_menu_update_contents): emit "changed" if the active menu item changes * gtk/gdk-pixbuf-loader.c (gdk_pixbuf_loader_frame_done): fix bad cast to GtkObject, reported by Jonas Borgstrom (gdk_pixbuf_loader_finalize): don't close the loader on finalize; we can't do stuff with side effects in finalize. Instead, spew a warning if the loader isn't closed. * gdk/x11/gdkdrawable-x11.c (gdk_drawable_impl_x11_finalize): free colormap in here, non-X ports probably need to sync to this change * gdk/x11/gdkdrawable-x11.c (gdk_x11_set_colormap): remove assertion that colormap != NULL, you can set the colormap to NULL if you like. * Makefile.am: remove gtk-config-2.0 * configure.in: Use pkg-config to locate GLib. Remove separated-out GMODULE_LIBS, GMODULE_CFLAGS; these were not used, and the gmodule libs/cflags were in GLIB_LIBS GLIB_CFLAGS anyhow. Use pkg-config to locate Pango. Output correct Pango libs to gdk-2.0.pc.in. Fix test for FREETYPE_CONFIG (typo fix). * Makefile.am (pkgconfig_DATA): install only target-specific pc files (install-data-local): symlink gtk+-2.0.pc and gdk-2.0.pc to the X11 pc files * gtk+-2.0.pc.in (Requires): require the GDK for the current target unref from here
290 lines
14 KiB
Plaintext
290 lines
14 KiB
Plaintext
Incompatible Changes from GTK+-1.2 to GTK+-2.0:
|
|
|
|
* gtk_container_get_toplevels() was removed and replaced with
|
|
gtk_window_list_toplevels(), which has different memory management
|
|
on the return value (gtk_window_list_toplevels() copies the GList
|
|
and also references each widget in the list, so you have to
|
|
g_list_free() the list after first unref'ing each list member).
|
|
|
|
* The gdk_time* functions have been removed. This functionality
|
|
has been unused since the main loop was moved into GLib
|
|
prior to 1.2.
|
|
|
|
* The signature for GtkPrintFunc (used for gtk_item_factory_dump_items)
|
|
has been changed to take a 'const gchar *' instead of 'gchar *', to
|
|
match what we do for glib, and other similar cases.
|
|
|
|
* The detail arguments in the GtkStyleClass structure are now 'const gchar *'.
|
|
|
|
* gtk_paned_set_gutter_size() has been removed, since the small handle tab
|
|
has been changed to include the entire area previously occupied by
|
|
the gutter.
|
|
|
|
* GDK no longer selects OwnerGrabButtonMask for button presses. This means
|
|
that the automatic grab that occurs when the user presses a button
|
|
will have owner_events = FALSE, so all events are redirected to the
|
|
grab window, even events that would normally go to other windows of the
|
|
window's owner.
|
|
|
|
* GtkColorSelectionDialog has now been moved into it's own set of files,
|
|
gtkcolorseldialog.c and gtkcolorseldialog.h.
|
|
|
|
* gtk_widget_shape_combine_mask() now keeps a reference count on the
|
|
mask pixmap that is passed in.
|
|
|
|
* Type system changes:
|
|
- GTK_TYPE_OBJECT is not a fundamental type anymore. Type checks of the
|
|
style (GTK_FUNDAMENTAL_TYPE (some_type) == GTK_TYPE_OBJECT)
|
|
will not work anymore. As a replacement, (GTK_TYPE_IS_OBJECT (some_type))
|
|
can be used now.
|
|
- The following types vanished: GTK_TYPE_ARGS, GTK_TYPE_CALLBACK,
|
|
GTK_TYPE_C_CALLBACK, GTK_TYPE_FOREIGN. The corresponding GtkArg
|
|
fields and field access macros are also gone.
|
|
- The following type aliases vanished: GTK_TYPE_FLAT_FIRST,
|
|
GTK_TYPE_FLAT_LAST, GTK_TYPE_STRUCTURED_FIRST, GTK_TYPE_STRUCTURED_LAST.
|
|
- The type macros GTK_TYPE_MAKE() and GTK_TYPE_SEQNO() vanished, use of
|
|
GTK_FUNDAMENTAL_TYPE() is discouraged. Instead, the corresponding GType
|
|
API should be used: G_TYPE_FUNDAMENTAL(), G_TYPE_DERIVE_ID(),
|
|
G_TYPE_BRANCH_SEQNO(). Note that the GLib type system doesn't build new
|
|
type ids based on a global incremental sequential number anymore, but
|
|
numbers new type ids sequentially per fundamental type branch.
|
|
- The following type functions vanished/were replaced:
|
|
Old Function Replacement
|
|
gtk_type_query() - being investigated -
|
|
gtk_type_set_varargs_type() -
|
|
gtk_type_get_varargs_type() -
|
|
gtk_type_check_object_cast() g_type_check_instance_cast()
|
|
gtk_type_check_class_cast() g_type_check_class_cast()
|
|
gtk_type_describe_tree() -
|
|
gtk_type_describe_heritage() -
|
|
gtk_type_free() -
|
|
gtk_type_children_types() g_type_children()
|
|
gtk_type_set_chunk_alloc() GTypeInfo.n_preallocs
|
|
gtk_type_register_enum() g_enum_register_static()
|
|
gtk_type_register_flags() g_flags_register_static()
|
|
gtk_type_parent_class() g_type_parent() / g_type_class_peek_parent()
|
|
Use of g_type_class_ref() / g_type_class_unref() and g_type_class_peek()
|
|
is recommended over usage of gtk_type_class().
|
|
Use of g_type_register_static() / g_type_register_dynamic() is recommended
|
|
over usage of gtk_type_unique().
|
|
|
|
* Object system changes:
|
|
GtkObject derives from GObject, so is not the basic object type anymore.
|
|
This imposes the following source incompatible changes:
|
|
- GtkObject has no klass field anymore, an object's class can be retrived
|
|
with the object's coresponding GTK_<OBJECT>_GET_CLASS (object) macro.
|
|
- GtkObjectClass has no type field anymore, a class's type can be retrived
|
|
with the GTK_CLASS_TYPE (class) macro.
|
|
- GtkObjectClass does not introduce the finalize() and shutdown() methods
|
|
anymore. While shutdown() is intended for GTK+ internal use only, finalize()
|
|
is required by a variety of object implementations. GObjectClass.finalize
|
|
should be overriden here, e.g.:
|
|
static void gtk_label_finalize (GObject *gobject)
|
|
{
|
|
GtkLabel *label = GTK_LABEL (gobject);
|
|
|
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
|
}
|
|
static void gtk_label_class_init (GtkLabelClass *class)
|
|
{
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
|
|
|
|
gobject_class->finalize = gtk_label_finalize;
|
|
}
|
|
|
|
- the GtkObject::destroy signal can now be emitted multiple times on an object.
|
|
::destroy implementations should check that make sure that they take this
|
|
into account, by checking to make sure that resources are there before
|
|
freeing them. For example:
|
|
if (object->foo_data)
|
|
{
|
|
g_free (object->foo_data);
|
|
object->foo_data = NULL;
|
|
}
|
|
|
|
Also, ::destroy implementations have to release object references that
|
|
the object holds. Code in finalize implementations such as:
|
|
if (object->adjustment)
|
|
{
|
|
gtk_object_unref (object->adjustment);
|
|
object->adjustment = NULL;
|
|
}
|
|
have to be moved into the ::destroy implementations. The reason for doing
|
|
this is that all object reference cycles should be broken at destruction
|
|
time.
|
|
|
|
* Signal system changes:
|
|
The Gtk 2.0 signal merly proxies the GSignal system now.
|
|
For future usage, direct use of the GSignal API is recommended,
|
|
this avoids significant performance hits where GtkArg structures
|
|
have to be converted into GValues. For language bindings,
|
|
GSignal+GClosure provide a much more flexible and convenient
|
|
mechanism to hook into signal emissions or install class default
|
|
handlers, so the old GtkSignal API for language bindings is not
|
|
supported anymore.
|
|
Functions that got removed in the Gtk signal API:
|
|
gtk_signal_n_emissions(), gtk_signal_n_emissions_by_name(),
|
|
gtk_signal_set_funcs(), gtk_signal_handler_pending_by_id(),
|
|
gtk_signal_add_emission_hook(), gtk_signal_add_emission_hook_full(),
|
|
gtk_signal_remove_emission_hook(), gtk_signal_query().
|
|
gtk_signal_add_emission_hook(), gtk_signal_remove_emission_hook().
|
|
Also, the GtkCallbackMarshal argument to gtk_signal_connect_full() is
|
|
not supported anymore.
|
|
For many of the removed functions, similar variants are available
|
|
in the g_signal_* namespace.
|
|
|
|
- Inserting and deleting text in GtkEntry though functions such
|
|
as gtk_entry_insert_text() now leave the cursor at its original
|
|
position in the text instead of moving it to the location of
|
|
the insertion/deletion.
|
|
|
|
- The ->label field of GtkFrame widgets has been removed. (As part of
|
|
a change to allow the arbitrary widgets in the title position.) The
|
|
text can now be retrieved with the new function gtk_frame_get_text().
|
|
|
|
- The 'font' and 'font_set' declarations in RC files are now ignored. There
|
|
is a new 'font_name' field that holds the string form of a Pango font
|
|
|
|
- A number of types in GDK have become subclasses of GObject. For the
|
|
most part, this should not break anyone's code. However, it's now
|
|
possible/encouraged to use g_object_ref()/g_object_unref() and other
|
|
GObject features with these GDK types. The converted types are:
|
|
GdkWindow, GdkDrawable, GdkPixmap, GdkImage, GdkGC, GdkDragContext,
|
|
GdkColormap
|
|
|
|
- All drawables including pixmaps used to have a type tag, the
|
|
GdkWindowType enumeration, which included GDK_WINDOW_PIXMAP.
|
|
GdkWindowType is now a property of GdkWindow _only_, and there is
|
|
no GDK_WINDOW_PIXMAP. You can use the GDK_IS_PIXMAP() macro to see
|
|
if you have a pixmap, if you need to know that.
|
|
|
|
- GtkStyle and GtkRcStyle are now subclasses of GObject as well. This
|
|
requires fairly extensive changes to theme engines quite badly, but
|
|
shouldn't affect most other code.
|
|
|
|
- xthickness/ythickness have moved from GtkStyleClass to GtkStyle
|
|
(from class to instance). This gives themes a bit more flexibility
|
|
and is generally more of the Right Thing. You can trivially fix
|
|
your code with s/style->klass->xthickness/style->xthickness/g and
|
|
same for ythickness.
|
|
|
|
- Some GtkStyle draw_ methods have been removed (cross, oval, ramp)
|
|
and others have been added (expander, layout). This will require
|
|
changes to theme engines.
|
|
|
|
- If you were using private GDK types, they have been rearranged
|
|
significantly. You shouldn't use private types. ;-)
|
|
|
|
- The visual for a widget, and also the default visual is now derived
|
|
from the colormap for the widget and the default colormap.
|
|
gtk_widget_set_visual(), gtk_widget_set_default_visual(), gtk_widget_push_visual()
|
|
and gtk_widget_pop_visual() now do nothing. Since the visual always
|
|
had to match that of the colormap, it is safe to simply delete
|
|
all references to these functions.
|
|
|
|
- A number of functions in GDK have been renamed for consistency and
|
|
clarity. #defines to provide backwards compatibility have been
|
|
included, but can be disabled by defineing GDK_DISABLE_COMPAT_H.
|
|
|
|
#define gdk_draw_pixmap gdk_draw_drawable
|
|
#define gdk_draw_bitmap gdk_draw_drawable
|
|
|
|
#define gdk_window_get_size gdk_drawable_get_size
|
|
#define gdk_window_get_type gdk_window_get_window_type
|
|
#define gdk_window_get_colormap gdk_drawable_get_colormap
|
|
#define gdk_window_set_colormap gdk_drawable_set_colormap
|
|
#define gdk_window_get_visual gdk_drawable_get_visual
|
|
|
|
#define gdk_window_ref gdk_drawable_ref
|
|
#define gdk_window_unref gdk_drawable_unref
|
|
#define gdk_bitmap_ref gdk_drawable_ref
|
|
#define gdk_bitmap_unref gdk_drawable_unref
|
|
#define gdk_pixmap_ref gdk_drawable_ref
|
|
#define gdk_pixmap_unref gdk_drawable_unref
|
|
|
|
#define gdk_gc_destroy gdk_gc_unref
|
|
#define gdk_image_destroy gdk_image_unref
|
|
#define gdk_cursor_destroy gdk_cursor_unref
|
|
|
|
(Note that g_object_ref() and g_object_unref() may be used for all of
|
|
the above.)
|
|
|
|
#define gdk_window_copy_area(drawable,gc,x,y,source_drawable,source_x,source_y,width,height) \
|
|
gdk_draw_pixmap(drawable,gc,source_drawable,source_x,source_y,x,y,width,height)
|
|
|
|
#define gdk_rgb_get_cmap gdk_rgb_get_colormap
|
|
|
|
- gdk_pixmap_foreign_new() no longer calls XFreePixmap() on the
|
|
pixmap when the GdkPixmap is finalized. This change corresponds
|
|
to the behavior of gdk_window_foreign_new(), and fixes a lot
|
|
of problems with code where the pixmap wasn't supposed to be
|
|
freed. If XFreePixmap() is needed, it can be done using the
|
|
destroy-notification facilities of g_object_set_data().
|
|
|
|
- GtkProgress/GtkProgressBar had serious problems in GTK 1.2.
|
|
|
|
- Only 3 or 4 functions are really needed for 95% of progress
|
|
interfaces; GtkProgress[Bar] had about 25 functions, and
|
|
didn't even include these 3 or 4.
|
|
- In activity mode, the API involves setting the adjustment
|
|
to any random value, just to have the side effect of
|
|
calling the progress bar update function - the adjustment
|
|
is totally ignored in activity mode
|
|
- You set the activity step as a pixel value, which means to
|
|
set the activity step you basically need to connect to
|
|
size_allocate
|
|
- There are ctree_set_expander_style()-functions, to randomly
|
|
change look-and-feel for no good reason
|
|
- The split between GtkProgress and GtkProgressBar makes no sense
|
|
to me whatsoever.
|
|
|
|
This was a big wart on GTK and made people waste lots of time,
|
|
both learning and using the interface.
|
|
|
|
So, we have added what we feel is the correct API, and marked all the
|
|
rest deprecated. However, the changes are 100% backward-compatible and
|
|
should break no existing code.
|
|
|
|
The following 5 functions are the new programming interface and you
|
|
should consider changing your code to use them:
|
|
|
|
void gtk_progress_bar_pulse (GtkProgressBar *pbar);
|
|
void gtk_progress_bar_set_text (GtkProgressBar *pbar,
|
|
const gchar *text);
|
|
void gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
|
|
gfloat fraction);
|
|
|
|
void gtk_progress_bar_set_pulse_step (GtkProgressBar *pbar,
|
|
gfloat fraction);
|
|
void gtk_progress_bar_set_orientation (GtkProgressBar *pbar,
|
|
GtkProgressBarOrientation orientation);
|
|
|
|
* The GtkNotebookPage structure has been removed from the public header files;
|
|
this was never meant to be a public structure, and all functionality that
|
|
could be done by accessing the struct fields of this structure should be
|
|
accesible otherwise.
|
|
|
|
- GtkMenuPositionFunc has a new parameter push_in which controls how
|
|
menus placed outside the screen is handled. If this is set to true and
|
|
part of the menu is outside the screen then Gtk+ pushes it into the visible
|
|
area. Otherwise the menu is cut of at the end of the visible screen area.
|
|
|
|
Regardles of what happens to the size of the menu, the result is always
|
|
that the items are placed in the same place as if the menu was placed
|
|
outside the screen, using menu scrolling if necessary.
|
|
|
|
- The "draw" signal and virtual method on GtkWidget has been removed.
|
|
All drawing should now occur by invalidating a region of the widget
|
|
(call gdk_window_invalidate_rect() or gtk_widget_queue_draw() for
|
|
example to invalidate a region). GTK+ merges all invalid regions,
|
|
and sends expose events to the widget in an idle handler for the
|
|
invalid regions. gtk_widget_draw() is deprecated but still works; it
|
|
adds the passed-in area to the invalid region and immediately sends
|
|
expose events for the current invalid region.
|
|
|
|
Most widgets will work fine if you just delete their "draw"
|
|
implementation, since they will already have working expose_event
|
|
implementations. The draw method was rarely called in practice
|
|
anyway.
|
|
|