Compare commits
96 Commits
application
...
GTK_2_0_3
| Author | SHA1 | Date | |
|---|---|---|---|
| c577abf769 | |||
| 4794f2b309 | |||
| 6fe89cc83a | |||
| edf587b5d0 | |||
| cef800524a | |||
| 44fb34e048 | |||
| fa5b3494ce | |||
| 980b21ed3a | |||
| 565c6e3ba5 | |||
| de4153065e | |||
| a7cef089a8 | |||
| c2a0b5322c | |||
| 1b4ae4ff25 | |||
| 0d4e66328c | |||
| 91ba6c2dc6 | |||
| a57801b074 | |||
| c1b5a2d0ef | |||
| 785183c7fb | |||
| c2929809ff | |||
| 840d2ef409 | |||
| a9274b2f0c | |||
| 32931e7d08 | |||
| 410b70f907 | |||
| 0aa1bd5e97 | |||
| d7542b9af8 | |||
| 859145de52 | |||
| 5d2db8f012 | |||
| 1fa83a74f5 | |||
| cb9aff42c7 | |||
| 1124ea7c72 | |||
| ec80b47977 | |||
| 1fd687f7c2 | |||
| f1fa35441e | |||
| d7b7242847 | |||
| a2e485757c | |||
| 2c79e71d98 | |||
| c2d9124553 | |||
| 806bb88530 | |||
| ea696a2362 | |||
| 87234fd57b | |||
| 31ec94faa5 | |||
| 2dcfebc67f | |||
| d81b18a210 | |||
| 185087e553 | |||
| 26f74e40f6 | |||
| ff76bf8ba7 | |||
| 099100a9d3 | |||
| 94d05dfaf8 | |||
| f10a6beefc | |||
| fa7fc23f44 | |||
| f34a1f4807 | |||
| 8b4829abab | |||
| f21dfb358d | |||
| 5a1a08f160 | |||
| 0cc2d916f1 | |||
| dbe2343a7d | |||
| bd118b7212 | |||
| 175116ac7d | |||
| 12cf52e468 | |||
| c5162fa6e8 | |||
| 8aa2e2453e | |||
| 2488bbf9fc | |||
| 4dd906e7a7 | |||
| 4e3c34eab6 | |||
| 2083f3e262 | |||
| c400e38f98 | |||
| b2e2fe6ea3 | |||
| 115418d968 | |||
| 64fb36c3d8 | |||
| 2255a7225d | |||
| f4dc453e09 | |||
| a8749b2614 | |||
| 1c92d4b28d | |||
| 15c38b93e2 | |||
| 1fc3556064 | |||
| 31b514d831 | |||
| 752742d044 | |||
| e49d754fdc | |||
| 22f7b3ee23 | |||
| a704364549 | |||
| 21c7e08b21 | |||
| 2d509b1d84 | |||
| 5ef9c5a5bf | |||
| 77d170539a | |||
| 9255c12c87 | |||
| f2b3c6e6a3 | |||
| f6238492bc | |||
| fab341df09 | |||
| e11dcc5426 | |||
| bee067608a | |||
| 9eea275ed7 | |||
| 39e60a0564 | |||
| ac5905d0db | |||
| c962023b0d | |||
| a9d9b8581b | |||
| 78bd6b2844 |
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -1,3 +1,636 @@
|
||||
Thu May 23 17:19:16 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Released 2.0.3.
|
||||
|
||||
* gtk/gtktooltips.c (gtk_tooltips_event_handler): Disable
|
||||
tooltips for menu items with submenus .. they still
|
||||
don't really work properly.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Clear
|
||||
initial_pos_set even if it only causes a move, not
|
||||
a resize as well.
|
||||
|
||||
* configure.in: GTK+-2.0.3, interface age, binary age 3.
|
||||
|
||||
* NEWS: Updated.
|
||||
|
||||
2002-05-23 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct path to the loaders and immodules
|
||||
directories (GTK_BINARY_VERSION, not GTK_VERSION).
|
||||
|
||||
Wed May 22 16:12:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Require autoconf-2.52 explicitely,
|
||||
since otherwise Debian will process it with 2.13 (ugh!).
|
||||
|
||||
Wed May 22 12:29:20 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_init): remove
|
||||
GTK_RESIZE_QUEUE setting.
|
||||
|
||||
Tue May 21 16:46:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkmain-x11.c (gdk_internal_connection_watch):
|
||||
Fix missing dereference. (HideToshi Tajima)
|
||||
|
||||
Tue May 21 15:33:32 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Conditionalize
|
||||
GTK_IS_PLUG() check on GDK_WINDOWING_X11. (Problem
|
||||
reported by Sven Neumann)
|
||||
|
||||
Mon May 20 15:02:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: Patch from HideToshi Tajima
|
||||
to handle Xlib internal connections. (#76681)
|
||||
|
||||
Mon May 20 12:59:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Set the private LEAVE_PENDING
|
||||
flag to fix problem where with menu items with
|
||||
submenus, tooltips were getting stuck. (Effectively
|
||||
disables tooltips for menu items with submenus.)
|
||||
(Bug #75961, Soeren Sandmann)
|
||||
|
||||
* tests/testgtk.c: Set a tooltip on a menu item
|
||||
with a submenu.
|
||||
|
||||
Mon May 20 11:47:59 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c: Undo an accidental revert of
|
||||
fixes of May 16. (Caught by Padraig O'Briain)
|
||||
|
||||
* gtk/gtkctree.c (cell_size_request): Fix bug where
|
||||
size request for text cells was being overwritten.
|
||||
(#82264, Graham Swallow.)
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* configure.in: Check for endianness.
|
||||
|
||||
Thu May 16 19:49:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_configure_event): Only
|
||||
optimize out the full configure handling if we got
|
||||
a gratuitous configure event(configure_request_count == 0)
|
||||
and the size didn't change.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_move_resize): Use
|
||||
g_message(), not g_print() for debug spew.
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_real_set_focus): Ref
|
||||
the old and new focus widgets for the scope of
|
||||
the function.
|
||||
|
||||
* gtk/gtksocket.c gtkplug.c: Remove various #if 0'd
|
||||
bits of old code.
|
||||
|
||||
* gtk/gtksocket.c gtk/gtkplug.c: Enhance debug messages.
|
||||
|
||||
Fri May 17 14:40:24 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_slave):
|
||||
Protect against reentrancy problems by emitting
|
||||
::preedit_changed at the end, fixing input context
|
||||
leak. (Yao Zhang)
|
||||
|
||||
* modules/input/gtkimcontextxim.c (status_window_free):
|
||||
Patch from Federico Mena Quintero to fix problem where
|
||||
references to IMContextXIM were kept around after
|
||||
module was unloaded. (#77008)
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_set): NULL initialize
|
||||
proxy window.
|
||||
|
||||
Fri May 17 13:56:23 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_filter_func): Fix a missing
|
||||
unref in the local/passive case. (#82067, Michael
|
||||
Meeks)
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_remove_from_socket): Fix
|
||||
reference leak on the plug window.
|
||||
|
||||
* tests/testsocket.c (add_child): Fix memory leak.
|
||||
|
||||
* gtk/gtkdnd.c (gtk_drag_dest_site_destroy): Unref
|
||||
the proxy window.
|
||||
|
||||
Thu May 16 18:47:29 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_show): Disable the
|
||||
focus-some-one code for GtkPlug descendants.
|
||||
|
||||
* gtk/gtkplug.c (gtk_plug_focus_event): Eat
|
||||
focus-in/out events since they can be generated
|
||||
by keyboard grabs, but are spurious for an embeddded
|
||||
widget. (#79196, Padraig O'Briain)
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_request): Only
|
||||
pay attention to the minimum size hints, and changes
|
||||
to that ... ignore the default size.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_send_configure_event):
|
||||
Pass in root-window relative coordinates as per
|
||||
the ICCCM.
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_size_allocate): Send
|
||||
as many synthetic configures as necessary to make
|
||||
up for ConfigureRequest events we got. (#78799,
|
||||
Dave Camp.)
|
||||
|
||||
Thu May 16 23:59:56 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_iter_changed): set the prev
|
||||
of the next node correctly, so we don't corrupt the list and cause
|
||||
bad things. (fixes #71374)
|
||||
|
||||
Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENABLE_DEBUG
|
||||
|
||||
Thu May 16 15:44:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/editable_cells.c (cell_edited): Fix
|
||||
typo in earlier patch.
|
||||
|
||||
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||
Don't filter control-shift+[non-hex].
|
||||
(#80252, reported by Nalin Dahyabhai)
|
||||
|
||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Fixes for #78258
|
||||
|
||||
* gtk/gtkrbtree.c demos/gtk-demo/editable-cells.c:
|
||||
Fix some 64-bit warning problems. (Patch from Matthias
|
||||
Clasen.)
|
||||
|
||||
* gtk/gtkrbtree.c (_gtk_rbtree_debug_spew_helper): Surround
|
||||
a bunch of debug code with G_ENABLE_DEBUG.
|
||||
|
||||
* configure.in demos/gtk-demo/main.c: Replace
|
||||
#ifndef G_OS_WIN32 with proper #ifdef HAVE_FLOCKFILE.
|
||||
|
||||
Thu May 16 12:56:38 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Fix a missed
|
||||
check for division by zero. (#77820, Gareth Pearce)
|
||||
|
||||
Thu May 16 12:50:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_xsettings_notify_cb):
|
||||
gdk_event_put() copies the event and setting name,
|
||||
so we don't have to strdup() it here. (Fix from
|
||||
Michael Meeks, #81953)
|
||||
|
||||
2002-05-16 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_paint): If the menu is scrolled down or
|
||||
up, and some of the widget area is empty, don't fill it in with
|
||||
GTK_SHADOW_IN rectangles that make it looks strange. Fixes
|
||||
#72695.
|
||||
|
||||
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't
|
||||
call gdk_pointer_grab() to change the cursor if we've
|
||||
already ungrabbed on button release / escape.
|
||||
(#80420, Dave Camp)
|
||||
|
||||
Wed May 15 17:12:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktooltips.c: Special case menu items to
|
||||
pop down on motion. (#75961)
|
||||
|
||||
* tests/testgtk.c (create_item_factory): Add tooltips
|
||||
to the File menu.
|
||||
|
||||
* gtk/gtkentry.c (update_im_cursor_location): Fix
|
||||
cursor locations passed to the IM context.
|
||||
(#80027, Yao Zhang)
|
||||
|
||||
Wed May 15 16:52:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkfontsel.c: Update from contents of size entry
|
||||
on focus out. (#76493, Lauris Kaplinski)
|
||||
|
||||
* gtk/gtkclipboard.c (selection_get_cb): Fix backwads
|
||||
info/time arguments. (#80226)
|
||||
|
||||
Wed May 15 11:13:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in gtk/stock-icons/Makefile.am: If not
|
||||
building libpng, don't rebuild gtkstockpixbufs.h
|
||||
(#81819, Bill Janssen)
|
||||
|
||||
2002-05-15 Jacob Berkman <jacob@ximian.com>
|
||||
|
||||
* demos/gtk-demo/Makefile.am: run perl on the file, since it's not
|
||||
executable
|
||||
|
||||
Tue May 14 19:53:15 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* demos/gtk-demo/geninclude.pl.in configure.in:
|
||||
Subsitute in @PERL@ instead of hardcoded
|
||||
/usr/bin/perl. (#78355, Gareth Pearce. Fix based
|
||||
on patch from Matthias Clasen)
|
||||
|
||||
* gdk/Makefile.am: Patch from Daniel Elstner to use glib-mkenums
|
||||
instead of makeenums.pl.
|
||||
|
||||
* gdk/{x11,linux-fb,win32}/Makefile.am: Hack to
|
||||
get gdkenumtypes.h built first.
|
||||
|
||||
Tue May 14 18:41:58 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/stock-icons/Makefile.am (gtkstockpixbufs.h):
|
||||
Remove the result file on error. (#79929, David
|
||||
Highley)
|
||||
|
||||
* gtk/gtkoptionmenu.c (gtk_option_menu_remove_menu):
|
||||
If the menu is currently active, cancel it before
|
||||
setting the new menu. (#79162, Jonathan Blandford.)
|
||||
|
||||
Tue May 14 18:13:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix
|
||||
prepending at the start of the list. (#56349,
|
||||
Thomas Leonard.)
|
||||
|
||||
* gtk/gtksignal.h (gtk_signal_disconnect_by_func): Add
|
||||
explicit casts to GSignalMatchType for C++ compatibility.
|
||||
(#77601)
|
||||
|
||||
Tue May 14 18:02:37 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_realize): Fix
|
||||
frame_right/frame_top screwup. (Detlef Reichl,
|
||||
#78111)
|
||||
|
||||
* gtk/Makefile.am (install-data-local): Use
|
||||
$(INSTALL_DATA) not $(INSTALL) when installing
|
||||
theme files. (#77094, Ben Liblit)
|
||||
|
||||
Tue May 14 17:30:57 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkctree.c gtk/gtkclist.c: Fix format of
|
||||
selection data to be 8 rather than GTK_TYPE_POINTER.
|
||||
(#79751, James Henstridge)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_key_press): Call
|
||||
gtk_accelerator_valid() with cleaned up
|
||||
accel_key/accel_mods, not the raw values from
|
||||
the event. (#80513, Havoc Pennington.)
|
||||
|
||||
* gtk/gtkmenu.c (gtk_menu_set_tearoff_state): Remove
|
||||
some dead code that set the tearoff window not
|
||||
resizable and removed decorations. (#80235)
|
||||
|
||||
Tue May 14 16:44:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_ensure_layout): Set
|
||||
the width of the layout to the actual wrap width
|
||||
(our requisition) not the width we set when calculating
|
||||
the width. This results in the lines being justified
|
||||
within the correct area. (#79157, Anders Carlsson)
|
||||
|
||||
* gtk/gtkaccelgroup.c gtk/gtkmarshelers.list: Corrected
|
||||
registered parameter types of "accel_activate" and
|
||||
"accel_changed" signals. (Patch from Murray Cumming, #78798)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_make_default_dir): Switch
|
||||
binary-version and type to correspond to the
|
||||
current ordering in _gtk_get_module_path.
|
||||
(#78746, Sergey Kuzminov)
|
||||
|
||||
* gtk/gtkrc.c (gtk_rc_get_module_dir): Add docs
|
||||
pointing to the GTK_PATH documentation.
|
||||
|
||||
* gtk/Makefile.am (uninstall-local): Delete
|
||||
key themes as well. (#81286, Kristian Rietveld.)
|
||||
|
||||
Tue May 14 15:09:33 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkkeys-x11.c: Try adding a #ifndef/#define
|
||||
for XkbKeySymEntry to make up for OSF broken
|
||||
XKB extension. (#77819, Gareth Pearce)
|
||||
|
||||
* gtk/gtklayout.c: Clamp the upper values in response
|
||||
to ::size-allocate if necessary. (#81290, Christophe Saout)
|
||||
|
||||
* gtk/gtkcombo.c (gtk_combo_entry_focus_out): Handle
|
||||
combo being destroyed before idle fires.
|
||||
(#81396, Timo Sirainen)
|
||||
|
||||
Tue May 14 11:21:19 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate):
|
||||
Discard configure events from SubstructureNotify.
|
||||
(#81760, Rich Burridge)
|
||||
|
||||
* gtk/gtkfontsel.c (cmp_families): Use g_utf8_strcoll(), not
|
||||
strcmp().
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): Clamp
|
||||
width of child allocation to >= 1. (Fixes warnings from
|
||||
#77639, Martin Schulze)
|
||||
|
||||
Mon May 13 23:19:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
PACK_END cells support CELL_ACTION_EVENT too now ...
|
||||
|
||||
2002-05-10 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
* gtk/gtktreemodel.c: #define INITIALIZE_TREE_ITER(),
|
||||
which zeroes out all GtkTreeIter fields. (#81380)
|
||||
(gtk_tree_model_get_iter): Use it.
|
||||
(gtk_tree_model_iter_children): ditto
|
||||
(gtk_tree_model_iter_nth_child): ditto
|
||||
(gtk_tree_model_iter_parent): ditto
|
||||
|
||||
Thu May 9 23:33:32 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): fixup comment,
|
||||
so it doesn't screw the docs.
|
||||
|
||||
2002-05-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: fixed yesterdays fix for cross compiling: simply
|
||||
check the variable "cross_compiling" which gets set by autoconf.
|
||||
|
||||
Tue May 7 18:36:03 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Check for selection_atom, not property name atom.
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* configure.in: added a new conditional CROSS_COMPILING which
|
||||
indicates ($build != $host). If it is set, look for
|
||||
gdk-pixbuf-csource in PATH. Error out if it was not found.
|
||||
|
||||
* gtk/stock-icons/Makefile.am: use the gdk-pixbuf-csource found at
|
||||
configure time if CROSS_COMPILING is set, use the one which was
|
||||
just built otherwise.
|
||||
|
||||
2002-05-07 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gdk/x11/xsettings-client.c (xsettings_client_process_event):
|
||||
Only process manager events with the correct atom.
|
||||
|
||||
Tue May 7 00:50:20 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(May 6):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_map_expanded_rows_helper): call
|
||||
func on current node before the child nodes.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_motion_draw_column_motion_arrow):
|
||||
unset user_data before destroying the window. (fixes #80065).
|
||||
|
||||
Tue May 7 00:18:45 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_start_editing): add neighbor
|
||||
size hack to align editable widget.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_end): use g_new0
|
||||
here instead of g_new (this triggered some bad crash),
|
||||
(gtk_tree_view_column_cell_is_visible): add missing assert
|
||||
|
||||
2002-05-07 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Fix for #79248, merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_new):
|
||||
(gdk_window_set_events): Always select for property notify for
|
||||
maintaining window state.
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Only propagate
|
||||
property notifys if they were selected by gdk_window_set_events.
|
||||
|
||||
Mon May 6 11:48:08 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add ChangeLog.pre-2-0 (#78641)
|
||||
|
||||
* m4macros/gtk-2.0.m4: save CFLAGS/LIBS properly when
|
||||
compiling "what went wrong" test case. (#79329)
|
||||
|
||||
* m4macros/gtk-2.0.m4: Remove reference to editing
|
||||
pkg-config script. (From Jim Gettys)
|
||||
|
||||
2002-05-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Typo fix.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_class_init): Correct the
|
||||
composite_child blurb.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_show_border): Clarify docs. (#73093)
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
|
||||
gtk_text_layout_invalidate_cache instead of cut-and-paste
|
||||
(gtk_text_layout_real_invalidate): always invalidate cache, even
|
||||
if the line has no stored line data. #78573
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
|
||||
gtk_text_view_ensure_layout, #77388
|
||||
(gtk_text_view_get_iter_at_location): ditto
|
||||
(gtk_text_view_get_line_yrange): ditto
|
||||
(gtk_text_view_get_line_at_y): ditto
|
||||
|
||||
2002-04-30 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): assign
|
||||
something to "prev" so that removing tag info succeeds.
|
||||
Part of #77301
|
||||
|
||||
* gtk/gtktextbtree.c (_gtk_text_btree_unref): reorder so that it
|
||||
unrefs the tag table first, so that the btree is in a consistent
|
||||
state when we're removing tags from it.
|
||||
|
||||
* gtk/gtktexttagtable.c (_gtk_text_tag_table_remove_buffer): strip
|
||||
all tags in the tag table out of the buffer. #77301
|
||||
|
||||
2002-04-29 Alex Larsson <alexl@redhat.com>
|
||||
|
||||
* gdk/gdkpango.c (gdk_draw_layout_line_with_colors):
|
||||
Use tmp also if foreground is set.
|
||||
|
||||
Sun Apr 28 22:43:55 2002 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_set_sort_func): Fix
|
||||
so that you can set a new sort func.
|
||||
|
||||
2002-04-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkrange.c (gtk_range_calc_layout): Avoid a possible
|
||||
division by zero. (#77820)
|
||||
|
||||
Sat Apr 27 15:48:49 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD:
|
||||
|
||||
(Apr 26):
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): if the
|
||||
deleted node was "below" this path, then do not unref all nodes
|
||||
between the deleted parent and the node this rowref is pointing too
|
||||
(see added comment in gtk_tree_row_ref_deleted_callback),
|
||||
(fixes #77977)
|
||||
|
||||
2002-04-26 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* tests/testtreecolumns.c
|
||||
* tests/testtreeview.c: quit the main loop when the window is
|
||||
destroyed. Removed compiler warnings about wrong format in printf().
|
||||
|
||||
Fri Apr 26 00:00:00 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 26:
|
||||
|
||||
(Apr 25):
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func):
|
||||
resort if we're already in 'unsorted' state, and update the docs
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_search_iter): make the search
|
||||
dialog not scroll horizontally (prolly fixes #74806).
|
||||
|
||||
(Also from Apr 25, fixes #74206):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_count_special_cells
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell),
|
||||
(_gtk_tree_view_column_get_editable_cell): remove a space which made
|
||||
the code look ugly
|
||||
(_gtk_tree_view_column_count_special_cells): new function,
|
||||
(gtk_tree_view_column_cell_process_action): if there's only one
|
||||
activatable cell, the whole column will activate that renderer.
|
||||
|
||||
(Apr 24):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
|
||||
->priv->edited_column to NULL. Pleas read the comment in this
|
||||
function for an explanation (fixes #79632).
|
||||
|
||||
Thu Apr 25 20:24:37 2002 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): use the child's
|
||||
requisition.height, not allocation.height, as width of submenu
|
||||
indicator. (#75948)
|
||||
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/gtktextiter.c:
|
||||
* gtk/gtktreemodelsort.c:
|
||||
* gtk/gtktextview.c: Documentation fixes. (#62359, #68404, #57929)
|
||||
|
||||
2002-04-22 Anders Carlsson <andersca@gnu.org>
|
||||
|
||||
* gtk/gtkentry.c (gtk_entry_drag_data_get): Use
|
||||
gtk_entry_get_public_chars.
|
||||
Fixes #79532 (Reported by Ovidiu Gheorghioiu)
|
||||
|
||||
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gdk/x11/gdkwindow-x11.c (gdk_window_reparent):
|
||||
Save x and y in window_private.
|
||||
|
||||
* gtk/gtkplug.c (_gtk_plug_add_to_socket):
|
||||
Move plug window outside the visible area to avoid flashing until
|
||||
the first size_allocate.
|
||||
|
||||
Sat Apr 20 16:49:26 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_new): replace GDK_IS_WINDOW
|
||||
with GDK_IS_DRAWABLE in the assert, only check GDK_WINDOW_DESTROYED
|
||||
if window is a GdkWindow,
|
||||
(gdk_bitmap_create_from_data): ditto,
|
||||
(gdk_pixmap_create_from_data): ditto
|
||||
|
||||
Sat Apr 20 01:54:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 20 2002:
|
||||
|
||||
(All from Apr 19):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): subtract
|
||||
TREE_VIEW_HEADER_HEIGHT from allocation->height to get the real
|
||||
size for the tree (fixes #72729),
|
||||
(gtk_tree_view_real_start_editing): correct cell_area->y for
|
||||
scrolling due to gtk_tree_view_real_set_cursor (fixes #75687)
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_row_changed): cancel editing
|
||||
if tree_view->priv->edited_column != NULL (fixes #76066)
|
||||
|
||||
(This patch fixes #50310):
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_autosize
|
||||
|
||||
* gtk/gtktreeview.c: privately export _gtk_tree_view_column_autosize,
|
||||
and add a small note about that function,
|
||||
(gtk_tree_view_button_press): check for double click and
|
||||
"not having an autosize" column before autosizing the column,
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_min_width):
|
||||
call _gtk_tree_view_column_autosize to update autosized column width
|
||||
(gtk_tree_view_column_set_max_width): ditto
|
||||
|
||||
Fri Apr 19 16:49:01 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge TreeView fixes from HEAD up to Apr 19 2002:
|
||||
|
||||
(From Apr 16):
|
||||
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): check
|
||||
->priv->cursor and ->priv->anchor rowrefs before removing
|
||||
node->children from the rbtree. Also check the
|
||||
->priv->last_single_clicked and ->priv->last_single_clicked_2 rowrefs
|
||||
(I think I really need to rename those two someday).
|
||||
|
||||
(From Apr 17):
|
||||
* gtk/gtktreestore.c (gtk_tree_store_insert_before): fix docs
|
||||
|
||||
(From Apr 18):
|
||||
* gtk/gtktreemodelsort.c
|
||||
(gtk_tree_model_sort_convert_path_to_child_path): so this function
|
||||
was completely broken. Fix it and improve readability.
|
||||
|
||||
(From Apr 19):
|
||||
* gtk/gtktreeprivate.h, gtk/gtktreeview.c: rename
|
||||
last_single_clicked{,_2} to last_button_press{,_2}, as the latter
|
||||
is a more sane name.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): use ->priv->anchor
|
||||
instead of ->priv->cursor, check for the anchor at another place, as
|
||||
you can go in edit mode without having an anchor.
|
||||
|
||||
2002-04-18 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf/Makefile.am (uninstall-libtool-import-lib)
|
||||
* gdk/Makefile.am (uninstall-libtool-import-lib): Fix typo,
|
||||
thanks to David Sterba for noticing.
|
||||
|
||||
* gtk/gtkmain.h
|
||||
* gtk/gtkmain.c (gtk_init_abi_check, gtk_init_check_abi_check): In
|
||||
GTK+ 2.0 the GtkWindow struct actually is the same size in gcc on
|
||||
Win32 whether compiled with -fnative-struct or not. Unfortunately
|
||||
this wan't noticed until now. So, from now on, check some other
|
||||
struct, too, for which the use of -fnative-struct still
|
||||
matters. GtkBox is one such.
|
||||
|
||||
Mon Apr 15 15:41:56 2002 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_focus): include internal
|
||||
children when doing focus.
|
||||
(gtk_container_get_all_children): new static function to include
|
||||
internal children when making a list of them.
|
||||
|
||||
Sun Apr 14 16:56:59 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreeprivate.h: add _gtk_tree_view_column_get_editable_cell and
|
||||
|
||||
@@ -20,8 +20,8 @@ GTK+ requires the following packages:
|
||||
Simple install procedure
|
||||
========================
|
||||
|
||||
% gzip -cd gtk+-2.0.2.tar.gz | tar xvf - # unpack the sources
|
||||
% cd gtk+-2.0.2 # change to the toplevel directory
|
||||
% gzip -cd gtk+-2.0.3.tar.gz | tar xvf - # unpack the sources
|
||||
% cd gtk+-2.0.3 # change to the toplevel directory
|
||||
% ./configure # run the `configure' script
|
||||
% make # build GTK
|
||||
[ Become root if necessary ]
|
||||
|
||||
@@ -13,6 +13,7 @@ EXTRA_DIST = \
|
||||
NEWS.pre-1-0 \
|
||||
ChangeLog.pre-1-0 \
|
||||
ChangeLog.pre-1-2 \
|
||||
ChangeLog.pre-2-0 \
|
||||
README.cvs-commits \
|
||||
README.win32 \
|
||||
README.nanox \
|
||||
|
||||
@@ -1,3 +1,30 @@
|
||||
Overview of Changes in GTK+ 2.0.3
|
||||
=================================
|
||||
|
||||
* GtkTreeView fixes (Jonathan Blandford, Kristian Rietveld, Daniel Elstner)
|
||||
* Improve GdkRGB support for low color depths (Tor Lillqvist).
|
||||
* Tweak F10 behavior to focus GtkMenuBar. (Owen Taylor)
|
||||
* Include internal children when focusing. (Jonathan)
|
||||
* Win32 fixes (Tor Lillqvist, David Sterba)
|
||||
* Allow use of a pixmap as the drawable in gdk_pixmap_new(). (Kristian)
|
||||
* GdkPixbuf fixes (Matthias Clasen, Michael Natterer, Federico Mena Quintero)
|
||||
* GtkMenu fixes. (Soeren Sandmann)
|
||||
* Find gdk-pixbuf-csource when cross-compiling. (Michael Natterer)
|
||||
* Misc input-method related fixes (Yao Zhang, Federico)
|
||||
* Fix stuck grab during DND. (Dave Camp, Owen)
|
||||
* Remove in-bevel from scrolled-offscreen menus. (Ettore Perazzoli)
|
||||
* Various plug/socket fixes (Owen, Padraig O'Briain, Dave Camp,
|
||||
Michael Meeks)
|
||||
* Handle Xlib internal connections (HideToshi Tajima)
|
||||
* Many miscellaneous bug fixes.
|
||||
|
||||
Other contributors: Jacob Berkman, Abigail Brady, Rich Burridge,
|
||||
Anders Carlsson, Murray Cumming, Nalin Dahyabhai, James Henstridge,
|
||||
David Highley, Ben Liblitt, Tim Janik, Bill Jannsen, Lauris Kaplinski,
|
||||
Sergey Kuzminov, Alex Larsson, Sven Neumann, Havoc Pennington, Gareth Pearce,
|
||||
Simon Floery, Thomas Leonard, Detlef Reichl, Martin Schulze, Christophe Saout,
|
||||
Timo Sirainen, Graham Swallow.
|
||||
|
||||
Overview of Changes in GTK+ 2.0.2
|
||||
=================================
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
General Information
|
||||
===================
|
||||
|
||||
This is GTK+ version 2.0.2. GTK+ is a multi-platform toolkit for
|
||||
This is GTK+ version 2.0.3. GTK+ is a multi-platform toolkit for
|
||||
creating graphical user interfaces. Offering a complete set of widgets,
|
||||
GTK+ is suitable for projects ranging from small one-off projects to
|
||||
complete application suites.
|
||||
|
||||
+27
-5
@@ -1,3 +1,6 @@
|
||||
# require autoconf 2.52
|
||||
AC_PREREQ(2.52)
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(gdk/gdktypes.h)
|
||||
|
||||
@@ -29,9 +32,9 @@ GLIB_AC_DIVERT_BEFORE_HELP([
|
||||
#
|
||||
GTK_MAJOR_VERSION=2
|
||||
GTK_MINOR_VERSION=0
|
||||
GTK_MICRO_VERSION=2
|
||||
GTK_INTERFACE_AGE=2
|
||||
GTK_BINARY_AGE=2
|
||||
GTK_MICRO_VERSION=3
|
||||
GTK_INTERFACE_AGE=3
|
||||
GTK_BINARY_AGE=3
|
||||
GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
|
||||
dnl This is the X.Y used in -lgtk-FOO-X.Y
|
||||
GTK_API_VERSION=2.0
|
||||
@@ -310,7 +313,7 @@ AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no)
|
||||
# define a MAINT-like variable REBUILD which is set if Perl
|
||||
# and awk are found, so autogenerated sources can be rebuilt
|
||||
|
||||
AC_CHECK_PROGS(PERL, perl5 perl)
|
||||
AC_PATH_PROGS(PERL, perl5 perl)
|
||||
|
||||
# We would like indent, but don't require it.
|
||||
AC_CHECK_PROG(INDENT, indent, indent)
|
||||
@@ -323,7 +326,7 @@ if test "x$enable_rebuilds" = "xyes" && \
|
||||
fi
|
||||
AC_SUBST(REBUILD)
|
||||
|
||||
AC_CHECK_FUNCS(lstat mkstemp)
|
||||
AC_CHECK_FUNCS(lstat mkstemp flockfile)
|
||||
|
||||
# sigsetjmp is a macro on some platforms, so AC_CHECK_FUNCS is not reliable
|
||||
AC_MSG_CHECKING(for sigsetjmp)
|
||||
@@ -500,6 +503,8 @@ AM_CONDITIONAL(HAVE_WINTAB, test x$have_wintab = xyes)
|
||||
saved_cflags="$CFLAGS"
|
||||
saved_ldflags="$LDFLAGS"
|
||||
|
||||
# check for bytesex stuff
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
@@ -736,6 +741,12 @@ dnl Test for libpng
|
||||
*** from CVS.])
|
||||
fi
|
||||
|
||||
REBUILD_PNGS=\#
|
||||
if test -z "$LIBPNG"; then
|
||||
REBUILD_PNGS=
|
||||
fi
|
||||
AC_SUBST(REBUILD_PNGS)
|
||||
|
||||
AC_SUBST(LIBTIFF)
|
||||
AC_SUBST(LIBJPEG)
|
||||
AC_SUBST(LIBPNG)
|
||||
@@ -850,6 +861,16 @@ fi
|
||||
|
||||
AM_CONDITIONAL(USE_MMX, test x$use_mmx_asm = xyes)
|
||||
|
||||
dnl Look for a host system's gdk-pixbuf-csource if we are cross-compiling
|
||||
|
||||
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
|
||||
|
||||
if test $cross_compiling = yes; then
|
||||
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
|
||||
if test x$GDK_PIXBUF_CSOURCE = xno; then
|
||||
AC_MSG_ERROR(Could not find a gdk-pixbuf-csource in your PATH)
|
||||
fi
|
||||
fi
|
||||
|
||||
GDK_PIXBUF_PACKAGES="gmodule-2.0 gobject-2.0"
|
||||
GDK_PIXBUF_EXTRA_LIBS="$STATIC_LIB_DEPS $MATH_LIB"
|
||||
@@ -1474,6 +1495,7 @@ build/win32/Makefile
|
||||
build/win32/dirent/Makefile
|
||||
demos/Makefile
|
||||
demos/gtk-demo/Makefile
|
||||
demos/gtk-demo/geninclude.pl
|
||||
tests/Makefile
|
||||
docs/Makefile
|
||||
docs/reference/Makefile
|
||||
|
||||
@@ -55,7 +55,7 @@ EXTRA_DIST = \
|
||||
$(IMAGEFILES)
|
||||
|
||||
demos.h: $(demos) geninclude.pl
|
||||
(cd $(srcdir) && ./geninclude.pl $(demos) > demos.h)
|
||||
(cd $(srcdir) && $(PERL) ./geninclude.pl $(demos) > demos.h)
|
||||
|
||||
gtk_demo_SOURCES = \
|
||||
$(demos) \
|
||||
|
||||
@@ -158,7 +158,7 @@ cell_edited (GtkCellRendererText *cell,
|
||||
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
|
||||
switch ((gint) column)
|
||||
switch (GPOINTER_TO_INT (column))
|
||||
{
|
||||
case COLUMN_NUMBER:
|
||||
{
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
print <<EOT;
|
||||
typedef GtkWidget *(*GDoDemoFunc) (void);
|
||||
|
||||
typedef struct _Demo Demo;
|
||||
|
||||
struct _Demo
|
||||
{
|
||||
gchar *title;
|
||||
gchar *filename;
|
||||
GDoDemoFunc func;
|
||||
Demo *children;
|
||||
};
|
||||
|
||||
EOT
|
||||
|
||||
for $file (@ARGV) {
|
||||
my %demo;
|
||||
|
||||
($basename = $file) =~ s/\.c$//;
|
||||
|
||||
open INFO_FILE, $file or die "Cannot open '$file'\n";
|
||||
$title = <INFO_FILE>;
|
||||
$title =~ s@^\s*/\*\s*@@;
|
||||
$title =~ s@\s*$@@;
|
||||
|
||||
close INFO_FILE;
|
||||
|
||||
print "GtkWidget *do_$basename (void);\n";
|
||||
|
||||
push @demos, {"title" => $title, "file" => $file,
|
||||
"func" => "do_$basename"};
|
||||
}
|
||||
|
||||
# generate a list of 'parent names'
|
||||
foreach $href (@demos) {
|
||||
if ($href->{"title"} =~ m|^([\w\s]+)/[\w\s]+$|) {
|
||||
my $parent_name = $1;
|
||||
my $do_next = 0;
|
||||
|
||||
# parent detected
|
||||
if (defined @parents) {
|
||||
foreach $foo (@parents) {
|
||||
if ($foo eq $parent_name) {
|
||||
$do_next = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($do_next) {
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
push @parents, $parent_name;
|
||||
|
||||
$tmp = (defined @child_arrays)?($#child_arrays + 1):0;
|
||||
push @child_arrays, "child$tmp";
|
||||
|
||||
push @demos, {"title" => $parent_name, "file" => "NULL",
|
||||
"func" => "NULL"};
|
||||
}
|
||||
}
|
||||
|
||||
if (defined @parents) {
|
||||
$i = 0;
|
||||
for ($i = 0; $i <= $#parents; $i++) {
|
||||
$first = 1;
|
||||
|
||||
print "\nDemo ", $child_arrays[$i], "[] = {\n";
|
||||
|
||||
$j = 0;
|
||||
for ($j = 0; $j <= $#demos; $j++) {
|
||||
$href = $demos[$j];
|
||||
|
||||
if (!defined $demos[$j]) {
|
||||
next;
|
||||
}
|
||||
|
||||
if ($demos[$j]{"title"} =~ m|^$parents[$i]/([\w\s]+)$|) {
|
||||
if ($first) {
|
||||
$first = 0;
|
||||
} else {
|
||||
print ",\n";
|
||||
}
|
||||
|
||||
print qq ( { "$1", "$demos[$j]{file}", $demos[$j]{func}, NULL });
|
||||
|
||||
# hack ... ugly
|
||||
$demos[$j]{"title"} = "foo";
|
||||
}
|
||||
}
|
||||
|
||||
print ",\n";
|
||||
print qq ( { NULL } );
|
||||
print "\n};\n";
|
||||
}
|
||||
}
|
||||
|
||||
# sort @demos
|
||||
@demos_old = @demos;
|
||||
|
||||
@demos = sort {
|
||||
$a->{"title"} cmp $b->{"title"};
|
||||
} @demos_old;
|
||||
|
||||
# sort the child arrays
|
||||
if (defined @child_arrays) {
|
||||
for ($i = 0; $i <= $#child_arrays; $i++) {
|
||||
@foo_old = @{$child_arrays[$i]};
|
||||
|
||||
@{$child_arrays[$i]} = sort {
|
||||
$a->{"title"} cmp $b->{"title"};
|
||||
} @foo_old;
|
||||
}
|
||||
}
|
||||
|
||||
# toplevel
|
||||
print "\nDemo testgtk_demos[] = {\n";
|
||||
|
||||
$first = 1;
|
||||
foreach $href (@demos) {
|
||||
$handled = 0;
|
||||
|
||||
# ugly evil hack
|
||||
if ($href->{title} eq "foo") {
|
||||
next;
|
||||
}
|
||||
|
||||
if ($first) {
|
||||
$first = 0;
|
||||
} else {
|
||||
print ", \n";
|
||||
}
|
||||
|
||||
if (defined @parents) {
|
||||
for ($i = 0; $i <= $#parents; $i++) {
|
||||
if ($parents[$i] eq $href->{title}) {
|
||||
|
||||
if ($href->{file} eq 'NULL') {
|
||||
print qq ( { "$href->{title}", NULL, $href->{func}, $child_arrays[$i] });
|
||||
} else {
|
||||
print qq ( { "$href->{title}", "$href->{file}", $href->{func}, $child_arrays[$i] });
|
||||
}
|
||||
|
||||
$handled = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($handled) {
|
||||
next;
|
||||
}
|
||||
|
||||
print qq ( { "$href->{title}", "$href->{file}", $href->{func}, NULL });
|
||||
}
|
||||
|
||||
print ",\n";
|
||||
print qq ( { NULL } );
|
||||
print "\n};\n";
|
||||
|
||||
exit 0;
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/perl -w
|
||||
#!@PERL@ -w
|
||||
|
||||
print <<EOT;
|
||||
typedef GtkWidget *(*GDoDemoFunc) (void);
|
||||
|
||||
@@ -86,7 +86,7 @@ read_line (FILE *stream, GString *str)
|
||||
{
|
||||
int n_read = 0;
|
||||
|
||||
#ifndef G_OS_WIN32
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
flockfile (stream);
|
||||
#endif
|
||||
|
||||
@@ -112,7 +112,7 @@ read_line (FILE *stream, GString *str)
|
||||
case '\r':
|
||||
case '\n':
|
||||
{
|
||||
#ifndef G_OS_WIN32
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
int next_c = getc_unlocked (stream);
|
||||
#else
|
||||
int next_c = getc (stream);
|
||||
@@ -132,7 +132,7 @@ read_line (FILE *stream, GString *str)
|
||||
|
||||
done:
|
||||
|
||||
#ifndef G_OS_WIN32
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
funlockfile (stream);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,392 +0,0 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include <demos.h>
|
||||
|
||||
static GtkTextBuffer *info_buffer;
|
||||
static GtkTextBuffer *source_buffer;
|
||||
|
||||
static gchar *current_file = NULL;
|
||||
|
||||
enum {
|
||||
TITLE_COLUMN,
|
||||
FILENAME_COLUMN,
|
||||
FUNC_COLUMN,
|
||||
ITALIC_COLUMN,
|
||||
NUM_COLUMNS
|
||||
};
|
||||
|
||||
gboolean
|
||||
read_line (FILE *stream, GString *str)
|
||||
{
|
||||
int n_read = 0;
|
||||
|
||||
flockfile (stream);
|
||||
|
||||
g_string_truncate (str, 0);
|
||||
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
|
||||
c = getc_unlocked (stream);
|
||||
|
||||
if (c == EOF)
|
||||
goto done;
|
||||
else
|
||||
n_read++;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case '\r':
|
||||
case '\n':
|
||||
{
|
||||
int next_c = getc_unlocked (stream);
|
||||
|
||||
if (!(next_c == EOF ||
|
||||
(c == '\r' && next_c == '\n') ||
|
||||
(c == '\n' && next_c == '\r')))
|
||||
ungetc (next_c, stream);
|
||||
|
||||
goto done;
|
||||
}
|
||||
default:
|
||||
g_string_append_c (str, c);
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
|
||||
funlockfile (stream);
|
||||
|
||||
return n_read > 0;
|
||||
}
|
||||
|
||||
void
|
||||
load_file (const gchar *filename)
|
||||
{
|
||||
FILE *file;
|
||||
GtkTextIter start, end;
|
||||
GString *buffer = g_string_new (NULL);
|
||||
int state = 0;
|
||||
gboolean in_para = 0;
|
||||
|
||||
if (current_file && !strcmp (current_file, filename))
|
||||
return;
|
||||
|
||||
g_free (current_file);
|
||||
current_file = g_strdup (filename);
|
||||
|
||||
gtk_text_buffer_get_bounds (info_buffer, &start, &end);
|
||||
gtk_text_buffer_delete (info_buffer, &start, &end);
|
||||
|
||||
gtk_text_buffer_get_bounds (source_buffer, &start, &end);
|
||||
gtk_text_buffer_delete (source_buffer, &start, &end);
|
||||
|
||||
file = fopen (filename, "r");
|
||||
if (!file)
|
||||
{
|
||||
g_warning ("Cannot open %s: %s\n", filename, g_strerror (errno));
|
||||
return;
|
||||
}
|
||||
|
||||
gtk_text_buffer_get_iter_at_offset (info_buffer, &start, 0);
|
||||
while (read_line (file, buffer))
|
||||
{
|
||||
gchar *p = buffer->str;
|
||||
gchar *q;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
/* Reading title */
|
||||
while (*p == '/' || *p == '*' || isspace (*p))
|
||||
p++;
|
||||
q = p + strlen (p);
|
||||
while (q > p && isspace (*(q - 1)))
|
||||
q--;
|
||||
|
||||
if (q > p)
|
||||
{
|
||||
int len_chars = g_utf8_pointer_to_offset (p, q);
|
||||
|
||||
end = start;
|
||||
|
||||
g_assert (strlen (p) >= q - p);
|
||||
gtk_text_buffer_insert (info_buffer, &end, p, q - p);
|
||||
start = end;
|
||||
|
||||
gtk_text_iter_backward_chars (&start, len_chars);
|
||||
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
|
||||
|
||||
start = end;
|
||||
|
||||
state++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
/* Reading body of info section */
|
||||
while (isspace (*p))
|
||||
p++;
|
||||
if (*p == '*' && *(p + 1) == '/')
|
||||
{
|
||||
gtk_text_buffer_get_iter_at_offset (source_buffer, &start, 0);
|
||||
state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
int len;
|
||||
|
||||
while (*p == '*' || isspace (*p))
|
||||
p++;
|
||||
|
||||
len = strlen (p);
|
||||
while (isspace (*(p + len - 1)))
|
||||
len--;
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (in_para)
|
||||
gtk_text_buffer_insert (info_buffer, &start, " ", 1);
|
||||
|
||||
g_assert (strlen (p) >= len);
|
||||
gtk_text_buffer_insert (info_buffer, &start, p, len);
|
||||
in_para = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
|
||||
in_para = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
/* Skipping blank lines */
|
||||
while (isspace (*p))
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
p = buffer->str;
|
||||
state++;
|
||||
/* Fall through */
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
||||
case 3:
|
||||
/* Reading program body */
|
||||
gtk_text_buffer_insert (source_buffer, &start, p, -1);
|
||||
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gtk_text_buffer_get_bounds (source_buffer, &start, &end);
|
||||
gtk_text_buffer_apply_tag_by_name (info_buffer, "source", &start, &end);
|
||||
}
|
||||
|
||||
gboolean
|
||||
button_press_event_cb (GtkTreeView *tree_view,
|
||||
GdkEventButton *event,
|
||||
GtkTreeModel *model)
|
||||
{
|
||||
if (event->type == GDK_2BUTTON_PRESS)
|
||||
{
|
||||
GtkTreePath *path = NULL;
|
||||
|
||||
gtk_tree_view_get_path_at_pos (tree_view,
|
||||
event->window,
|
||||
event->x,
|
||||
event->y,
|
||||
&path,
|
||||
NULL);
|
||||
|
||||
if (path)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
gboolean italic;
|
||||
GVoidFunc func;
|
||||
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
gtk_tree_store_get (GTK_TREE_STORE (model),
|
||||
&iter,
|
||||
FUNC_COLUMN, &func,
|
||||
ITALIC_COLUMN, &italic,
|
||||
-1);
|
||||
(func) ();
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&iter,
|
||||
ITALIC_COLUMN, !italic,
|
||||
-1);
|
||||
gtk_tree_path_free (path);
|
||||
}
|
||||
|
||||
gtk_signal_emit_stop_by_name (GTK_OBJECT (tree_view),
|
||||
"button_press_event");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
selection_cb (GtkTreeSelection *selection,
|
||||
GtkTreeModel *model)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GValue value = {0, };
|
||||
|
||||
if (! gtk_tree_selection_get_selected (selection, NULL, &iter))
|
||||
return;
|
||||
|
||||
gtk_tree_model_get_value (model, &iter,
|
||||
FILENAME_COLUMN,
|
||||
&value);
|
||||
load_file (g_value_get_string (&value));
|
||||
g_value_unset (&value);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
create_text (GtkTextBuffer **buffer,
|
||||
gboolean is_source)
|
||||
{
|
||||
GtkWidget *scrolled_window;
|
||||
GtkWidget *text_view;
|
||||
PangoFontDescription *font_desc;
|
||||
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
text_view = gtk_text_view_new ();
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
|
||||
|
||||
*buffer = gtk_text_buffer_new (NULL);
|
||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), *buffer);
|
||||
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
|
||||
if (is_source)
|
||||
{
|
||||
font_desc = pango_font_description_from_string ("Courier 10");
|
||||
gtk_widget_modify_font (text_view, font_desc);
|
||||
pango_font_description_free (font_desc);
|
||||
}
|
||||
|
||||
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), !is_source);
|
||||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
/* Technically a list, but if we do go to 80 demos, we may want to move to a tree */
|
||||
static GtkWidget *
|
||||
create_tree (void)
|
||||
{
|
||||
GtkTreeSelection *selection;
|
||||
GtkCellRenderer *cell;
|
||||
GtkWidget *tree_view;
|
||||
GtkTreeViewColumn *column;
|
||||
GtkTreeStore *model;
|
||||
GtkTreeIter iter;
|
||||
gint i;
|
||||
|
||||
model = gtk_tree_store_new_with_types (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN);
|
||||
tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||
|
||||
gtk_tree_selection_set_type (GTK_TREE_SELECTION (selection),
|
||||
GTK_TREE_SELECTION_SINGLE);
|
||||
gtk_widget_set_usize (tree_view, 200, -1);
|
||||
|
||||
for (i=0; i < G_N_ELEMENTS (testgtk_demos); i++)
|
||||
{
|
||||
gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
|
||||
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&iter,
|
||||
TITLE_COLUMN, testgtk_demos[i].title,
|
||||
FILENAME_COLUMN, testgtk_demos[i].filename,
|
||||
FUNC_COLUMN, testgtk_demos[i].func,
|
||||
ITALIC_COLUMN, FALSE,
|
||||
-1);
|
||||
}
|
||||
|
||||
cell = gtk_cell_renderer_text_new ();
|
||||
column = gtk_tree_view_column_new_with_attributes ("Widget",
|
||||
cell,
|
||||
"text", TITLE_COLUMN,
|
||||
"italic", ITALIC_COLUMN,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
|
||||
GTK_TREE_VIEW_COLUMN (column));
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (selection), "selection_changed", selection_cb, model);
|
||||
gtk_signal_connect (GTK_OBJECT (tree_view), "button_press_event", GTK_SIGNAL_FUNC (button_press_event_cb), model);
|
||||
|
||||
return tree_view;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *tree;
|
||||
GtkTextTag *tag;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_signal_connect (GTK_OBJECT (window), "destroy",
|
||||
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
|
||||
tree = create_tree ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), tree, FALSE, FALSE, 0);
|
||||
|
||||
notebook = gtk_notebook_new ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
|
||||
create_text (&info_buffer, FALSE),
|
||||
gtk_label_new ("Info"));
|
||||
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
|
||||
create_text (&source_buffer, TRUE),
|
||||
gtk_label_new ("Source"));
|
||||
|
||||
tag = gtk_text_buffer_create_tag (info_buffer, "title");
|
||||
gtk_object_set (GTK_OBJECT (tag),
|
||||
"font", "Sans 18",
|
||||
NULL);
|
||||
|
||||
tag = gtk_text_buffer_create_tag (info_buffer, "source");
|
||||
gtk_object_set (GTK_OBJECT (tag),
|
||||
"font", "Courier 10",
|
||||
"pixels_above_lines", 0,
|
||||
"pixels_below_lines", 0,
|
||||
NULL);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
load_file (testgtk_demos[0].filename);
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,3 +1,20 @@
|
||||
2002-04-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merged from HEAD:
|
||||
|
||||
* gtk/tmpl/gtksocket.sgml:
|
||||
* gtk/tmpl/gtkdrawingarea.sgml:
|
||||
* gtk/tmpl/gtktreemodel.sgml:
|
||||
* gtk/tmpl/gtkradiomenuitem.sgml:
|
||||
* gtk/tmpl/gtkwidget.sgml:
|
||||
* gtk/tmpl/gtkdialog.sgml:
|
||||
* gdk-pixbuf/tmpl/gdk-pixbuf-loader.sgml:
|
||||
* gtk/text_widget.sgml:
|
||||
* gtk/tree_widget.sgml:
|
||||
* gtk/gtk-sections.txt:
|
||||
* gdk/tmpl/properties.sgml: Documentation fixes. (#79001, #67818,
|
||||
#79080, #78661, #78392, #75588, #72312, #74439)
|
||||
|
||||
Tue Mar 26 15:41:49 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/building.sgml: Add a mention of running ldconfig.
|
||||
|
||||
@@ -10,7 +10,8 @@ Application-driven progressive image loading.
|
||||
process of loading an image, by letting them send the image data
|
||||
directly to the loader instead of having the loader read the data
|
||||
from a file. Applications can use this functionality instead of
|
||||
gdk_pixbuf_new_from_file() when they need to parse image data in
|
||||
gdk_pixbuf_new_from_file() or gdk_pixbuf_animation_new_from_file()
|
||||
when they need to parse image data in
|
||||
small chunks. For example, it should be used when reading an
|
||||
image from a (potentially) slow network connection, or when
|
||||
loading an extremely large file.
|
||||
@@ -47,31 +48,18 @@ Application-driven progressive image loading.
|
||||
<title>Loading an animation</title>
|
||||
|
||||
<para>
|
||||
Loading an animation is a little more complex then loading an
|
||||
image. In addition to the above signals, there is also a "<link
|
||||
linkend="GdkPixbufLoader-frame-done">frame_done</link>" signal,
|
||||
as well as an "<link
|
||||
linkend="GdkPixbufLoader-animation-done">animation_done</link>"
|
||||
signal. The first lets the application know that it is dealing
|
||||
with an animation, instead of a static image. It also passes a
|
||||
#GdkPixbufFrame in the signal. As before, if you want to keep
|
||||
the frame, you need to ref it. Once the first "<link
|
||||
linkend="GdkPixbufLoader-frame-done">frame_done</link>" signal
|
||||
Loading an animation is almost as easy as loading an
|
||||
image. Once the first "<link
|
||||
linkend="GdkPixbufLoader-area-prepared">area_prepared</link>" signal
|
||||
has been emitted, you can call gdk_pixbuf_loader_get_animation()
|
||||
to get the #GdkPixbufAnimation struct. Each subsequent frame
|
||||
goes through a similar lifecycle. For example "<link
|
||||
linkend="GdkPixbufLoader-area-prepared">area_prepared</link>" is
|
||||
re-emitted. Then "<link
|
||||
linkend="GdkPixbufLoader-area-updated">area_updated</link>" is
|
||||
emitted as many times as necessary. Finally, "<link
|
||||
linkend="GdkPixbufLoader-animation-done">animation_done</link>"
|
||||
is emitted as soon as all frames are done.
|
||||
to get the #GdkPixbufAnimation struct and gdk_pixbuf_animation_get_iter()
|
||||
to get an #GdkPixbufAnimationIter for displaying it.
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
gdk_pixbuf_new_from_file()
|
||||
gdk_pixbuf_new_from_file(), gdk_pixbuf_animation_new_from_file()
|
||||
</para>
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixbuf_loader_new ##### -->
|
||||
|
||||
@@ -244,10 +244,10 @@ Changes the contents of a property on a window.
|
||||
@window: a #GdkWindow.
|
||||
@property: the property to change.
|
||||
@type: the new type for the property. If @mode is
|
||||
%GDK_PROP_MODE_REPLACE or %GDK_PROP_MODE_APPEND, then this
|
||||
%GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this
|
||||
must match the existing type or an error will occur.
|
||||
@format: the new format for the property. If @mode is
|
||||
%GDK_PROP_MODE_REPLACE or %GDK_PROP_MODE_APPEND, then this
|
||||
%GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this
|
||||
must match the existing format or an error will occur.
|
||||
@mode: a value describing how the new data is to be combined
|
||||
with the current data.
|
||||
|
||||
@@ -245,6 +245,7 @@ the @window_at_pointer function in #GdkPointerHooks. It will be used
|
||||
when GDK gets multihead support.
|
||||
</para>
|
||||
|
||||
@parent_instance:
|
||||
|
||||
<!-- ##### FUNCTION gdk_window_new ##### -->
|
||||
<para>
|
||||
|
||||
@@ -3447,6 +3447,7 @@ gtk_vseparator_get_type
|
||||
<FILE>gtkwidget</FILE>
|
||||
<TITLE>GtkWidget</TITLE>
|
||||
GtkWidget
|
||||
GtkWidgetClass
|
||||
GtkWidgetFlags
|
||||
GTK_WIDGET_TYPE
|
||||
GTK_WIDGET_STATE
|
||||
|
||||
@@ -162,7 +162,7 @@ font and foreground color &mdash use standard
|
||||
functions such as
|
||||
<link linkend="gtk-widget-modify-font">gtk_widget_modify_font()</link>
|
||||
or
|
||||
<link linkend="gtk-widget-modify-fg">gtk_widget_modify_fg()</link>.
|
||||
<link linkend="gtk-widget-modify-fg">gtk_widget_modify_text()</link>.
|
||||
For other attributes there are dedicated methods on
|
||||
<link linkend="GtkTextView">GtkTextView</link> such as
|
||||
<link linkend="gtk-text-view-set-tabs">gtk_text_view_set_tabs()</link>.
|
||||
@@ -170,6 +170,7 @@ For other attributes there are dedicated methods on
|
||||
<informalexample><programlisting>
|
||||
GtkWidget *view;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter start, end;
|
||||
PangoFontDescription *font_desc;
|
||||
GdkColor color;
|
||||
GtkTextTag *tag;
|
||||
@@ -187,7 +188,7 @@ For other attributes there are dedicated methods on
|
||||
|
||||
/* Change default color throughout the widget */
|
||||
gdk_color_parse ("green", &color);
|
||||
gtk_widget_modify_fg (view, GTK_STATE_NORMAL, &color);
|
||||
gtk_widget_modify_text (view, GTK_STATE_NORMAL, &color);
|
||||
|
||||
/* Change left margin throughout the widget */
|
||||
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 30);
|
||||
|
||||
@@ -157,3 +157,8 @@ box.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButtonBox:secondary ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -382,3 +382,28 @@ how to allocate space for children, equally or variably. Refers to
|
||||
the <structfield>homogeneous</structfield> field of #GtkBox-struct.
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkBox:expand ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkBox:fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkBox:padding ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkBox:pack-type ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkBox:position ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ void quick_message (gchar *message) {
|
||||
dialog = gtk_dialog_new_with_buttons ("Message",
|
||||
main_application_window,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_BUTTON_OK,
|
||||
GTK_STOCK_OK,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
label = gtk_label_new (message);
|
||||
|
||||
@@ -53,7 +53,7 @@ that drawing is implicitly clipped to the exposed area.
|
||||
<title>Simple <structname>GtkDrawingArea</structname> usage.</title>
|
||||
<programlisting>
|
||||
gboolean
|
||||
expose_event_callback (GdkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
gdk_draw_arc (widget->window,
|
||||
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
|
||||
@@ -64,7 +64,7 @@ expose_event_callback (GdkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
return TRUE;
|
||||
}
|
||||
[...]
|
||||
GtkWidget *drawing_area = gtk_drawing_area_new (<!>);
|
||||
GtkWidget *drawing_area = gtk_drawing_area_new (<!-- -->);
|
||||
gtk_widget_set_size_request (drawing_area, 100, 100);
|
||||
g_signal_connect (G_OBJECT (drawing_area), "expose_event",
|
||||
G_CALLBACK (expose_event_callback), NULL);
|
||||
|
||||
@@ -166,3 +166,13 @@ Moves a child of a #GtkFixed container to the given position.
|
||||
@has_window:
|
||||
|
||||
|
||||
<!-- ##### ARG GtkFixed:x ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkFixed:y ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -171,3 +171,13 @@ Layout width, see gtk_layout_set_size()
|
||||
Layout height, see gtk_layout_set_size()
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkLayout:x ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkLayout:y ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -496,3 +496,33 @@ Whether the popup menu for switching pages is enabled.
|
||||
whether the tabs must have all the same size.
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:tab-label ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:menu-label ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:position ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:tab-expand ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:tab-fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkNotebook:tab-pack ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ for(i = 0; i < 5; i++)
|
||||
<listitem><para>because a radio menu item is a menu item.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>#GtkCheckItem</term>
|
||||
<term>#GtkCheckMenuItem</term>
|
||||
<listitem><para>to know how to handle the check.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
@@ -792,11 +792,9 @@ otherwise %NULL.
|
||||
|
||||
<!-- ##### FUNCTION gtk_rc_get_module_dir ##### -->
|
||||
<para>
|
||||
Returns the directory in which GTK+ will look for
|
||||
theme engines.
|
||||
</para>
|
||||
|
||||
@Returns: The directory. (Must be freed with g_free())
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_rc_get_im_module_path ##### -->
|
||||
|
||||
@@ -25,7 +25,7 @@ have been added to its parent.
|
||||
<example>
|
||||
<title>Obtaining the window ID of a socket.</title>
|
||||
<programlisting>
|
||||
GtkWidget *socket = gtk_socket_new (<!>);
|
||||
GtkWidget *socket = gtk_socket_new (<!-- -->);
|
||||
gtk_widget_show (socket);
|
||||
gtk_container_add (GTK_CONTAINER (parent), socket);
|
||||
|
||||
@@ -62,6 +62,13 @@ to be destroyed at any time when the main event loop
|
||||
is running.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The communication between a #GtkSocket and a #GtkPlug follows the
|
||||
<ulink url="http://www.freedesktop.org/standards/xembed.html">XEmbed</ulink>
|
||||
protocol. This protocol has also been implemented in other toolkits, e.g.
|
||||
<application>Qt</application>, allowing the same level of integration
|
||||
when embedding a <application>Qt</application> widget in GTK or vice versa.</para>
|
||||
|
||||
<para>
|
||||
A socket can also be used to swallow arbitrary
|
||||
pre-existing top-level windows using gtk_socket_steal(),
|
||||
@@ -77,6 +84,11 @@ as between a #GtkPlug and a #GtkSocket.</para>
|
||||
<listitem><para>the widget that plugs into a #GtkSocket.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><ulink url="http://www.freedesktop.org/standards/xembed.html">XEmbed</ulink></term>
|
||||
<listitem><para>the XEmbed Protocol Specification.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
|
||||
@@ -276,3 +276,43 @@ Sets or retrieves the number of pixels of space between rows.
|
||||
Whether each cell in the table should be the same size or not.
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:left-attach ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:right-attach ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:top-attach ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:bottom-attach ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:x-options ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:y-options ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:x-padding ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTable:y-padding ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ enum
|
||||
gchar *str_data;
|
||||
gint int_data;
|
||||
|
||||
/* Make sure you terminate calls to gtk_tree_model_get(<!>)
|
||||
/* Make sure you terminate calls to gtk_tree_model_get(<!-- -->)
|
||||
* with a '-1' value
|
||||
*/
|
||||
gtk_tree_model_get (list_store, &iter,
|
||||
@@ -190,7 +190,7 @@ enum
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
#GtkTreeView, #GtkTreeStore, #GtkListStore, #GtkTreeDnd, #GtkTreeSortable
|
||||
#GtkTreeView, #GtkTreeStore, #GtkListStore, <link linkend="gtk-GtkTreeView-drag-and-drop">GtkTreeDnd</link>, #GtkTreeSortable
|
||||
</para>
|
||||
|
||||
<!-- ##### STRUCT GtkTreeModel ##### -->
|
||||
|
||||
@@ -20,14 +20,20 @@ GtkWidget
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkWidgetClass ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### ENUM GtkWidgetFlags ##### -->
|
||||
<para>
|
||||
Tells about certain properties of the widget.
|
||||
</para>
|
||||
|
||||
@GTK_TOPLEVEL:
|
||||
widgets without a real parent, as there are #GtkWindow<!>s and
|
||||
#GtkMenu<!>s have this flag set throughout their lifetime.
|
||||
widgets without a real parent, as there are #GtkWindow<!-- -->s and
|
||||
#GtkMenu<!-- -->s have this flag set throughout their lifetime.
|
||||
Toplevel widgets always contain their own #GdkWindow.
|
||||
@GTK_NO_WINDOW:
|
||||
Indicative for a widget that does not provide its own #GdkWindow.
|
||||
@@ -929,7 +935,12 @@ Equivalent to <literal>gtk_widget_set_style (widget, NULL)</literal>.
|
||||
|
||||
<!-- ##### FUNCTION gtk_widget_reset_rc_styles ##### -->
|
||||
<para>
|
||||
Calls gtk_widget_set_rc_style() recursively on all descendants.
|
||||
Reset the styles of @widget and all descendents, so when
|
||||
they are looked up again, they get the correct values
|
||||
for the currently loaded RC file settings.
|
||||
</para>
|
||||
<para>
|
||||
This function is not useful for applications.
|
||||
</para>
|
||||
|
||||
@widget: a #GtkWidget.
|
||||
|
||||
@@ -287,7 +287,7 @@ setup_tree (void)
|
||||
populate_tree_model (store);
|
||||
|
||||
/* Create a view */
|
||||
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
|
||||
/* The view now holds a reference. We can get rid of our own
|
||||
* reference */
|
||||
|
||||
@@ -1,3 +1,46 @@
|
||||
2002-05-22 Federico Mena Quintero <federico@ximian.com>
|
||||
|
||||
* io-xpm.c (pixbuf_create_from_xpm): Ahem, take the rowstride into
|
||||
account!!! Fixes #82515.
|
||||
|
||||
[This bug is not present in the GNOME 1.4 branch as its XPM loader
|
||||
does not use gdk_pixbuf_new(); rather it malloc()s a buffer with
|
||||
no row padding and then uses gdk_pixbuf_new_from_data() on it.]
|
||||
|
||||
[IMPORTANT: The comment above is to make my life easier when
|
||||
merging stuff across branches. If you make changes to gdk-pixbuf
|
||||
in either branch, please include a comment in the ChangeLog that
|
||||
indicates whether this should be merged into the other branch.
|
||||
Thanks!]
|
||||
|
||||
2002-05-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk-pixbuf-io.c (get_libdir): Use GTK_BINARY_VERSION (and not
|
||||
GTK_VERSION) in the path to the loaders on Win32, too.
|
||||
|
||||
* Makefile.am: Pass GTK_BINARY_VERSION.
|
||||
|
||||
2002-05-18 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* io-tiff.c (tiff_image_parse): fix packing order on bigendian
|
||||
systems. (#81702)
|
||||
|
||||
Thu May 16 15:17:30 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixops/pixops.c: Patch from Matthias Clasen to fix some typos
|
||||
(#77246)
|
||||
|
||||
Thu May 16 15:02:46 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk-pixdata.c (gdk_pixdata_to_csource): Fix 64-bit warning.
|
||||
(#78258)
|
||||
|
||||
2002-05-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* gdk-pixbuf/Makefile.am: build the static pixbuf loaders
|
||||
conditionally like the dynamic ones so --without-lib<foo> is
|
||||
honored when building with --disable-modules. (#66867)
|
||||
|
||||
2002-04-11 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
More fixes for #77807:
|
||||
|
||||
+27
-14
@@ -17,7 +17,7 @@ gdk_pixbuf-win32res.lo : gdk_pixbuf.rc
|
||||
install-libtool-import-lib:
|
||||
$(INSTALL) .libs/libgdk_pixbuf-$(GTK_API_VERSION).dll.a $(DESTDIR)$(libdir)
|
||||
uninstall-libtool-import-lib:
|
||||
-rm $(DESTDIR)$(libdir)/libdk_pixbuf-$(GTK_API_VERSION).dll.a
|
||||
-rm $(DESTDIR)$(libdir)/libgdk_pixbuf-$(GTK_API_VERSION).dll.a
|
||||
else
|
||||
install-libtool-import-lib:
|
||||
uninstall-libtool-import-lib:
|
||||
@@ -144,33 +144,45 @@ libpixbufloader_tga_la_LIBADD = $(module_libs)
|
||||
|
||||
if HAVE_PNG
|
||||
PNG_LIB = libpixbufloader-png.la
|
||||
STATIC_PNG_LIB = libpixbufloader-static-png.la
|
||||
endif
|
||||
|
||||
if HAVE_JPEG
|
||||
JPEG_LIB = libpixbufloader-jpeg.la
|
||||
STATIC_JPEG_LIB = libpixbufloader-static-jpeg.la
|
||||
endif
|
||||
|
||||
GIF_LIB = libpixbufloader-gif.la
|
||||
STATIC_GIF_LIB = libpixbufloader-static-gif.la
|
||||
|
||||
ICO_LIB = libpixbufloader-ico.la
|
||||
STATIC_ICO_LIB = libpixbufloader-static-ico.la
|
||||
|
||||
RAS_LIB = libpixbufloader-ras.la
|
||||
STATIC_RAS_LIB = libpixbufloader-static-ras.la
|
||||
|
||||
if HAVE_TIFF
|
||||
TIFF_LIB = libpixbufloader-tiff.la
|
||||
STATIC_TIFF_LIB = libpixbufloader-static-tiff.la
|
||||
endif
|
||||
|
||||
XPM_LIB = libpixbufloader-xpm.la
|
||||
STATIC_XPM_LIB = libpixbufloader-static-xpm.la
|
||||
|
||||
PNM_LIB = libpixbufloader-pnm.la
|
||||
STATIC_PNM_LIB = libpixbufloader-static-pnm.la
|
||||
|
||||
BMP_LIB = libpixbufloader-bmp.la
|
||||
STATIC_BMP_LIB = libpixbufloader-static-bmp.la
|
||||
|
||||
WBMP_LIB = libpixbufloader-wbmp.la
|
||||
STATIC_WBMP_LIB = libpixbufloader-static-wbmp.la
|
||||
|
||||
XBM_LIB = libpixbufloader-xbm.la
|
||||
STATIC_XBM_LIB = libpixbufloader-static-xbm.la
|
||||
|
||||
TGA_LIB = libpixbufloader-tga.la
|
||||
STATIC_TGA_LIB = libpixbufloader-static-tga.la
|
||||
|
||||
if BUILD_DYNAMIC_MODULES
|
||||
|
||||
@@ -194,19 +206,19 @@ builtin_objs =
|
||||
else
|
||||
loader_LTLIBRARIES =
|
||||
|
||||
noinst_LTLIBRARIES = \
|
||||
libpixbufloader-static-png.la \
|
||||
libpixbufloader-static-jpeg.la \
|
||||
libpixbufloader-static-gif.la \
|
||||
libpixbufloader-static-ico.la \
|
||||
libpixbufloader-static-ras.la \
|
||||
libpixbufloader-static-tiff.la \
|
||||
libpixbufloader-static-xpm.la \
|
||||
libpixbufloader-static-pnm.la \
|
||||
libpixbufloader-static-bmp.la \
|
||||
libpixbufloader-static-wbmp.la \
|
||||
libpixbufloader-static-xbm.la \
|
||||
libpixbufloader-static-tga.la
|
||||
noinst_LTLIBRARIES = \
|
||||
$(STATIC_PNG_LIB) \
|
||||
$(STATIC_JPEG_LIB) \
|
||||
$(STATIC_GIF_LIB) \
|
||||
$(STATIC_ICO_LIB) \
|
||||
$(STATIC_RAS_LIB) \
|
||||
$(STATIC_XPM_LIB) \
|
||||
$(STATIC_TIFF_LIB) \
|
||||
$(STATIC_PNM_LIB) \
|
||||
$(STATIC_BMP_LIB) \
|
||||
$(STATIC_WBMP_LIB) \
|
||||
$(STATIC_XBM_LIB) \
|
||||
$(STATIC_TGA_LIB)
|
||||
|
||||
builtin_objs = @INCLUDED_LOADER_OBJ@
|
||||
|
||||
@@ -219,6 +231,7 @@ INCLUDES = @STRIP_BEGIN@ \
|
||||
-I$(top_srcdir)/gdk-pixbuf \
|
||||
-I$(top_builddir)/gdk-pixbuf \
|
||||
-DGTK_VERSION=\"@GTK_VERSION@\" \
|
||||
-DGTK_BINARY_VERSION=\"@GTK_BINARY_VERSION@\" \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
-DGDK_PIXBUF_DISABLE_DEPRECATED \
|
||||
@INCLUDED_LOADER_DEFINE@ \
|
||||
|
||||
@@ -269,7 +269,7 @@ get_libdir (void)
|
||||
|
||||
if (libdir == NULL)
|
||||
libdir = g_win32_get_package_installation_subdirectory
|
||||
(GETTEXT_PACKAGE, dll_name, "lib\\gtk-2.0\\" GTK_VERSION "\\loaders");
|
||||
(GETTEXT_PACKAGE, dll_name, "lib\\gtk-2.0\\" GTK_BINARY_VERSION "\\loaders");
|
||||
|
||||
return libdir;
|
||||
}
|
||||
|
||||
@@ -707,9 +707,9 @@ gdk_pixdata_to_csource (GdkPixdata *pixdata,
|
||||
cdata.static_prefix, cdata.const_prefix, name);
|
||||
APPEND (gstring, " 0x%x, /* Pixbuf magic: 'GdkP' */\n",
|
||||
GDK_PIXBUF_MAGIC_NUMBER);
|
||||
APPEND (gstring, " %u + %u, /* header length + pixel_data length */\n",
|
||||
APPEND (gstring, " %u + %lu, /* header length + pixel_data length */\n",
|
||||
GDK_PIXDATA_HEADER_LENGTH,
|
||||
rle_encoded ? img_buffer_end - img_buffer : rowstride * height);
|
||||
rle_encoded ? (glong)(img_buffer_end - img_buffer) : (glong)rowstride * height);
|
||||
APPEND (gstring, " 0x%x, /* pixdata_type */\n",
|
||||
pixdata->pixdata_type);
|
||||
APPEND (gstring, " %u, /* rowstride */\n",
|
||||
|
||||
@@ -268,6 +268,21 @@ tiff_image_parse (TIFF *tiff, TiffContext *context, GError **error)
|
||||
TIFFRGBAImageGet (&img, (uint32 *)pixels, width, height);
|
||||
TIFFRGBAImageEnd (&img);
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
/* Turns out that the packing used by TIFFRGBAImage depends on the host byte order... */
|
||||
while (pixels < pixbuf->pixels + bytes) {
|
||||
uint32 pixel = *(uint32 *)pixels;
|
||||
int r = TIFFGetR(pixel);
|
||||
int g = TIFFGetG(pixel);
|
||||
int b = TIFFGetB(pixel);
|
||||
int a = TIFFGetA(pixel);
|
||||
*pixels++ = r;
|
||||
*pixels++ = g;
|
||||
*pixels++ = b;
|
||||
*pixels++ = a;
|
||||
}
|
||||
#endif
|
||||
|
||||
G_UNLOCK (tiff_loader);
|
||||
if (context)
|
||||
(* context->update_func) (pixbuf, 0, 0, width, height, context->user_data);
|
||||
|
||||
+3
-3
@@ -1209,7 +1209,7 @@ pixbuf_create_from_xpm (const gchar * (*get_buf) (enum buf_op op, gpointer handl
|
||||
GError **error)
|
||||
{
|
||||
gint w, h, n_col, cpp;
|
||||
gint cnt, xcnt, ycnt, wbytes, n, ns;
|
||||
gint cnt, xcnt, ycnt, wbytes, n;
|
||||
gint is_trans = FALSE;
|
||||
const gchar *buffer;
|
||||
gchar *name_buf;
|
||||
@@ -1322,9 +1322,10 @@ pixbuf_create_from_xpm (const gchar * (*get_buf) (enum buf_op op, gpointer handl
|
||||
}
|
||||
|
||||
wbytes = w * cpp;
|
||||
pixtmp = pixbuf->pixels;
|
||||
|
||||
for (ycnt = 0; ycnt < h; ycnt++) {
|
||||
pixtmp = pixbuf->pixels + ycnt * pixbuf->rowstride;
|
||||
|
||||
buffer = (*get_buf) (op_body, handle);
|
||||
if ((!buffer) || (strlen (buffer) < wbytes))
|
||||
continue;
|
||||
@@ -1332,7 +1333,6 @@ pixbuf_create_from_xpm (const gchar * (*get_buf) (enum buf_op op, gpointer handl
|
||||
for (n = 0, cnt = 0, xcnt = 0; n < wbytes; n += cpp, xcnt++) {
|
||||
strncpy (pixel_str, &buffer[n], cpp);
|
||||
pixel_str[cpp] = 0;
|
||||
ns = 0;
|
||||
|
||||
color = g_hash_table_lookup (color_hash, pixel_str);
|
||||
|
||||
|
||||
@@ -493,13 +493,13 @@ composite_line_22_4a4 (int *weights, int n_x, int n_y,
|
||||
b += ta * q0[6];
|
||||
a += ta;
|
||||
|
||||
ta = w3 * q0[3];
|
||||
r += ta * q0[0];
|
||||
g += ta * q0[1];
|
||||
b += ta * q0[2];
|
||||
ta = w3 * q1[3];
|
||||
r += ta * q1[0];
|
||||
g += ta * q1[1];
|
||||
b += ta * q1[2];
|
||||
a += ta;
|
||||
|
||||
ta += w4 * q1[7];
|
||||
ta = w4 * q1[7];
|
||||
r += ta * q1[4];
|
||||
g += ta * q1[5];
|
||||
b += ta * q1[6];
|
||||
@@ -881,16 +881,15 @@ scale_line_22_33 (int *weights, int n_x, int n_y,
|
||||
g += w3 * q1[1];
|
||||
b += w3 * q1[2];
|
||||
|
||||
r += w4 * q1[4];
|
||||
g += w4 * q1[5];
|
||||
b += w4 * q1[6];
|
||||
r += w4 * q1[3];
|
||||
g += w4 * q1[4];
|
||||
b += w4 * q1[5];
|
||||
|
||||
dest[0] = (r + 0x8000) >> 16;
|
||||
dest[1] = (g + 0x8000) >> 16;
|
||||
dest[2] = (b + 0x8000) >> 16;
|
||||
|
||||
dest += 3;
|
||||
|
||||
x += x_step;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,3 +11,4 @@ gdkenumtypes.[ch]
|
||||
libgdk.la
|
||||
gdkconfig.h
|
||||
stamp-gc-h
|
||||
stamp-gdkenumtypes.h
|
||||
|
||||
+27
-9
@@ -42,7 +42,7 @@ gdk_win32_symbols = -export-symbols gdk.def
|
||||
install-libtool-import-lib:
|
||||
$(INSTALL) .libs/libgdk-win32-$(GTK_API_VERSION).dll.a $(DESTDIR)$(libdir)
|
||||
uninstall-libtool-import-lib:
|
||||
-rm $(DESTDIR)$(libdir)/libdk-win32-$(GTK_API_VERSION).dll.a
|
||||
-rm $(DESTDIR)$(libdir)/libgdk-win32-$(GTK_API_VERSION).dll.a
|
||||
else
|
||||
install-libtool-import-lib:
|
||||
uninstall-libtool-import-lib:
|
||||
@@ -164,7 +164,7 @@ lib_LTLIBRARIES = $(gdktargetlib)
|
||||
|
||||
EXTRA_LTLIBRARIES = libgdk-x11-2.0.la libgdk-linux-fb-2.0.la libgdk-win32-2.0.la
|
||||
|
||||
MAINTAINERCLEANFILES =
|
||||
MAINTAINERCLEANFILES = gdkenumtypes.h stamp-gdkenumtypes.h
|
||||
EXTRA_HEADERS =
|
||||
|
||||
#
|
||||
@@ -185,15 +185,33 @@ if DISABLE_EXPLICIT_DEPS
|
||||
endif
|
||||
|
||||
#note: not gdkconfig.h
|
||||
BUILT_SOURCES = stamp-gc-h @REBUILD@ gdkenumtypes.c gdkenumtypes.h
|
||||
BUILT_SOURCES = stamp-gc-h @REBUILD@ gdkenumtypes.h
|
||||
|
||||
gdkenumtypes.h: @REBUILD@ $(gdk_public_h_sources) $(srcdir)/makeenums.pl
|
||||
cd $(srcdir) \
|
||||
&& $(PERL) ./makeenums.pl include $(gdk_public_h_sources) > gdkenumtypes.h
|
||||
# Generate built header without using automake-1.4 BUILT_SOURCES
|
||||
$(libgdk_x11_2_0_la_OBJECTS) $(libgdk_linux_fb_2_0_la_OBJECTS) $(libgdk_win32_2_0_la_OBJECTS): gdkenumtypes.h
|
||||
|
||||
gdkenumtypes.c: @REBUILD@ $(gdk_public_h_sources) $(srcdir)/makeenums.pl
|
||||
cd $(srcdir) \
|
||||
&& $(PERL) ./makeenums.pl cfile $(gdk_public_h_sources) > gdkenumtypes.c
|
||||
$(srcdir)/gdkenumtypes.h: stamp-gdkenumtypes.h
|
||||
@true
|
||||
stamp-gdkenumtypes.h: @REBUILD@ $(gdk_public_h_sources) Makefile
|
||||
( cd $(srcdir) && glib-mkenums \
|
||||
--fhead "#ifndef __GDK_ENUM_TYPES_H__\n#define __GDK_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
|
||||
--fprod "/* enumerations from \"@filename@\" */\n" \
|
||||
--vhead "GType @enum_name@_get_type (void);\n#define GDK_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
|
||||
--ftail "G_END_DECLS\n\n#endif /* __GDK_ENUM_TYPES_H__ */" \
|
||||
$(gdk_public_h_sources) ) >> xgen-geth \
|
||||
&& (cmp -s xgen-geth $(srcdir)/gdkenumtypes.h || cp xgen-geth $(srcdir)/gdkenumtypes.h ) \
|
||||
&& rm -f xgen-geth \
|
||||
&& echo timestamp > $(@F)
|
||||
$(srcdir)/gdkenumtypes.c: @REBUILD@ $(gdk_public_h_sources) Makefile
|
||||
( cd $(srcdir) && glib-mkenums \
|
||||
--fhead "#define GDK_ENABLE_BROKEN\n#include \"gdk.h\"" \
|
||||
--fprod "\n/* enumerations from \"@filename@\" */" \
|
||||
--vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \
|
||||
--vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
|
||||
--vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \
|
||||
$(gdk_public_h_sources) ) > xgen-getc \
|
||||
&& cp xgen-getc $(srcdir)/gdkenumtypes.c \
|
||||
&& rm -f xgen-getc
|
||||
|
||||
gdkconfig.h: stamp-gc-h
|
||||
@if test -f gdkconfig.h; then :; \
|
||||
|
||||
+1
-1
@@ -275,7 +275,7 @@ gdk_draw_layout_line_with_colors (GdkDrawable *drawable,
|
||||
tmp.green = foreground->green;
|
||||
}
|
||||
|
||||
fg_gc = gdk_pango_get_gc (drawable, context, fg_set ? &tmp : NULL,
|
||||
fg_gc = gdk_pango_get_gc (drawable, context, (fg_set || foreground) ? &tmp : NULL,
|
||||
stipple, gc);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -335,6 +335,8 @@ gdk_window_cache_filter (GdkXEvent *xev,
|
||||
node->prev = above_node->prev;
|
||||
if (node->prev)
|
||||
node->prev->next = node;
|
||||
else
|
||||
cache->children = node;
|
||||
node->next = above_node;
|
||||
above_node->prev = node;
|
||||
}
|
||||
|
||||
+18
-9
@@ -1311,13 +1311,17 @@ gdk_event_translate (GdkEvent *event,
|
||||
? " (discarding)"
|
||||
: GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD
|
||||
? " (discarding child)"
|
||||
: xevent->xconfigure.event != xevent->xconfigure.window
|
||||
? " (discarding substructure)"
|
||||
: ""));
|
||||
if (window &&
|
||||
xevent->xconfigure.event == xevent->xconfigure.window &&
|
||||
!GDK_WINDOW_DESTROYED (window) &&
|
||||
(window_private->extension_events != 0))
|
||||
_gdk_input_configure_event (&xevent->xconfigure, window);
|
||||
|
||||
if (!window ||
|
||||
xevent->xconfigure.event != xevent->xconfigure.window ||
|
||||
GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD ||
|
||||
GDK_WINDOW_TYPE (window) == GDK_WINDOW_ROOT)
|
||||
return_val = FALSE;
|
||||
@@ -1387,12 +1391,6 @@ gdk_event_translate (GdkEvent *event,
|
||||
break;
|
||||
}
|
||||
|
||||
event->property.type = GDK_PROPERTY_NOTIFY;
|
||||
event->property.window = window;
|
||||
event->property.atom = gdk_x11_xatom_to_atom (xevent->xproperty.atom);
|
||||
event->property.time = xevent->xproperty.time;
|
||||
event->property.state = xevent->xproperty.state;
|
||||
|
||||
if (wm_state_atom == 0)
|
||||
wm_state_atom = gdk_x11_get_xatom_by_name ("_NET_WM_STATE");
|
||||
|
||||
@@ -1403,9 +1401,20 @@ gdk_event_translate (GdkEvent *event,
|
||||
xevent->xproperty.atom == wm_desktop_atom)
|
||||
{
|
||||
/* If window state changed, then synthesize those events. */
|
||||
gdk_check_wm_state_changed (event->property.window);
|
||||
gdk_check_wm_state_changed (window);
|
||||
}
|
||||
|
||||
|
||||
if (window_private->event_mask & GDK_PROPERTY_CHANGE_MASK)
|
||||
{
|
||||
event->property.type = GDK_PROPERTY_NOTIFY;
|
||||
event->property.window = window;
|
||||
event->property.atom = gdk_x11_xatom_to_atom (xevent->xproperty.atom);
|
||||
event->property.time = xevent->xproperty.time;
|
||||
event->property.state = xevent->xproperty.state;
|
||||
}
|
||||
else
|
||||
return_val = FALSE;
|
||||
|
||||
break;
|
||||
|
||||
case SelectionClear:
|
||||
@@ -2076,7 +2085,7 @@ gdk_xsettings_notify_cb (const char *name,
|
||||
for (i = 0; i < G_N_ELEMENTS (settings_map) ; i++)
|
||||
if (strcmp (settings_map[i].xsettings_name, name) == 0)
|
||||
{
|
||||
new_event.setting.name = g_strdup (settings_map[i].gdk_name);
|
||||
new_event.setting.name = settings_map[i].gdk_name;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,13 @@ update_keyrange (void)
|
||||
#ifdef HAVE_XKB
|
||||
#include <X11/XKBlib.h>
|
||||
|
||||
/* OSF-4.0 is apparently missing this macro
|
||||
*/
|
||||
#ifndef XkbKeySymEntry
|
||||
#define XkbKeySymEntry(d,k,sl,g) \
|
||||
(XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
|
||||
#endif
|
||||
|
||||
gboolean _gdk_use_xkb = FALSE;
|
||||
gint _gdk_xkb_event_type;
|
||||
static XkbDescPtr xkb_desc = NULL;
|
||||
|
||||
@@ -112,6 +112,78 @@ GdkArgDesc _gdk_windowing_args[] = {
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
* XLib internal connection handling
|
||||
*/
|
||||
typedef struct _GdkInternalConnection GdkInternalConnection;
|
||||
|
||||
struct _GdkInternalConnection
|
||||
{
|
||||
gint fd;
|
||||
GSource *source;
|
||||
Display *display;
|
||||
};
|
||||
|
||||
static gboolean
|
||||
process_internal_connection (GIOChannel *gioc,
|
||||
GIOCondition cond,
|
||||
gpointer data)
|
||||
{
|
||||
GdkInternalConnection *connection = (GdkInternalConnection *)data;
|
||||
|
||||
GDK_THREADS_ENTER ();
|
||||
|
||||
XProcessInternalConnection ((Display*)connection->display, connection->fd);
|
||||
|
||||
GDK_THREADS_LEAVE ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GdkInternalConnection *
|
||||
gdk_add_connection_handler (Display *display,
|
||||
guint fd)
|
||||
{
|
||||
GIOChannel *io_channel;
|
||||
GdkInternalConnection *connection;
|
||||
|
||||
connection = g_new (GdkInternalConnection, 1);
|
||||
|
||||
connection->fd = fd;
|
||||
connection->display = display;
|
||||
|
||||
io_channel = g_io_channel_unix_new (fd);
|
||||
|
||||
connection->source = g_io_create_watch (io_channel, G_IO_IN);
|
||||
g_source_set_callback (connection->source,
|
||||
(GSourceFunc)process_internal_connection, connection, NULL);
|
||||
g_source_attach (connection->source, NULL);
|
||||
|
||||
g_io_channel_unref (io_channel);
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_remove_connection_handler (GdkInternalConnection *connection)
|
||||
{
|
||||
g_source_destroy (connection->source);
|
||||
g_free (connection);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_internal_connection_watch (Display *display,
|
||||
XPointer arg,
|
||||
gint fd,
|
||||
gboolean opening,
|
||||
XPointer *watch_data)
|
||||
{
|
||||
if (opening)
|
||||
*watch_data = (XPointer)gdk_add_connection_handler (display, fd);
|
||||
else
|
||||
gdk_remove_connection_handler ((GdkInternalConnection *)*watch_data);
|
||||
}
|
||||
|
||||
gboolean
|
||||
_gdk_windowing_init_check (int argc, char **argv)
|
||||
{
|
||||
@@ -127,6 +199,8 @@ _gdk_windowing_init_check (int argc, char **argv)
|
||||
gdk_display = XOpenDisplay (_gdk_display_name);
|
||||
if (!gdk_display)
|
||||
return FALSE;
|
||||
|
||||
XAddConnectionWatch (gdk_display, gdk_internal_connection_watch, NULL);
|
||||
|
||||
if (gdk_synchronize)
|
||||
XSynchronize (gdk_display, True);
|
||||
|
||||
@@ -162,14 +162,14 @@ gdk_pixmap_new (GdkWindow *window,
|
||||
GdkColormap *cmap;
|
||||
gint window_depth;
|
||||
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_DRAWABLE (window), NULL);
|
||||
g_return_val_if_fail ((window != NULL) || (depth != -1), NULL);
|
||||
g_return_val_if_fail ((width != 0) && (height != 0), NULL);
|
||||
|
||||
if (!window)
|
||||
window = _gdk_parent_root;
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
if (GDK_IS_WINDOW (window) && GDK_WINDOW_DESTROYED (window))
|
||||
return NULL;
|
||||
|
||||
window_depth = gdk_drawable_get_depth (GDK_DRAWABLE (window));
|
||||
@@ -215,12 +215,12 @@ gdk_bitmap_create_from_data (GdkWindow *window,
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
g_return_val_if_fail ((width != 0) && (height != 0), NULL);
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_DRAWABLE (window), NULL);
|
||||
|
||||
if (!window)
|
||||
window = _gdk_parent_root;
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
if (GDK_IS_WINDOW (window) && GDK_WINDOW_DESTROYED (window))
|
||||
return NULL;
|
||||
|
||||
pixmap = g_object_new (gdk_pixmap_get_type (), NULL);
|
||||
@@ -256,7 +256,7 @@ gdk_pixmap_create_from_data (GdkWindow *window,
|
||||
GdkDrawableImplX11 *draw_impl;
|
||||
GdkPixmapImplX11 *pix_impl;
|
||||
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);
|
||||
g_return_val_if_fail (window == NULL || GDK_IS_DRAWABLE (window), NULL);
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
g_return_val_if_fail (fg != NULL, NULL);
|
||||
g_return_val_if_fail (bg != NULL, NULL);
|
||||
@@ -266,7 +266,7 @@ gdk_pixmap_create_from_data (GdkWindow *window,
|
||||
if (!window)
|
||||
window = _gdk_parent_root;
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
if (GDK_IS_WINDOW (window) && GDK_WINDOW_DESTROYED (window))
|
||||
return NULL;
|
||||
|
||||
if (depth == -1)
|
||||
|
||||
@@ -410,7 +410,7 @@ gdk_window_new (GdkWindow *parent,
|
||||
visual = gdk_visual_get_system ();
|
||||
xvisual = ((GdkVisualPrivate*) visual)->xvisual;
|
||||
|
||||
xattributes.event_mask = StructureNotifyMask;
|
||||
xattributes.event_mask = StructureNotifyMask | PropertyChangeMask;
|
||||
for (i = 0; i < _gdk_nenvent_masks; i++)
|
||||
{
|
||||
if (attributes->event_mask & (1 << (i + 1)))
|
||||
@@ -1251,6 +1251,9 @@ gdk_window_reparent (GdkWindow *window,
|
||||
GDK_WINDOW_XID (new_parent),
|
||||
x, y);
|
||||
|
||||
window_private->x = x;
|
||||
window_private->y = y;
|
||||
|
||||
/* From here on, we treat parents of type GDK_WINDOW_FOREIGN like
|
||||
* the root window
|
||||
*/
|
||||
@@ -2521,7 +2524,7 @@ gdk_window_set_events (GdkWindow *window,
|
||||
if (!GDK_WINDOW_DESTROYED (window))
|
||||
{
|
||||
GDK_WINDOW_OBJECT (window)->event_mask = event_mask;
|
||||
xevent_mask = StructureNotifyMask;
|
||||
xevent_mask = StructureNotifyMask | PropertyChangeMask;
|
||||
for (i = 0; i < _gdk_nenvent_masks; i++)
|
||||
{
|
||||
if (event_mask & (1 << (i + 1)))
|
||||
|
||||
@@ -511,7 +511,8 @@ xsettings_client_process_event (XSettingsClient *client,
|
||||
if (xev->xany.window == RootWindow (client->display, client->screen))
|
||||
{
|
||||
if (xev->xany.type == ClientMessage &&
|
||||
xev->xclient.message_type == client->manager_atom)
|
||||
xev->xclient.message_type == client->manager_atom &&
|
||||
xev->xclient.data.l[1] == client->selection_atom)
|
||||
{
|
||||
check_manager_window (client);
|
||||
return True;
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ lib/libgdk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.
|
||||
lib/libgtk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
EOF
|
||||
|
||||
zip $ZIP lib/gtk-2.0/@GTK_VERSION@/loaders/*.dll lib/gtk-2.0/immodules/@GTK_VERSION@/*.dll
|
||||
zip $ZIP lib/gtk-2.0/@GTK_BINARY_VERSION@/loaders/*.dll lib/gtk-2.0/@GTK_BINARY_VERSION@/immodules/*.dll
|
||||
|
||||
zip $ZIP share/themes/*/gtk-2.0/gtkrc share/themes/*/gtk-2.0-key/gtkrc
|
||||
|
||||
|
||||
+5
-3
@@ -565,14 +565,16 @@ endif
|
||||
# Install a RC file for the default GTK+ theme, and key themes
|
||||
install-data-local: install-ms-lib install-libtool-import-lib
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0
|
||||
$(INSTALL) $(srcdir)/gtkrc.default $(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
|
||||
$(INSTALL_DATA) $(srcdir)/gtkrc.default $(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key
|
||||
$(INSTALL) $(srcdir)/gtkrc.key.default $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
|
||||
$(INSTALL_DATA) $(srcdir)/gtkrc.key.default $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key
|
||||
$(INSTALL) $(srcdir)/gtkrc.key.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
|
||||
$(INSTALL_DATA) $(srcdir)/gtkrc.key.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
|
||||
|
||||
uninstall-local: uninstall-ms-lib uninstall-libtool-import-lib
|
||||
rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
|
||||
rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
|
||||
rm -f $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
|
||||
|
||||
DEPS = $(gtktargetlib) $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la $(top_builddir)/gdk/$(gdktargetlib)
|
||||
|
||||
|
||||
+4
-4
@@ -119,15 +119,15 @@ gtk_accel_group_class_init (GtkAccelGroupClass *class)
|
||||
G_SIGNAL_DETAILED,
|
||||
0,
|
||||
accel_activate_accumulator, NULL,
|
||||
_gtk_marshal_BOOLEAN__OBJECT_UINT_UINT,
|
||||
G_TYPE_BOOLEAN, 3, G_TYPE_OBJECT, G_TYPE_UINT, G_TYPE_UINT);
|
||||
_gtk_marshal_BOOLEAN__OBJECT_UINT_FLAGS,
|
||||
G_TYPE_BOOLEAN, 3, G_TYPE_OBJECT, G_TYPE_UINT, GDK_TYPE_MODIFIER_TYPE);
|
||||
signal_accel_changed = g_signal_new ("accel_changed",
|
||||
G_OBJECT_CLASS_TYPE (class),
|
||||
G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED,
|
||||
G_STRUCT_OFFSET (GtkAccelGroupClass, accel_changed),
|
||||
NULL, NULL,
|
||||
_gtk_marshal_VOID__UINT_UINT_BOXED,
|
||||
G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_CLOSURE);
|
||||
_gtk_marshal_VOID__UINT_FLAGS_BOXED,
|
||||
G_TYPE_NONE, 3, G_TYPE_UINT, GDK_TYPE_MODIFIER_TYPE, G_TYPE_CLOSURE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
+2
-2
@@ -152,8 +152,8 @@ gtk_clipboard_get (GdkAtom selection)
|
||||
static void
|
||||
selection_get_cb (GtkWidget *widget,
|
||||
GtkSelectionData *selection_data,
|
||||
guint time,
|
||||
guint info)
|
||||
guint info,
|
||||
guint time)
|
||||
{
|
||||
GtkClipboard *clipboard = gtk_clipboard_get (selection_data->selection);
|
||||
|
||||
|
||||
+2
-5
@@ -7669,7 +7669,7 @@ gtk_clist_drag_data_received (GtkWidget *widget,
|
||||
gtk_drag_get_source_widget (context) == widget &&
|
||||
selection_data->target ==
|
||||
gdk_atom_intern ("gtk-clist-drag-reorder", FALSE) &&
|
||||
selection_data->format == GTK_TYPE_POINTER &&
|
||||
selection_data->format == 8 &&
|
||||
selection_data->length == sizeof (GtkCListCellInfo))
|
||||
{
|
||||
GtkCListCellInfo *source_info;
|
||||
@@ -7719,12 +7719,9 @@ gtk_clist_drag_data_get (GtkWidget *widget,
|
||||
ret_info.column = info->column;
|
||||
|
||||
gtk_selection_data_set (selection_data, selection_data->target,
|
||||
GTK_TYPE_POINTER, (guchar *) &ret_info,
|
||||
8, (guchar *) &ret_info,
|
||||
sizeof (GtkCListCellInfo));
|
||||
}
|
||||
else
|
||||
gtk_selection_data_set (selection_data, selection_data->target,
|
||||
GTK_TYPE_POINTER, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -378,6 +378,8 @@ gtk_combo_entry_focus_out (GtkEntry * entry, GdkEventFocus * event, GtkCombo * c
|
||||
|
||||
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;
|
||||
@@ -390,7 +392,12 @@ gtk_combo_entry_focus_out (GtkEntry * entry, GdkEventFocus * event, GtkCombo * c
|
||||
so the focus can be lost anyway...
|
||||
the signal_emit_stop doesn't seem to work either...
|
||||
*/
|
||||
gtk_idle_add ((GtkFunction) gtk_combo_focus_idle, combo);
|
||||
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);
|
||||
|
||||
/*gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "focus_out_event"); */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+15
-1
@@ -1389,6 +1389,20 @@ get_focus_chain (GtkContainer *container)
|
||||
return g_object_get_data (G_OBJECT (container), "gtk-container-focus-chain");
|
||||
}
|
||||
|
||||
/* same as gtk_container_get_children, except it includes internals
|
||||
*/
|
||||
static GList *
|
||||
gtk_container_get_all_children (GtkContainer *container)
|
||||
{
|
||||
GList *children = NULL;
|
||||
|
||||
gtk_container_forall (container,
|
||||
gtk_container_children_callback,
|
||||
&children);
|
||||
|
||||
return children;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_container_focus (GtkWidget *widget,
|
||||
GtkDirectionType direction)
|
||||
@@ -1420,7 +1434,7 @@ gtk_container_focus (GtkWidget *widget,
|
||||
if (container->has_focus_chain)
|
||||
children = g_list_copy (get_focus_chain (container));
|
||||
else
|
||||
children = gtk_container_get_children (container);
|
||||
children = gtk_container_get_all_children (container);
|
||||
|
||||
if (container->has_focus_chain &&
|
||||
(direction == GTK_DIR_TAB_FORWARD ||
|
||||
|
||||
+1
-3
@@ -2904,8 +2904,6 @@ cell_size_request (GtkCList *clist,
|
||||
requisition->height = MAX (requisition->height, height);
|
||||
break;
|
||||
default:
|
||||
requisition->width = 0;
|
||||
requisition->height = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -6050,7 +6048,7 @@ gtk_ctree_drag_data_received (GtkWidget *widget,
|
||||
gtk_drag_get_source_widget (context) == widget &&
|
||||
selection_data->target ==
|
||||
gdk_atom_intern ("gtk-clist-drag-reorder", FALSE) &&
|
||||
selection_data->format == GTK_TYPE_POINTER &&
|
||||
selection_data->format == 8 &&
|
||||
selection_data->length == sizeof (GtkCListCellInfo))
|
||||
{
|
||||
GtkCListCellInfo *source_info;
|
||||
|
||||
+11
-2
@@ -102,6 +102,8 @@ struct _GtkDragSourceInfo
|
||||
guint drop_timeout; /* Timeout for aborting drop */
|
||||
guint destroy_icon : 1; /* If true, destroy icon_window
|
||||
*/
|
||||
guint have_grab : 1; /* Do we still have the pointer grab
|
||||
*/
|
||||
};
|
||||
|
||||
struct _GtkDragDestSite
|
||||
@@ -844,9 +846,9 @@ gtk_drag_dest_set (GtkWidget *widget,
|
||||
site->target_list = gtk_target_list_new (targets, n_targets);
|
||||
else
|
||||
site->target_list = NULL;
|
||||
|
||||
site->actions = actions;
|
||||
site->do_proxy = FALSE;
|
||||
site->proxy_window = NULL;
|
||||
|
||||
gtk_drag_dest_set_internal (widget, site);
|
||||
}
|
||||
@@ -1488,6 +1490,9 @@ gtk_drag_dest_site_destroy (gpointer data)
|
||||
{
|
||||
GtkDragDestSite *site = data;
|
||||
|
||||
if (site->proxy_window)
|
||||
g_object_unref (site->proxy_window);
|
||||
|
||||
if (site->target_list)
|
||||
gtk_target_list_unref (site->target_list);
|
||||
|
||||
@@ -1879,6 +1884,8 @@ gtk_drag_begin (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
|
||||
info->have_grab = TRUE;
|
||||
|
||||
return info->context;
|
||||
}
|
||||
|
||||
@@ -2431,7 +2438,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (info->have_grab)
|
||||
{
|
||||
cursor = gtk_drag_get_cursor (event->dnd.context->action);
|
||||
if (info->cursor != cursor)
|
||||
@@ -2989,6 +2996,8 @@ gtk_drag_end (GtkDragSourceInfo *info, guint32 time)
|
||||
GdkEvent send_event;
|
||||
GtkWidget *source_widget = info->widget;
|
||||
|
||||
info->have_grab = FALSE;
|
||||
|
||||
gdk_pointer_ungrab (time);
|
||||
gdk_keyboard_ungrab (time);
|
||||
|
||||
|
||||
+6
-6
@@ -2358,11 +2358,11 @@ update_im_cursor_location (GtkEntry *entry)
|
||||
GdkRectangle area;
|
||||
gint strong_x;
|
||||
gint strong_xoffset;
|
||||
gint x, y, area_width, area_height;
|
||||
gint area_width, area_height;
|
||||
|
||||
gtk_entry_get_cursor_locations (entry, CURSOR_STANDARD, &strong_x, NULL)
|
||||
;
|
||||
get_text_area_size (entry, &x, &y, &area_width, &area_height);
|
||||
get_text_area_size (entry, NULL, NULL, &area_width, &area_height);
|
||||
|
||||
strong_xoffset = strong_x - entry->scroll_offset;
|
||||
if (strong_xoffset < 0)
|
||||
@@ -2373,9 +2373,9 @@ update_im_cursor_location (GtkEntry *entry)
|
||||
{
|
||||
strong_xoffset = area_width;
|
||||
}
|
||||
area.x = x + strong_xoffset;
|
||||
area.y = y + area_height;
|
||||
area.width = area_width;
|
||||
area.x = strong_xoffset;
|
||||
area.y = 0;
|
||||
area.width = 0;
|
||||
area.height = area_height;
|
||||
|
||||
gtk_im_context_set_cursor_location (entry->im_context, &area);
|
||||
@@ -4088,7 +4088,7 @@ gtk_entry_drag_data_get (GtkWidget *widget,
|
||||
|
||||
if (gtk_editable_get_selection_bounds (editable, &sel_start, &sel_end))
|
||||
{
|
||||
gchar *str = gtk_editable_get_chars (editable, sel_start, sel_end);
|
||||
gchar *str = gtk_entry_get_public_chars (GTK_ENTRY (widget), sel_start, sel_end);
|
||||
|
||||
gtk_selection_data_set_text (selection_data, str, -1);
|
||||
|
||||
|
||||
+17
-1
@@ -136,6 +136,9 @@ static void gtk_font_selection_show_available_sizes (GtkFontSelection *fs,
|
||||
gboolean first_time);
|
||||
static void gtk_font_selection_size_activate (GtkWidget *w,
|
||||
gpointer data);
|
||||
static gboolean gtk_font_selection_size_focus_out (GtkWidget *w,
|
||||
GdkEventFocus *event,
|
||||
gpointer data);
|
||||
static void gtk_font_selection_select_size (GtkTreeSelection *selection,
|
||||
gpointer data);
|
||||
|
||||
@@ -317,6 +320,9 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
|
||||
gtk_signal_connect (GTK_OBJECT (fontsel->size_entry), "activate",
|
||||
(GtkSignalFunc) gtk_font_selection_size_activate,
|
||||
fontsel);
|
||||
gtk_signal_connect_after (GTK_OBJECT (fontsel->size_entry), "focus_out_event",
|
||||
(GtkSignalFunc) gtk_font_selection_size_focus_out,
|
||||
fontsel);
|
||||
|
||||
font_label = gtk_label_new_with_mnemonic (_("_Family:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (font_label), 0.0, 0.5);
|
||||
@@ -616,7 +622,7 @@ cmp_families (const void *a, const void *b)
|
||||
const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a);
|
||||
const char *b_name = pango_font_family_get_name (*(PangoFontFamily **)b);
|
||||
|
||||
return strcmp (a_name, b_name);
|
||||
return g_utf8_collate (a_name, b_name);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -941,6 +947,16 @@ gtk_font_selection_size_activate (GtkWidget *w,
|
||||
gtk_font_selection_set_size (fontsel, new_size);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_font_selection_size_focus_out (GtkWidget *w,
|
||||
GdkEventFocus *event,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_font_selection_size_activate (w, data);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This is called when a size is selected in the list. */
|
||||
static void
|
||||
gtk_font_selection_select_size (GtkTreeSelection *selection,
|
||||
|
||||
+16
-14
@@ -1101,10 +1101,9 @@ canonical_hex_keyval (GdkEventKey *event)
|
||||
if (keyval)
|
||||
return keyval;
|
||||
else
|
||||
/* just return the keyval unchanged, we couldn't figure
|
||||
* out a way to make it a hex digit
|
||||
/* No way to make it a hex digit
|
||||
*/
|
||||
return event->keyval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1114,6 +1113,8 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
||||
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
||||
GSList *tmp_list;
|
||||
int n_compose = 0;
|
||||
gboolean have_hex_mods;
|
||||
guint hex_keyval;
|
||||
int i;
|
||||
|
||||
if (event->type == GDK_KEY_RELEASE)
|
||||
@@ -1142,30 +1143,31 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
||||
if (event->keyval == gtk_compose_ignore[i])
|
||||
return FALSE;
|
||||
|
||||
have_hex_mods = (event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK;
|
||||
hex_keyval = canonical_hex_keyval (event);
|
||||
|
||||
while (context_simple->compose_buffer[n_compose] != 0)
|
||||
n_compose++;
|
||||
|
||||
/* First key in sequence; decide if it's a 14755 hex sequence */
|
||||
if (n_compose == 0)
|
||||
context_simple->in_hex_sequence =
|
||||
((event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK);
|
||||
|
||||
/* If we are already in a non-hex sequence, or
|
||||
* the 14755 modifiers are not held down, filter all
|
||||
* this keystroke is not 14755 modifiers + hex digit, don't filter
|
||||
* key events with accelerator modifiers held down.
|
||||
*/
|
||||
if (!context_simple->in_hex_sequence ||
|
||||
((event->state & (ISO_14755_MOD_MASK)) != ISO_14755_MOD_MASK))
|
||||
if ((n_compose > 0 && !context_simple->in_hex_sequence) || !have_hex_mods || !hex_keyval)
|
||||
{
|
||||
if (event->state &
|
||||
(gtk_accelerator_get_default_mod_mask () & ~GDK_SHIFT_MASK))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* First key in sequence; decide if it's a 14755 hex sequence */
|
||||
if (n_compose == 0)
|
||||
context_simple->in_hex_sequence = have_hex_mods;
|
||||
|
||||
/* Then, check for compose sequences
|
||||
*/
|
||||
if (context_simple->in_hex_sequence)
|
||||
context_simple->compose_buffer[n_compose++] = canonical_hex_keyval (event);
|
||||
context_simple->compose_buffer[n_compose++] = hex_keyval ? hex_keyval : event->keyval;
|
||||
else
|
||||
context_simple->compose_buffer[n_compose++] = event->keyval;
|
||||
|
||||
@@ -1174,7 +1176,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
||||
if (context_simple->in_hex_sequence)
|
||||
{
|
||||
/* If the modifiers are still held down, consider the sequence again */
|
||||
if ((event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK)
|
||||
if (have_hex_mods)
|
||||
{
|
||||
/* space ends the sequence, and we eat the space */
|
||||
if (n_compose > 1 &&
|
||||
@@ -1226,7 +1228,7 @@ gtk_im_context_simple_get_preedit_string (GtkIMContext *context,
|
||||
PangoAttrList **attrs,
|
||||
gint *cursor_pos)
|
||||
{
|
||||
char outbuf[25]; /* up to 4 hex digits */
|
||||
char outbuf[37]; /* up to 6 hex digits */
|
||||
int len = 0;
|
||||
|
||||
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
||||
|
||||
@@ -157,6 +157,8 @@ gtk_im_multicontext_set_slave (GtkIMMulticontext *multicontext,
|
||||
GtkIMContext *slave,
|
||||
gboolean finalizing)
|
||||
{
|
||||
gboolean need_preedit_changed = FALSE;
|
||||
|
||||
if (multicontext->slave)
|
||||
{
|
||||
if (!finalizing)
|
||||
@@ -179,7 +181,7 @@ gtk_im_multicontext_set_slave (GtkIMMulticontext *multicontext,
|
||||
multicontext->slave = NULL;
|
||||
|
||||
if (!finalizing)
|
||||
g_signal_emit_by_name (multicontext, "preedit_changed");
|
||||
need_preedit_changed = TRUE;
|
||||
}
|
||||
|
||||
multicontext->slave = slave;
|
||||
@@ -210,6 +212,9 @@ gtk_im_multicontext_set_slave (GtkIMMulticontext *multicontext,
|
||||
if (multicontext->client_window)
|
||||
gtk_im_context_set_client_window (slave, multicontext->client_window);
|
||||
}
|
||||
|
||||
if (need_preedit_changed)
|
||||
g_signal_emit_by_name (multicontext, "preedit_changed");
|
||||
}
|
||||
|
||||
static GtkIMContext *
|
||||
|
||||
+3
-2
@@ -1443,6 +1443,7 @@ gtk_label_ensure_layout (GtkLabel *label)
|
||||
|
||||
pango_layout_set_width (label->layout, width);
|
||||
pango_layout_get_extents (label->layout, NULL, &logical_rect);
|
||||
width = logical_rect.width;
|
||||
height = logical_rect.height;
|
||||
|
||||
/* Unfortunately, the above may leave us with a very unbalanced looking paragraph,
|
||||
@@ -1461,7 +1462,7 @@ gtk_label_ensure_layout (GtkLabel *label)
|
||||
pango_layout_get_extents (label->layout, NULL, &logical_rect);
|
||||
|
||||
if (logical_rect.height <= height)
|
||||
width = perfect_width;
|
||||
width = logical_rect.width;
|
||||
else
|
||||
{
|
||||
gint mid_width = (perfect_width + width) / 2;
|
||||
@@ -1472,7 +1473,7 @@ gtk_label_ensure_layout (GtkLabel *label)
|
||||
pango_layout_get_extents (label->layout, NULL, &logical_rect);
|
||||
|
||||
if (logical_rect.height <= height)
|
||||
width = mid_width;
|
||||
width = logical_rect.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+28
-22
@@ -108,7 +108,8 @@ static void gtk_layout_style_set (GtkWidget *widget,
|
||||
GtkStyle *old_style);
|
||||
|
||||
static void gtk_layout_set_adjustment_upper (GtkAdjustment *adj,
|
||||
gdouble upper);
|
||||
gdouble upper,
|
||||
gboolean always_emit_changed);
|
||||
|
||||
static GtkWidgetClass *parent_class = NULL;
|
||||
|
||||
@@ -222,7 +223,7 @@ gtk_layout_set_adjustments (GtkLayout *layout,
|
||||
layout->hadjustment = hadj;
|
||||
gtk_object_ref (GTK_OBJECT (layout->hadjustment));
|
||||
gtk_object_sink (GTK_OBJECT (layout->hadjustment));
|
||||
gtk_layout_set_adjustment_upper (layout->hadjustment, layout->width);
|
||||
gtk_layout_set_adjustment_upper (layout->hadjustment, layout->width, FALSE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (layout->hadjustment), "value_changed",
|
||||
(GtkSignalFunc) gtk_layout_adjustment_changed,
|
||||
@@ -235,7 +236,7 @@ gtk_layout_set_adjustments (GtkLayout *layout,
|
||||
layout->vadjustment = vadj;
|
||||
gtk_object_ref (GTK_OBJECT (layout->vadjustment));
|
||||
gtk_object_sink (GTK_OBJECT (layout->vadjustment));
|
||||
gtk_layout_set_adjustment_upper (layout->vadjustment, layout->height);
|
||||
gtk_layout_set_adjustment_upper (layout->vadjustment, layout->height, FALSE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (layout->vadjustment), "value_changed",
|
||||
(GtkSignalFunc) gtk_layout_adjustment_changed,
|
||||
@@ -420,25 +421,30 @@ gtk_layout_move (GtkLayout *layout,
|
||||
|
||||
static void
|
||||
gtk_layout_set_adjustment_upper (GtkAdjustment *adj,
|
||||
gdouble upper)
|
||||
gdouble upper,
|
||||
gboolean always_emit_changed)
|
||||
{
|
||||
gboolean changed = FALSE;
|
||||
gboolean value_changed = FALSE;
|
||||
|
||||
gdouble min = MAX (0., upper - adj->page_size);
|
||||
|
||||
if (upper != adj->upper)
|
||||
{
|
||||
gdouble min = MAX (0., upper - adj->page_size);
|
||||
gboolean value_changed = FALSE;
|
||||
|
||||
adj->upper = upper;
|
||||
|
||||
if (adj->value > min)
|
||||
{
|
||||
adj->value = min;
|
||||
value_changed = TRUE;
|
||||
}
|
||||
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
|
||||
if (value_changed)
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adj), "value_changed");
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
if (adj->value > min)
|
||||
{
|
||||
adj->value = min;
|
||||
value_changed = TRUE;
|
||||
}
|
||||
|
||||
if (changed || always_emit_changed)
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
|
||||
if (value_changed)
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adj), "value_changed");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -475,9 +481,9 @@ gtk_layout_set_size (GtkLayout *layout,
|
||||
g_object_thaw_notify (G_OBJECT (layout));
|
||||
|
||||
if (layout->hadjustment)
|
||||
gtk_layout_set_adjustment_upper (layout->hadjustment, layout->width);
|
||||
gtk_layout_set_adjustment_upper (layout->hadjustment, layout->width, FALSE);
|
||||
if (layout->vadjustment)
|
||||
gtk_layout_set_adjustment_upper (layout->vadjustment, layout->height);
|
||||
gtk_layout_set_adjustment_upper (layout->vadjustment, layout->height, FALSE);
|
||||
|
||||
if (GTK_WIDGET_REALIZED (layout))
|
||||
{
|
||||
@@ -1002,14 +1008,14 @@ gtk_layout_size_allocate (GtkWidget *widget,
|
||||
layout->hadjustment->page_size = allocation->width;
|
||||
layout->hadjustment->page_increment = allocation->width * 0.9;
|
||||
layout->hadjustment->lower = 0;
|
||||
layout->hadjustment->upper = MAX (allocation->width, layout->width);
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (layout->hadjustment), "changed");
|
||||
/* set_adjustment_upper() emits ::changed */
|
||||
gtk_layout_set_adjustment_upper (layout->hadjustment, MAX (allocation->width, layout->width), TRUE);
|
||||
|
||||
layout->vadjustment->page_size = allocation->height;
|
||||
layout->vadjustment->page_increment = allocation->height * 0.9;
|
||||
layout->vadjustment->lower = 0;
|
||||
layout->vadjustment->upper = MAX (allocation->height, layout->height);
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (layout->vadjustment), "changed");
|
||||
gtk_layout_set_adjustment_upper (layout->vadjustment, MAX (allocation->height, layout->height), TRUE);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
||||
+29
-5
@@ -49,6 +49,7 @@
|
||||
#include <pango/pango-utils.h> /* For pango_split_file_list */
|
||||
|
||||
#include "gtkaccelmap.h"
|
||||
#include "gtkbox.h"
|
||||
#include "gtkdnd.h"
|
||||
#include "gtkversion.h"
|
||||
#include "gtkmain.h"
|
||||
@@ -183,8 +184,6 @@ gtk_check_version (guint required_major,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#undef gtk_init_check
|
||||
|
||||
/* This checks to see if the process is running suid or sgid
|
||||
* at the current time. If so, we don't allow GTK+ to be initialized.
|
||||
* This is meant to be a mild check - we only error out if we
|
||||
@@ -551,6 +550,8 @@ gtk_disable_setlocale (void)
|
||||
do_setlocale = FALSE;
|
||||
}
|
||||
|
||||
#undef gtk_init_check
|
||||
|
||||
gboolean
|
||||
gtk_init_check (int *argc,
|
||||
char ***argv)
|
||||
@@ -790,23 +791,46 @@ check_sizeof_GtkWindow (size_t sizeof_GtkWindow)
|
||||
"The code using GTK+ thinks GtkWindow is of different\n"
|
||||
"size than it actually is in this build of GTK+.\n"
|
||||
"On Windows, this probably means that you have compiled\n"
|
||||
"your code with gcc without the -fnative-struct switch.");
|
||||
"your code with gcc without the -fnative-struct switch,\n"
|
||||
"or that you are using an unsupported compiler.");
|
||||
}
|
||||
|
||||
/* In GTK+ 2.0 the GtkWindow struct actually is the same size in
|
||||
* gcc-compiled code on Win32 whether compiled with -fnative-struct or
|
||||
* not. Unfortunately this wan't noticed until after GTK+ 2.0.1. So,
|
||||
* from GTK+ 2.0.2 on, check some other struct, too, where the use of
|
||||
* -fnative-struct still matters. GtkBox is one such.
|
||||
*/
|
||||
static void
|
||||
check_sizeof_GtkBox (size_t sizeof_GtkBox)
|
||||
{
|
||||
if (sizeof_GtkBox != sizeof (GtkBox))
|
||||
g_error ("Incompatible build!\n"
|
||||
"The code using GTK+ thinks GtkBox is of different\n"
|
||||
"size than it actually is in this build of GTK+.\n"
|
||||
"On Windows, this probably means that you have compiled\n"
|
||||
"your code with gcc without the -fnative-struct switch,\n"
|
||||
"or that you are using an unsupported compiler.");
|
||||
}
|
||||
|
||||
/* These two functions might get more checks added later, thus pass
|
||||
* in the number of extra args.
|
||||
*/
|
||||
void
|
||||
gtk_init_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof_GtkWindow)
|
||||
gtk_init_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof_GtkWindow, size_t sizeof_GtkBox)
|
||||
{
|
||||
check_sizeof_GtkWindow (sizeof_GtkWindow);
|
||||
if (num_checks >= 2)
|
||||
check_sizeof_GtkBox (sizeof_GtkBox);
|
||||
gtk_init (argc, argv);
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtk_init_check_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof_GtkWindow)
|
||||
gtk_init_check_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof_GtkWindow, size_t sizeof_GtkBox)
|
||||
{
|
||||
check_sizeof_GtkWindow (sizeof_GtkWindow);
|
||||
if (num_checks >= 2)
|
||||
check_sizeof_GtkBox (sizeof_GtkBox);
|
||||
return gtk_init_check (argc, argv);
|
||||
}
|
||||
|
||||
|
||||
+6
-4
@@ -98,14 +98,16 @@ gboolean gtk_init_check (int *argc,
|
||||
void gtk_init_abi_check (int *argc,
|
||||
char ***argv,
|
||||
int num_checks,
|
||||
size_t sizeof_GtkWindow);
|
||||
size_t sizeof_GtkWindow,
|
||||
size_t sizeof_GtkBox);
|
||||
gboolean gtk_init_check_abi_check (int *argc,
|
||||
char ***argv,
|
||||
int num_checks,
|
||||
size_t sizeof_GtkWindow);
|
||||
size_t sizeof_GtkWindow,
|
||||
size_t sizeof_GtkBox);
|
||||
|
||||
#define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 1, sizeof (GtkWindow))
|
||||
#define gtk_init_check(argc, argv) gtk_init_check_abi_check (argc, argv, 1, sizeof (GtkWindow))
|
||||
#define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox))
|
||||
#define gtk_init_check(argc, argv) gtk_init_check_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ BOOLEAN:BOXED
|
||||
BOOLEAN:BOXED,BOXED
|
||||
BOOLEAN:ENUM
|
||||
BOOLEAN:ENUM,INT
|
||||
BOOLEAN:OBJECT,UINT,UINT
|
||||
BOOLEAN:OBJECT,UINT,FLAGS
|
||||
BOOLEAN:OBJECT,INT,INT,UINT
|
||||
BOOLEAN:OBJECT,STRING,STRING,BOXED
|
||||
BOOLEAN:OBJECT,BOXED,BOXED
|
||||
@@ -81,8 +81,8 @@ VOID:POINTER,UINT
|
||||
VOID:STRING
|
||||
VOID:STRING,STRING
|
||||
VOID:STRING,INT,POINTER
|
||||
VOID:UINT,FLAGS,BOXED
|
||||
VOID:UINT,UINT
|
||||
VOID:UINT,UINT,BOXED
|
||||
VOID:UINT,STRING
|
||||
VOID:UINT,BOXED,UINT,FLAGS,FLAGS
|
||||
VOID:UINT,OBJECT,UINT,FLAGS,FLAGS
|
||||
|
||||
+1
-37
@@ -1112,13 +1112,6 @@ gtk_menu_set_tearoff_state (GtkMenu *menu,
|
||||
|
||||
gtk_widget_realize (menu->tearoff_window);
|
||||
|
||||
gdk_window_set_decorations (menu->tearoff_window->window,
|
||||
GDK_DECOR_ALL |
|
||||
GDK_DECOR_RESIZEH |
|
||||
GDK_DECOR_MINIMIZE |
|
||||
GDK_DECOR_MAXIMIZE);
|
||||
gtk_window_set_resizable (GTK_WINDOW (menu->tearoff_window), FALSE);
|
||||
|
||||
menu->tearoff_hbox = gtk_hbox_new (FALSE, FALSE);
|
||||
gtk_container_add (GTK_CONTAINER (menu->tearoff_window), menu->tearoff_hbox);
|
||||
|
||||
@@ -1667,35 +1660,6 @@ gtk_menu_paint (GtkWidget *widget,
|
||||
MENU_SCROLL_ARROW_HEIGHT - 2 * border_y - 2);
|
||||
}
|
||||
}
|
||||
else if (event->window == menu->view_window)
|
||||
{
|
||||
gint menu_height;
|
||||
gint top_pos;
|
||||
|
||||
if (menu->scroll_offset < 0)
|
||||
gtk_paint_box (widget->style,
|
||||
menu->view_window,
|
||||
GTK_STATE_ACTIVE,
|
||||
GTK_SHADOW_IN,
|
||||
NULL, widget, "menu",
|
||||
0, 0,
|
||||
-1,
|
||||
-menu->scroll_offset);
|
||||
|
||||
menu_height = widget->requisition.height - 2*border_y;
|
||||
top_pos = height - 2*border_y - (menu->upper_arrow_visible ? MENU_SCROLL_ARROW_HEIGHT : 0);
|
||||
|
||||
if (menu_height - menu->scroll_offset < top_pos)
|
||||
gtk_paint_box (widget->style,
|
||||
menu->view_window,
|
||||
GTK_STATE_ACTIVE,
|
||||
GTK_SHADOW_IN,
|
||||
NULL, widget, "menu",
|
||||
0,
|
||||
menu_height - menu->scroll_offset,
|
||||
-1,
|
||||
top_pos - (menu_height - menu->scroll_offset));
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1814,7 +1778,7 @@ gtk_menu_key_press (GtkWidget *widget,
|
||||
menu_shell->active_menu_item &&
|
||||
GTK_BIN (menu_shell->active_menu_item)->child && /* no seperators */
|
||||
GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL && /* no submenus */
|
||||
(delete || gtk_accelerator_valid (event->keyval, event->state)))
|
||||
(delete || gtk_accelerator_valid (accel_key, accel_mods)))
|
||||
{
|
||||
GtkWidget *menu_item = menu_shell->active_menu_item;
|
||||
gboolean replace_accels = TRUE;
|
||||
|
||||
+8
-2
@@ -488,6 +488,8 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
|
||||
|
||||
if (bin->child)
|
||||
{
|
||||
GtkRequisition child_requisition;
|
||||
|
||||
child_allocation.x = (GTK_CONTAINER (widget)->border_width +
|
||||
widget->style->xthickness +
|
||||
BORDER_SPACING);
|
||||
@@ -499,9 +501,13 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
|
||||
child_allocation.width -= GTK_MENU_ITEM (widget)->toggle_size;
|
||||
child_allocation.x += widget->allocation.x;
|
||||
child_allocation.y += widget->allocation.y;
|
||||
|
||||
|
||||
gtk_widget_get_child_requisition (bin->child, &child_requisition);
|
||||
if (menu_item->submenu && menu_item->show_submenu_indicator)
|
||||
child_allocation.width -= child_allocation.height;
|
||||
child_allocation.width -= child_requisition.height;
|
||||
|
||||
if (child_allocation.width < 1)
|
||||
child_allocation.width = 1;
|
||||
|
||||
gtk_widget_size_allocate (bin->child, &child_allocation);
|
||||
}
|
||||
|
||||
+1
-1
@@ -4252,7 +4252,7 @@ gtk_notebook_prev_page (GtkNotebook *notebook)
|
||||
* @show_border: %TRUE if a bevel should be drawn around the notebook.
|
||||
*
|
||||
* Sets whether a bevel will be drawn around the notebook pages.
|
||||
* This is only has an effect when the tabs are not shown.
|
||||
* This only has a visual effect when the tabs are not shown.
|
||||
* See gtk_notebook_set_show_tabs().
|
||||
**/
|
||||
void
|
||||
|
||||
+6
-1
@@ -295,7 +295,12 @@ gtk_option_menu_remove_menu (GtkOptionMenu *option_menu)
|
||||
g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
|
||||
|
||||
if (option_menu->menu)
|
||||
gtk_menu_detach (GTK_MENU (option_menu->menu));
|
||||
{
|
||||
if (GTK_MENU_SHELL (option_menu->menu)->active)
|
||||
g_signal_emit_by_name (option_menu->menu, "cancel", 0);
|
||||
|
||||
gtk_menu_detach (GTK_MENU (option_menu->menu));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
+42
-38
@@ -48,6 +48,8 @@ static void gtk_plug_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation);
|
||||
static gboolean gtk_plug_key_press_event (GtkWidget *widget,
|
||||
GdkEventKey *event);
|
||||
static gboolean gtk_plug_focus_event (GtkWidget *widget,
|
||||
GdkEventFocus *event);
|
||||
static void gtk_plug_set_focus (GtkWindow *window,
|
||||
GtkWidget *focus);
|
||||
static gboolean gtk_plug_focus (GtkWidget *widget,
|
||||
@@ -123,6 +125,8 @@ gtk_plug_class_init (GtkPlugClass *class)
|
||||
widget_class->realize = gtk_plug_realize;
|
||||
widget_class->unrealize = gtk_plug_unrealize;
|
||||
widget_class->key_press_event = gtk_plug_key_press_event;
|
||||
widget_class->focus_in_event = gtk_plug_focus_event;
|
||||
widget_class->focus_out_event = gtk_plug_focus_event;
|
||||
|
||||
widget_class->show = gtk_plug_show;
|
||||
widget_class->hide = gtk_plug_hide;
|
||||
@@ -217,6 +221,7 @@ _gtk_plug_add_to_socket (GtkPlug *plug,
|
||||
GtkSocket *socket)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
gint w, h;
|
||||
|
||||
g_return_if_fail (GTK_IS_PLUG (plug));
|
||||
g_return_if_fail (GTK_IS_SOCKET (socket));
|
||||
@@ -232,7 +237,10 @@ _gtk_plug_add_to_socket (GtkPlug *plug,
|
||||
plug->socket_window = GTK_WIDGET (socket)->window;
|
||||
|
||||
if (GTK_WIDGET_REALIZED (widget))
|
||||
gdk_window_reparent (widget->window, plug->socket_window, 0, 0);
|
||||
{
|
||||
gdk_drawable_get_size (GDK_DRAWABLE (widget->window), &w, &h);
|
||||
gdk_window_reparent (widget->window, plug->socket_window, -w, -h);
|
||||
}
|
||||
|
||||
gtk_widget_set_parent (widget, GTK_WIDGET (socket));
|
||||
|
||||
@@ -274,7 +282,9 @@ _gtk_plug_remove_from_socket (GtkPlug *plug,
|
||||
GTK_PRIVATE_UNSET_FLAG (plug, GTK_IN_REPARENT);
|
||||
|
||||
socket->plug_widget = NULL;
|
||||
g_object_unref (socket->plug_window);
|
||||
socket->plug_window = NULL;
|
||||
|
||||
socket->same_app = FALSE;
|
||||
|
||||
plug->same_app = FALSE;
|
||||
@@ -587,6 +597,17 @@ gtk_plug_key_press_event (GtkWidget *widget,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_plug_focus_event (GtkWidget *widget,
|
||||
GdkEventFocus *event)
|
||||
{
|
||||
/* We eat focus-in events and focus-out events, since they
|
||||
* can be generated by something like a keyboard grab on
|
||||
* a child of the plug.
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_plug_set_focus (GtkWindow *window,
|
||||
GtkWidget *focus)
|
||||
@@ -600,23 +621,6 @@ gtk_plug_set_focus (GtkWindow *window,
|
||||
|
||||
if (focus && !window->has_focus)
|
||||
{
|
||||
#if 0
|
||||
XEvent xevent;
|
||||
|
||||
xevent.xfocus.type = FocusIn;
|
||||
xevent.xfocus.display = GDK_WINDOW_XDISPLAY (GTK_WIDGET(plug)->window);
|
||||
xevent.xfocus.window = GDK_WINDOW_XWINDOW (plug->socket_window);
|
||||
xevent.xfocus.mode = EMBEDDED_APP_WANTS_FOCUS;
|
||||
xevent.xfocus.detail = FALSE; /* Don't force */
|
||||
|
||||
gdk_error_trap_push ();
|
||||
XSendEvent (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (plug->socket_window),
|
||||
False, NoEventMask, &xevent);
|
||||
gdk_flush ();
|
||||
gdk_error_trap_pop ();
|
||||
#endif
|
||||
|
||||
send_xembed_message (plug, XEMBED_REQUEST_FOCUS, 0, 0, 0,
|
||||
gtk_get_current_event_time ());
|
||||
}
|
||||
@@ -781,19 +785,6 @@ gtk_plug_focus (GtkWidget *widget,
|
||||
|
||||
send_xembed_message (plug, message, 0, 0, 0,
|
||||
gtk_get_current_event_time ());
|
||||
|
||||
#if 0
|
||||
gtk_window_set_focus (GTK_WINDOW (widget), NULL);
|
||||
|
||||
gdk_error_trap_push ();
|
||||
XSetInputFocus (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (plug->socket_window),
|
||||
RevertToParent, event->time);
|
||||
gdk_flush ();
|
||||
gdk_error_trap_pop ();
|
||||
|
||||
gtk_plug_forward_key_press (plug, event);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -831,6 +822,9 @@ send_xembed_message (GtkPlug *plug,
|
||||
{
|
||||
XEvent xevent;
|
||||
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkPlug: Sending XEMBED message of type %ld", message));
|
||||
|
||||
xevent.xclient.window = GDK_WINDOW_XWINDOW (plug->socket_window);
|
||||
xevent.xclient.type = ClientMessage;
|
||||
xevent.xclient.message_type = gdk_x11_get_xatom_by_name ("_XEMBED");
|
||||
@@ -922,7 +916,7 @@ handle_xembed_message (GtkPlug *plug,
|
||||
guint32 time)
|
||||
{
|
||||
GTK_NOTE (PLUGSOCKET,
|
||||
g_message ("Message of type %ld received", message));
|
||||
g_message ("GtkPlug: Message of type %ld received", message));
|
||||
|
||||
switch (message)
|
||||
{
|
||||
@@ -959,15 +953,24 @@ handle_xembed_message (GtkPlug *plug,
|
||||
|
||||
case XEMBED_FOCUS_OUT:
|
||||
{
|
||||
GtkWidget *widget = GTK_WIDGET (plug);
|
||||
GdkEvent event;
|
||||
|
||||
event.focus_change.type = GDK_FOCUS_CHANGE;
|
||||
event.focus_change.window = GTK_WIDGET (plug)->window;
|
||||
event.focus_change.window = widget->window;
|
||||
event.focus_change.send_event = TRUE;
|
||||
event.focus_change.in = (message == XEMBED_FOCUS_IN);
|
||||
|
||||
gtk_widget_event (GTK_WIDGET (plug), &event);
|
||||
|
||||
if (message == XEMBED_FOCUS_IN)
|
||||
{
|
||||
event.focus_change.in = TRUE;
|
||||
GTK_WIDGET_CLASS (parent_class)->focus_in_event (widget, (GdkEventFocus *)&event);
|
||||
}
|
||||
else
|
||||
{
|
||||
event.focus_change.in = FALSE;
|
||||
GTK_WIDGET_CLASS (parent_class)->focus_out_event (widget, (GdkEventFocus *)&event);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1072,7 +1075,7 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (xre->parent != GDK_ROOT_WINDOW ())
|
||||
@@ -1107,7 +1110,8 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
if (!was_embedded)
|
||||
g_signal_emit (G_OBJECT (plug), plug_signals[EMBEDDED], 0);
|
||||
}
|
||||
|
||||
|
||||
done:
|
||||
g_object_unref (plug);
|
||||
|
||||
break;
|
||||
|
||||
+11
-3
@@ -2041,8 +2041,12 @@ gtk_range_calc_layout (GtkRange *range,
|
||||
/* slider height is the fraction (page_size /
|
||||
* total_adjustment_range) times the trough height in pixels
|
||||
*/
|
||||
height = ((bottom - top) * (range->adjustment->page_size /
|
||||
(range->adjustment->upper - range->adjustment->lower)));
|
||||
|
||||
if (range->adjustment->upper - range->adjustment->lower != 0)
|
||||
height = ((bottom - top) * (range->adjustment->page_size /
|
||||
(range->adjustment->upper - range->adjustment->lower)));
|
||||
else
|
||||
height = range->min_slider_size;
|
||||
|
||||
if (height < range->min_slider_size ||
|
||||
range->slider_size_fixed)
|
||||
@@ -2177,8 +2181,12 @@ gtk_range_calc_layout (GtkRange *range,
|
||||
/* slider width is the fraction (page_size /
|
||||
* total_adjustment_range) times the trough width in pixels
|
||||
*/
|
||||
width = ((right - left) * (range->adjustment->page_size /
|
||||
|
||||
if (range->adjustment->upper - range->adjustment->lower != 0)
|
||||
width = ((right - left) * (range->adjustment->page_size /
|
||||
(range->adjustment->upper - range->adjustment->lower)));
|
||||
else
|
||||
width = range->min_slider_size;
|
||||
|
||||
if (width < range->min_slider_size ||
|
||||
range->slider_size_fixed)
|
||||
|
||||
+33
-9
@@ -482,8 +482,10 @@ _gtk_rbtree_remove (GtkRBTree *tree)
|
||||
|
||||
gint height = tree->root->offset;
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
#endif
|
||||
|
||||
tmp_tree = tree->parent_tree;
|
||||
tmp_node = tree->parent_node;
|
||||
@@ -513,8 +515,10 @@ _gtk_rbtree_remove (GtkRBTree *tree)
|
||||
tmp_node = tree->parent_node;
|
||||
_gtk_rbtree_free (tree);
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
_gtk_rbtree_test (G_STRLOC, tmp_tree);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -529,12 +533,14 @@ _gtk_rbtree_insert_after (GtkRBTree *tree,
|
||||
GtkRBNode *tmp_node;
|
||||
GtkRBTree *tmp_tree;
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("\n\n_gtk_rbtree_insert_after: 0x%x\n", (gint) current);
|
||||
g_print ("\n\n_gtk_rbtree_insert_after: %p\n", current);
|
||||
_gtk_rbtree_debug_spew (tree);
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
if (current != NULL && current->right != tree->nil)
|
||||
{
|
||||
@@ -588,6 +594,7 @@ _gtk_rbtree_insert_after (GtkRBTree *tree,
|
||||
|
||||
_gtk_rbtree_insert_fixup (tree, node);
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("_gtk_rbtree_insert_after finished...\n");
|
||||
@@ -595,6 +602,7 @@ _gtk_rbtree_insert_after (GtkRBTree *tree,
|
||||
g_print ("\n\n");
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
return node;
|
||||
}
|
||||
@@ -609,14 +617,16 @@ _gtk_rbtree_insert_before (GtkRBTree *tree,
|
||||
gboolean left = TRUE;
|
||||
GtkRBNode *tmp_node;
|
||||
GtkRBTree *tmp_tree;
|
||||
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("\n\n_gtk_rbtree_insert_before: 0x%x\n", (gint) current);
|
||||
g_print ("\n\n_gtk_rbtree_insert_before: %p\n", current);
|
||||
_gtk_rbtree_debug_spew (tree);
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
if (current != NULL && current->left != tree->nil)
|
||||
{
|
||||
current = current->left;
|
||||
@@ -670,6 +680,7 @@ _gtk_rbtree_insert_before (GtkRBTree *tree,
|
||||
|
||||
_gtk_rbtree_insert_fixup (tree, node);
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("_gtk_rbtree_insert_before finished...\n");
|
||||
@@ -677,7 +688,8 @@ _gtk_rbtree_insert_before (GtkRBTree *tree,
|
||||
g_print ("\n\n");
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -725,8 +737,10 @@ _gtk_rbtree_node_set_height (GtkRBTree *tree,
|
||||
tmp_tree = tmp_tree->parent_tree;
|
||||
}
|
||||
}
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1196,20 +1210,26 @@ _gtk_rbtree_remove_node (GtkRBTree *tree,
|
||||
g_return_if_fail (tree != NULL);
|
||||
g_return_if_fail (node != NULL);
|
||||
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("\n\n_gtk_rbtree_remove_node: 0x%x\n", (gint) node);
|
||||
g_print ("\n\n_gtk_rbtree_remove_node: %p\n", node);
|
||||
_gtk_rbtree_debug_spew (tree);
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
/* make sure we're deleting a node that's actually in the tree */
|
||||
for (x = node; x->parent != tree->nil; x = x->parent)
|
||||
;
|
||||
g_return_if_fail (x == tree->root);
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
|
||||
#endif
|
||||
|
||||
if (node->left == tree->nil || node->right == tree->nil)
|
||||
{
|
||||
y = node;
|
||||
@@ -1335,6 +1355,7 @@ _gtk_rbtree_remove_node (GtkRBTree *tree,
|
||||
_gtk_rbtree_remove_node_fixup (tree, x);
|
||||
_gtk_rbnode_free (y);
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
if (gtk_debug_flags & GTK_DEBUG_TREE)
|
||||
{
|
||||
g_print ("_gtk_rbtree_remove_node finished...\n");
|
||||
@@ -1342,6 +1363,7 @@ _gtk_rbtree_remove_node (GtkRBTree *tree,
|
||||
g_print ("\n\n");
|
||||
_gtk_rbtree_test (G_STRLOC, tree);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
}
|
||||
|
||||
GtkRBNode *
|
||||
@@ -1585,6 +1607,7 @@ void _fixup_parity (GtkRBTree *tree,
|
||||
((node->right != tree->nil) ? node->right->parity : 0);
|
||||
}
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
static guint
|
||||
get_parity (GtkRBNode *node)
|
||||
{
|
||||
@@ -1785,8 +1808,8 @@ _gtk_rbtree_debug_spew_helper (GtkRBTree *tree,
|
||||
for (i = 0; i < depth; i++)
|
||||
g_print ("\t");
|
||||
|
||||
g_print ("(0x%x - %s) (Offset %d) (Parity %d) (Validity %d%d%d)\n",
|
||||
(gint) node,
|
||||
g_print ("(%p - %s) (Offset %d) (Parity %d) (Validity %d%d%d)\n",
|
||||
node,
|
||||
(GTK_RBNODE_GET_COLOR (node) == GTK_RBNODE_BLACK)?"BLACK":" RED ",
|
||||
node->offset,
|
||||
node->parity?1:0,
|
||||
@@ -1819,3 +1842,4 @@ _gtk_rbtree_debug_spew (GtkRBTree *tree)
|
||||
else
|
||||
_gtk_rbtree_debug_spew_helper (tree, tree->root, 0);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
+2
-1
@@ -171,10 +171,11 @@ void _gtk_rbtree_prev_full (GtkRBTree *tree,
|
||||
gint _gtk_rbtree_get_depth (GtkRBTree *tree);
|
||||
|
||||
/* This func checks the integrity of the tree */
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
void _gtk_rbtree_test (const gchar *where,
|
||||
GtkRBTree *tree);
|
||||
void _gtk_rbtree_debug_spew (GtkRBTree *tree);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
+12
-2
@@ -299,9 +299,9 @@ gtk_rc_make_default_dir (const gchar *type)
|
||||
|
||||
var = g_getenv ("GTK_EXE_PREFIX");
|
||||
if (var)
|
||||
path = g_build_filename (var, "lib", "gtk-2.0", type, GTK_BINARY_VERSION, NULL);
|
||||
path = g_build_filename (var, "lib", "gtk-2.0", GTK_BINARY_VERSION, type, NULL);
|
||||
else
|
||||
path = g_build_filename (GTK_LIBDIR, "gtk-2.0", type, GTK_BINARY_VERSION, NULL);
|
||||
path = g_build_filename (GTK_LIBDIR, "gtk-2.0", GTK_BINARY_VERSION, type, NULL);
|
||||
|
||||
return path;
|
||||
}
|
||||
@@ -367,6 +367,16 @@ gtk_rc_get_theme_dir (void)
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_rc_get_module_dir:
|
||||
*
|
||||
* Returns a directory in which GTK+ looks for theme engines.
|
||||
* For full information about the search for theme engines,
|
||||
* see the docs for <envvar>GTK_PATH</envvar> in
|
||||
* <xref linkend="gtk-running">.
|
||||
*
|
||||
* return value: the directory. (Must be freed with g_free())
|
||||
**/
|
||||
gchar *
|
||||
gtk_rc_get_module_dir (void)
|
||||
{
|
||||
|
||||
@@ -324,8 +324,6 @@ gtk_scrolled_window_init (GtkScrolledWindow *scrolled_window)
|
||||
{
|
||||
GTK_WIDGET_SET_FLAGS (scrolled_window, GTK_NO_WINDOW | GTK_CAN_FOCUS);
|
||||
|
||||
gtk_container_set_resize_mode (GTK_CONTAINER (scrolled_window), GTK_RESIZE_QUEUE);
|
||||
|
||||
scrolled_window->hscrollbar = NULL;
|
||||
scrolled_window->vscrollbar = NULL;
|
||||
scrolled_window->hscrollbar_policy = GTK_POLICY_ALWAYS;
|
||||
|
||||
+14
-10
@@ -62,27 +62,31 @@ G_BEGIN_DECLS
|
||||
#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), G_SIGNAL_MATCH_FUNC | \
|
||||
G_SIGNAL_MATCH_DATA, 0)
|
||||
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), G_SIGNAL_MATCH_FUNC | \
|
||||
G_SIGNAL_MATCH_DATA, 1)
|
||||
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), G_SIGNAL_MATCH_FUNC | \
|
||||
G_SIGNAL_MATCH_DATA, 2)
|
||||
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), G_SIGNAL_MATCH_ID | \
|
||||
G_SIGNAL_MATCH_FUNC | \
|
||||
G_SIGNAL_MATCH_DATA | \
|
||||
((may_be_blocked) ? 0 : G_SIGNAL_MATCH_UNBLOCKED),\
|
||||
(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)
|
||||
|
||||
|
||||
|
||||
+78
-135
@@ -39,6 +39,13 @@
|
||||
|
||||
#include "xembed.h"
|
||||
|
||||
typedef struct _GtkSocketPrivate GtkSocketPrivate;
|
||||
|
||||
struct _GtkSocketPrivate
|
||||
{
|
||||
gint resize_count;
|
||||
};
|
||||
|
||||
/* Forward declararations */
|
||||
|
||||
static void gtk_socket_class_init (GtkSocketClass *klass);
|
||||
@@ -104,6 +111,29 @@ static guint socket_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static GtkWidgetClass *parent_class = NULL;
|
||||
|
||||
GtkSocketPrivate *
|
||||
gtk_socket_get_private (GtkSocket *socket)
|
||||
{
|
||||
GtkSocketPrivate *private;
|
||||
static GQuark private_quark = 0;
|
||||
|
||||
if (!private_quark)
|
||||
private_quark = g_quark_from_static_string ("gtk-socket-private");
|
||||
|
||||
private = g_object_get_qdata (G_OBJECT (socket), private_quark);
|
||||
|
||||
if (!private)
|
||||
{
|
||||
private = g_new0 (GtkSocketPrivate, 1);
|
||||
private->resize_count = 0;
|
||||
|
||||
g_object_set_qdata_full (G_OBJECT (socket), private_quark,
|
||||
private, (GDestroyNotify) g_free);
|
||||
}
|
||||
|
||||
return private;
|
||||
}
|
||||
|
||||
GtkType
|
||||
gtk_socket_get_type (void)
|
||||
{
|
||||
@@ -358,6 +388,7 @@ gtk_socket_realize (GtkWidget *widget)
|
||||
static void
|
||||
gtk_socket_end_embedding (GtkSocket *socket)
|
||||
{
|
||||
GtkSocketPrivate *private = gtk_socket_get_private (socket);
|
||||
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket));
|
||||
gint i;
|
||||
|
||||
@@ -367,6 +398,7 @@ gtk_socket_end_embedding (GtkSocket *socket)
|
||||
|
||||
g_object_unref (socket->plug_window);
|
||||
socket->plug_window = NULL;
|
||||
private->resize_count = 0;
|
||||
|
||||
/* Remove from end to avoid indexes shifting. This is evil */
|
||||
for (i = socket->accel_group->n_accels - 1; i >= 0; i--)
|
||||
@@ -414,19 +446,15 @@ gtk_socket_size_request (GtkWidget *widget,
|
||||
long supplied;
|
||||
|
||||
gdk_error_trap_push ();
|
||||
|
||||
socket->request_width = 1;
|
||||
socket->request_height = 1;
|
||||
|
||||
if (XGetWMNormalHints (GDK_DISPLAY(),
|
||||
GDK_WINDOW_XWINDOW (socket->plug_window),
|
||||
&hints, &supplied))
|
||||
{
|
||||
/* This is obsolete, according the X docs, but many programs
|
||||
* still use it */
|
||||
if (hints.flags & (PSize | USSize))
|
||||
{
|
||||
socket->request_width = hints.width;
|
||||
socket->request_height = hints.height;
|
||||
}
|
||||
else if (hints.flags & PMinSize)
|
||||
if (hints.flags & PMinSize)
|
||||
{
|
||||
socket->request_width = hints.min_width;
|
||||
socket->request_height = hints.min_height;
|
||||
@@ -437,7 +465,7 @@ gtk_socket_size_request (GtkWidget *widget,
|
||||
socket->request_height = hints.base_height;
|
||||
}
|
||||
}
|
||||
socket->have_size = TRUE; /* don't check again? */
|
||||
socket->have_size = TRUE;
|
||||
|
||||
gdk_error_trap_pop ();
|
||||
}
|
||||
@@ -486,22 +514,19 @@ gtk_socket_size_allocate (GtkWidget *widget,
|
||||
}
|
||||
else if (socket->plug_window)
|
||||
{
|
||||
GtkSocketPrivate *private = gtk_socket_get_private (socket);
|
||||
|
||||
gdk_error_trap_push ();
|
||||
|
||||
if (!socket->need_map &&
|
||||
(allocation->width == socket->current_width) &&
|
||||
(allocation->height == socket->current_height))
|
||||
{
|
||||
gtk_socket_send_configure_event (socket);
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkSocket - allocated no change: %d %d",
|
||||
allocation->width, allocation->height));
|
||||
}
|
||||
else
|
||||
if (allocation->width != socket->current_width ||
|
||||
allocation->height != socket->current_height)
|
||||
{
|
||||
gdk_window_move_resize (socket->plug_window,
|
||||
0, 0,
|
||||
allocation->width, allocation->height);
|
||||
if (private->resize_count)
|
||||
private->resize_count--;
|
||||
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkSocket - allocated: %d %d",
|
||||
allocation->width, allocation->height));
|
||||
@@ -515,6 +540,15 @@ gtk_socket_size_allocate (GtkWidget *widget,
|
||||
socket->need_map = FALSE;
|
||||
}
|
||||
|
||||
while (private->resize_count)
|
||||
{
|
||||
gtk_socket_send_configure_event (socket);
|
||||
private->resize_count--;
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkSocket - sending synthetic configure: %d %d",
|
||||
allocation->width, allocation->height));
|
||||
}
|
||||
|
||||
gdk_flush ();
|
||||
gdk_error_trap_pop ();
|
||||
}
|
||||
@@ -753,19 +787,6 @@ gtk_socket_focus_out_event (GtkWidget *widget, GdkEventFocus *event)
|
||||
{
|
||||
GtkSocket *socket = GTK_SOCKET (widget);
|
||||
|
||||
#if 0
|
||||
GtkWidget *toplevel;
|
||||
toplevel = gtk_widget_get_toplevel (widget);
|
||||
|
||||
if (toplevel && GTK_IS_WINDOW (toplevel))
|
||||
{
|
||||
XSetInputFocus (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (toplevel->window),
|
||||
RevertToParent, CurrentTime); /* FIXME? */
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (socket->plug_window)
|
||||
{
|
||||
send_xembed_message (socket, XEMBED_FOCUS_OUT, 0, 0, 0,
|
||||
@@ -788,20 +809,6 @@ gtk_socket_claim_focus (GtkSocket *socket)
|
||||
GTK_WIDGET_SET_FLAGS (socket, GTK_CAN_FOCUS);
|
||||
gtk_widget_grab_focus (GTK_WIDGET (socket));
|
||||
GTK_WIDGET_UNSET_FLAGS (socket, GTK_CAN_FOCUS);
|
||||
|
||||
/* FIXME: we might grab the focus even if we don't have
|
||||
* it as an app... (and see _focus_in ()) */
|
||||
if (socket->plug_window)
|
||||
{
|
||||
#if 0
|
||||
gdk_error_trap_push ();
|
||||
XSetInputFocus (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (socket->plug_window),
|
||||
RevertToParent, GDK_CURRENT_TIME);
|
||||
gdk_flush ();
|
||||
gdk_error_trap_pop ();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -843,66 +850,6 @@ gtk_socket_focus (GtkWidget *widget, GtkDirectionType direction)
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
#if 0
|
||||
if (!socket->focus_in && socket->plug_window)
|
||||
{
|
||||
XEvent xevent;
|
||||
|
||||
gtk_socket_claim_focus (socket);
|
||||
|
||||
xevent.xkey.type = KeyPress;
|
||||
xevent.xkey.display = GDK_DISPLAY ();
|
||||
xevent.xkey.window = GDK_WINDOW_XWINDOW (socket->plug_window);
|
||||
xevent.xkey.root = GDK_ROOT_WINDOW (); /* FIXME */
|
||||
xevent.xkey.time = GDK_CURRENT_TIME; /* FIXME */
|
||||
/* FIXME, the following might cause big problems for
|
||||
* non-GTK apps */
|
||||
xevent.xkey.x = 0;
|
||||
xevent.xkey.y = 0;
|
||||
xevent.xkey.x_root = 0;
|
||||
xevent.xkey.y_root = 0;
|
||||
xevent.xkey.state = 0;
|
||||
xevent.xkey.same_screen = TRUE; /* FIXME ? */
|
||||
|
||||
switch (direction)
|
||||
{
|
||||
case GTK_DIR_UP:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Up);
|
||||
break;
|
||||
case GTK_DIR_DOWN:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Down);
|
||||
break;
|
||||
case GTK_DIR_LEFT:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Left);
|
||||
break;
|
||||
case GTK_DIR_RIGHT:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Right);
|
||||
break;
|
||||
case GTK_DIR_TAB_FORWARD:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Tab);
|
||||
break;
|
||||
case GTK_DIR_TAB_BACKWARD:
|
||||
xevent.xkey.keycode = XKeysymToKeycode(GDK_DISPLAY(), GDK_Tab);
|
||||
xevent.xkey.state = ShiftMask;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
gdk_error_trap_push ();
|
||||
XSendEvent (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (socket->plug_window),
|
||||
False, NoEventMask, &xevent);
|
||||
gdk_flush();
|
||||
gdk_error_trap_pop ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -932,6 +879,7 @@ static void
|
||||
gtk_socket_send_configure_event (GtkSocket *socket)
|
||||
{
|
||||
XEvent event;
|
||||
gint x, y;
|
||||
|
||||
g_return_if_fail (socket->plug_window != NULL);
|
||||
|
||||
@@ -941,8 +889,16 @@ gtk_socket_send_configure_event (GtkSocket *socket)
|
||||
event.xconfigure.event = GDK_WINDOW_XWINDOW (socket->plug_window);
|
||||
event.xconfigure.window = GDK_WINDOW_XWINDOW (socket->plug_window);
|
||||
|
||||
event.xconfigure.x = 0;
|
||||
event.xconfigure.y = 0;
|
||||
/* The ICCCM says that synthetic events should have root relative
|
||||
* coordinates. We still aren't really ICCCM compliant, since
|
||||
* we don't send events when the real toplevel is moved.
|
||||
*/
|
||||
gdk_error_trap_push ();
|
||||
gdk_window_get_origin (socket->plug_window, &x, &y);
|
||||
gdk_error_trap_pop ();
|
||||
|
||||
event.xconfigure.x = x;
|
||||
event.xconfigure.y = y;
|
||||
event.xconfigure.width = GTK_WIDGET(socket)->allocation.width;
|
||||
event.xconfigure.height = GTK_WIDGET(socket)->allocation.height;
|
||||
|
||||
@@ -1165,6 +1121,9 @@ handle_xembed_message (GtkSocket *socket,
|
||||
glong data2,
|
||||
guint32 time)
|
||||
{
|
||||
GTK_NOTE (PLUGSOCKET,
|
||||
g_message ("GtkPlug: Message of type %ld received", message));
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case XEMBED_EMBEDDED_NOTIFY:
|
||||
@@ -1279,14 +1238,8 @@ gtk_socket_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
|
||||
if (socket->plug_window)
|
||||
{
|
||||
socket->request_width = xcwe->width;
|
||||
socket->request_height = xcwe->height;
|
||||
socket->have_size = TRUE;
|
||||
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkSocket - window created with size: %d %d",
|
||||
socket->request_width,
|
||||
socket->request_height));
|
||||
g_message ("GtkSocket - window created"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1304,17 +1257,16 @@ gtk_socket_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
|
||||
if (socket->plug_window)
|
||||
{
|
||||
GtkSocketPrivate *private = gtk_socket_get_private (socket);
|
||||
|
||||
if (xcre->value_mask & (CWWidth | CWHeight))
|
||||
{
|
||||
socket->request_width = xcre->width;
|
||||
socket->request_height = xcre->height;
|
||||
socket->have_size = TRUE;
|
||||
|
||||
GTK_NOTE(PLUGSOCKET,
|
||||
g_message ("GtkSocket - configure request: %d %d",
|
||||
socket->request_width,
|
||||
socket->request_height));
|
||||
|
||||
|
||||
private->resize_count++;
|
||||
gtk_widget_queue_resize (widget);
|
||||
}
|
||||
else if (xcre->value_mask & (CWX | CWY))
|
||||
@@ -1361,20 +1313,6 @@ gtk_socket_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
{
|
||||
gtk_socket_claim_focus (socket);
|
||||
}
|
||||
else if (xevent->xfocus.detail == NotifyInferior)
|
||||
{
|
||||
#if 0
|
||||
GtkWidget *toplevel;
|
||||
toplevel = gtk_widget_get_toplevel (widget);
|
||||
|
||||
if (toplevel && GTK_IS_WINDOW (topelevel))
|
||||
{
|
||||
XSetInputFocus (GDK_DISPLAY (),
|
||||
GDK_WINDOW_XWINDOW (toplevel->window),
|
||||
RevertToParent, CurrentTime); /* FIXME? */
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return_val = GDK_FILTER_REMOVE;
|
||||
break;
|
||||
case FocusOut:
|
||||
@@ -1399,7 +1337,12 @@ gtk_socket_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
{
|
||||
GdkDragProtocol protocol;
|
||||
|
||||
if ((xevent->xproperty.atom == gdk_x11_get_xatom_by_name ("XdndAware")) ||
|
||||
if (xevent->xproperty.atom == gdk_x11_get_xatom_by_name ("WM_NORMAL_HINTS"))
|
||||
{
|
||||
socket->have_size = FALSE;
|
||||
gtk_widget_queue_resize (widget);
|
||||
}
|
||||
else if ((xevent->xproperty.atom == gdk_x11_get_xatom_by_name ("XdndAware")) ||
|
||||
(xevent->xproperty.atom == gdk_x11_get_xatom_by_name ("_MOTIF_DRAG_RECEIVER_INFO")))
|
||||
{
|
||||
gdk_error_trap_push ();
|
||||
|
||||
+28
-10
@@ -498,19 +498,24 @@ _gtk_text_btree_unref (GtkTextBTree *tree)
|
||||
tree->refcount -= 1;
|
||||
|
||||
if (tree->refcount == 0)
|
||||
{
|
||||
gtk_text_btree_node_destroy (tree, tree->root_node);
|
||||
|
||||
g_assert (g_hash_table_size (tree->mark_table) == 0);
|
||||
g_hash_table_destroy (tree->mark_table);
|
||||
|
||||
g_object_unref (G_OBJECT (tree->insert_mark));
|
||||
g_object_unref (G_OBJECT (tree->selection_bound_mark));
|
||||
|
||||
{
|
||||
g_signal_handler_disconnect (G_OBJECT (tree->table),
|
||||
tree->tag_changed_handler);
|
||||
|
||||
g_object_unref (G_OBJECT (tree->table));
|
||||
tree->table = NULL;
|
||||
|
||||
gtk_text_btree_node_destroy (tree, tree->root_node);
|
||||
tree->root_node = NULL;
|
||||
|
||||
g_assert (g_hash_table_size (tree->mark_table) == 0);
|
||||
g_hash_table_destroy (tree->mark_table);
|
||||
tree->mark_table = NULL;
|
||||
|
||||
g_object_unref (G_OBJECT (tree->insert_mark));
|
||||
tree->insert_mark = NULL;
|
||||
g_object_unref (G_OBJECT (tree->selection_bound_mark));
|
||||
tree->selection_bound_mark = NULL;
|
||||
|
||||
g_free (tree);
|
||||
}
|
||||
@@ -1678,7 +1683,7 @@ _gtk_text_btree_tag (const GtkTextIter *start_orig,
|
||||
g_assert (seg != NULL);
|
||||
g_assert (indexable_seg != NULL);
|
||||
g_assert (seg != indexable_seg);
|
||||
|
||||
|
||||
if ( (seg->type == >k_text_toggle_on_type ||
|
||||
seg->type == >k_text_toggle_off_type) &&
|
||||
(seg->body.toggle.info == info) )
|
||||
@@ -5773,6 +5778,12 @@ gtk_text_btree_get_tag_info (GtkTextBTree *tree,
|
||||
info->toggle_count = 0;
|
||||
|
||||
tree->tag_infos = g_slist_prepend (tree->tag_infos, info);
|
||||
|
||||
#if 0
|
||||
g_print ("Created tag info %p for tag %s(%p)\n",
|
||||
info, info->tag->name ? info->tag->name : "anon",
|
||||
info->tag);
|
||||
#endif
|
||||
}
|
||||
|
||||
return info;
|
||||
@@ -5793,6 +5804,12 @@ gtk_text_btree_remove_tag_info (GtkTextBTree *tree,
|
||||
info = list->data;
|
||||
if (info->tag == tag)
|
||||
{
|
||||
#if 0
|
||||
g_print ("Removing tag info %p for tag %s(%p)\n",
|
||||
info, info->tag->name ? info->tag->name : "anon",
|
||||
info->tag);
|
||||
#endif
|
||||
|
||||
if (prev != NULL)
|
||||
{
|
||||
prev->next = list->next;
|
||||
@@ -5810,6 +5827,7 @@ gtk_text_btree_remove_tag_info (GtkTextBTree *tree,
|
||||
return;
|
||||
}
|
||||
|
||||
prev = list;
|
||||
list = g_slist_next (list);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -4322,8 +4322,9 @@ strbreakup (const char *string,
|
||||
* @match_end: return location for end of match, or %NULL
|
||||
* @limit: bound for the search, or %NULL for the end of the buffer
|
||||
*
|
||||
* Searches forward for @str. Any match is returned as the range
|
||||
* @match_start, @match_end. The search will not continue past
|
||||
* Searches forward for @str. Any match is returned by setting
|
||||
* @match_start to the first character of the match and @match_end to the
|
||||
* first character after the match. The search will not continue past
|
||||
* @limit. Note that a search is a linear or O(n) operation, so you
|
||||
* may wish to use @limit to avoid locking up your UI on large
|
||||
* buffers.
|
||||
|
||||
+4
-10
@@ -719,11 +719,10 @@ gtk_text_layout_real_invalidate (GtkTextLayout *layout,
|
||||
{
|
||||
GtkTextLineData *line_data = _gtk_text_line_get_data (line, layout);
|
||||
|
||||
gtk_text_layout_invalidate_cache (layout, line);
|
||||
|
||||
if (line_data)
|
||||
{
|
||||
gtk_text_layout_invalidate_cache (layout, line);
|
||||
_gtk_text_line_invalidate_wrap (line, line_data);
|
||||
}
|
||||
_gtk_text_line_invalidate_wrap (line, line_data);
|
||||
|
||||
if (line == last_line)
|
||||
break;
|
||||
@@ -739,12 +738,7 @@ gtk_text_layout_real_free_line_data (GtkTextLayout *layout,
|
||||
GtkTextLine *line,
|
||||
GtkTextLineData *line_data)
|
||||
{
|
||||
if (layout->one_display_cache && line == layout->one_display_cache->line)
|
||||
{
|
||||
GtkTextLineDisplay *tmp_display = layout->one_display_cache;
|
||||
layout->one_display_cache = NULL;
|
||||
gtk_text_layout_free_line_display (layout, tmp_display);
|
||||
}
|
||||
gtk_text_layout_invalidate_cache (layout, line);
|
||||
|
||||
g_free (line_data);
|
||||
}
|
||||
|
||||
+13
-1
@@ -160,7 +160,7 @@ gtk_text_tag_table_finalize (GObject *object)
|
||||
GtkTextTagTable *table;
|
||||
|
||||
table = GTK_TEXT_TAG_TABLE (object);
|
||||
|
||||
|
||||
gtk_text_tag_table_foreach (table, foreach_unref, NULL);
|
||||
|
||||
g_hash_table_destroy (table->hash);
|
||||
@@ -406,11 +406,23 @@ _gtk_text_tag_table_add_buffer (GtkTextTagTable *table,
|
||||
table->buffers = g_slist_prepend (table->buffers, buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
foreach_remove_tag (GtkTextTag *tag, gpointer data)
|
||||
{
|
||||
GtkTextBuffer *buffer;
|
||||
|
||||
buffer = GTK_TEXT_BUFFER (data);
|
||||
|
||||
_gtk_text_buffer_notify_will_remove_tag (buffer, tag);
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_text_tag_table_remove_buffer (GtkTextTagTable *table,
|
||||
gpointer buffer)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TEXT_TAG_TABLE (table));
|
||||
|
||||
gtk_text_tag_table_foreach (table, foreach_remove_tag, buffer);
|
||||
|
||||
table->buffers = g_slist_remove (table->buffers, buffer);
|
||||
}
|
||||
|
||||
+16
-3
@@ -1190,8 +1190,9 @@ gtk_text_view_get_iter_at_location (GtkTextView *text_view,
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
|
||||
g_return_if_fail (iter != NULL);
|
||||
g_return_if_fail (text_view->layout != NULL);
|
||||
|
||||
gtk_text_view_ensure_layout (text_view);
|
||||
|
||||
gtk_text_layout_get_iter_at_pixel (text_view->layout,
|
||||
iter,
|
||||
x,
|
||||
@@ -1218,6 +1219,8 @@ gtk_text_view_get_iter_location (GtkTextView *text_view,
|
||||
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
|
||||
g_return_if_fail (gtk_text_iter_get_buffer (iter) == get_buffer (text_view));
|
||||
|
||||
gtk_text_view_ensure_layout (text_view);
|
||||
|
||||
gtk_text_layout_get_iter_location (text_view->layout, iter, location);
|
||||
}
|
||||
|
||||
@@ -1242,6 +1245,8 @@ gtk_text_view_get_line_yrange (GtkTextView *text_view,
|
||||
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
|
||||
g_return_if_fail (gtk_text_iter_get_buffer (iter) == get_buffer (text_view));
|
||||
|
||||
gtk_text_view_ensure_layout (text_view);
|
||||
|
||||
gtk_text_layout_get_line_yrange (text_view->layout,
|
||||
iter,
|
||||
y,
|
||||
@@ -1269,6 +1274,8 @@ gtk_text_view_get_line_at_y (GtkTextView *text_view,
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
|
||||
|
||||
gtk_text_view_ensure_layout (text_view);
|
||||
|
||||
gtk_text_layout_get_line_at_y (text_view->layout,
|
||||
target_iter,
|
||||
y,
|
||||
@@ -6845,7 +6852,7 @@ buffer_to_text_window (GtkTextView *text_view,
|
||||
/**
|
||||
* gtk_text_view_buffer_to_window_coords:
|
||||
* @text_view: a #GtkTextView
|
||||
* @win: a #GtkTextWindowType
|
||||
* @win: a #GtkTextWindowType except #GTK_TEXT_WINDOW_PRIVATE
|
||||
* @buffer_x: buffer x coordinate
|
||||
* @buffer_y: buffer y coordinate
|
||||
* @window_x: window x coordinate return location
|
||||
@@ -6853,6 +6860,9 @@ buffer_to_text_window (GtkTextView *text_view,
|
||||
*
|
||||
* Converts coordinate (@buffer_x, @buffer_y) to coordinates for the window
|
||||
* @win, and stores the result in (@window_x, @window_y).
|
||||
*
|
||||
* Note that you can't convert coordinates for a nonexisting window (see
|
||||
* gtk_text_view_set_border_window_size()).
|
||||
**/
|
||||
void
|
||||
gtk_text_view_buffer_to_window_coords (GtkTextView *text_view,
|
||||
@@ -6982,7 +6992,7 @@ text_window_to_buffer (GtkTextView *text_view,
|
||||
/**
|
||||
* gtk_text_view_window_to_buffer_coords:
|
||||
* @text_view: a #GtkTextView
|
||||
* @win: a #GtkTextWindowType
|
||||
* @win: a #GtkTextWindowType except #GTK_TEXT_WINDOW_PRIVATE
|
||||
* @window_x: window x coordinate
|
||||
* @window_y: window y coordinate
|
||||
* @buffer_x: buffer x coordinate return location
|
||||
@@ -6990,6 +7000,9 @@ text_window_to_buffer (GtkTextView *text_view,
|
||||
*
|
||||
* Converts coordinates on the window identified by @win to buffer
|
||||
* coordinates, storing the result in (@buffer_x,@buffer_y).
|
||||
*
|
||||
* Note that you can't convert coordinates for a nonexisting window (see
|
||||
* gtk_text_view_set_border_window_size()).
|
||||
**/
|
||||
void
|
||||
gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
|
||||
|
||||
+43
-19
@@ -30,6 +30,8 @@
|
||||
|
||||
#include "gtklabel.h"
|
||||
#include "gtkmain.h"
|
||||
#include "gtkmenuitem.h"
|
||||
#include "gtkprivate.h"
|
||||
#include "gtkwidget.h"
|
||||
#include "gtkwindow.h"
|
||||
#include "gtksignal.h"
|
||||
@@ -513,6 +515,31 @@ stop_keyboard_mode (GtkWidget *widget)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tooltips_start_delay (GtkTooltips *tooltips,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
GtkTooltipsData *old_tips_data;
|
||||
|
||||
old_tips_data = tooltips->active_tips_data;
|
||||
if (tooltips->enabled &&
|
||||
(!old_tips_data || old_tips_data->widget != widget))
|
||||
{
|
||||
guint delay;
|
||||
|
||||
gtk_tooltips_set_active_widget (tooltips, widget);
|
||||
|
||||
if (tooltips->use_sticky_delay &&
|
||||
gtk_tooltips_recently_shown (tooltips))
|
||||
delay = STICKY_DELAY;
|
||||
else
|
||||
delay = tooltips->delay;
|
||||
tooltips->timer_tag = gtk_timeout_add (delay,
|
||||
gtk_tooltips_timeout,
|
||||
(gpointer) tooltips);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tooltips_event_handler (GtkWidget *widget,
|
||||
GdkEvent *event)
|
||||
@@ -554,29 +581,12 @@ gtk_tooltips_event_handler (GtkWidget *widget,
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_MOTION_NOTIFY:
|
||||
case GDK_EXPOSE:
|
||||
/* do nothing */
|
||||
break;
|
||||
|
||||
case GDK_ENTER_NOTIFY:
|
||||
old_tips_data = tooltips->active_tips_data;
|
||||
if (tooltips->enabled &&
|
||||
(!old_tips_data || old_tips_data->widget != widget))
|
||||
{
|
||||
guint delay;
|
||||
|
||||
gtk_tooltips_set_active_widget (tooltips, widget);
|
||||
|
||||
if (tooltips->use_sticky_delay &&
|
||||
gtk_tooltips_recently_shown (tooltips))
|
||||
delay = STICKY_DELAY;
|
||||
else
|
||||
delay = tooltips->delay;
|
||||
tooltips->timer_tag = gtk_timeout_add (delay,
|
||||
gtk_tooltips_timeout,
|
||||
(gpointer) tooltips);
|
||||
}
|
||||
if (!(GTK_IS_MENU_ITEM (widget) && GTK_MENU_ITEM (widget)->submenu))
|
||||
gtk_tooltips_start_delay (tooltips, widget);
|
||||
break;
|
||||
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
@@ -590,6 +600,20 @@ gtk_tooltips_event_handler (GtkWidget *widget,
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_MOTION_NOTIFY:
|
||||
/* Handle menu items specially ... pend popup for each motion
|
||||
* on other widgets, we ignore motion.
|
||||
*/
|
||||
if (GTK_IS_MENU_ITEM (widget) && !GTK_MENU_ITEM (widget)->submenu)
|
||||
{
|
||||
/* Completely evil hack to make sure we get the LEAVE_NOTIFY
|
||||
*/
|
||||
GTK_PRIVATE_SET_FLAG (widget, GTK_LEAVE_PENDING);
|
||||
gtk_tooltips_set_active_widget (tooltips, NULL);
|
||||
gtk_tooltips_start_delay (tooltips, widget);
|
||||
break;
|
||||
}
|
||||
break; /* ignore */
|
||||
case GDK_BUTTON_PRESS:
|
||||
case GDK_BUTTON_RELEASE:
|
||||
case GDK_KEY_PRESS:
|
||||
|
||||
+25
-1
@@ -29,6 +29,15 @@
|
||||
#include "gtksignal.h"
|
||||
|
||||
|
||||
#define INITIALIZE_TREE_ITER(Iter) \
|
||||
G_STMT_START{ \
|
||||
(Iter)->stamp = 0; \
|
||||
(Iter)->user_data = NULL; \
|
||||
(Iter)->user_data2 = NULL; \
|
||||
(Iter)->user_data3 = NULL; \
|
||||
}G_STMT_END
|
||||
|
||||
|
||||
struct _GtkTreePath
|
||||
{
|
||||
gint depth;
|
||||
@@ -674,6 +683,8 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model,
|
||||
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter != NULL, FALSE);
|
||||
g_return_val_if_fail (path->depth > 0, FALSE);
|
||||
|
||||
INITIALIZE_TREE_ITER (iter);
|
||||
|
||||
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->get_iter) (tree_model, iter, path);
|
||||
}
|
||||
|
||||
@@ -825,6 +836,8 @@ gtk_tree_model_iter_children (GtkTreeModel *tree_model,
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children != NULL, FALSE);
|
||||
|
||||
INITIALIZE_TREE_ITER (iter);
|
||||
|
||||
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_children) (tree_model, iter, parent);
|
||||
}
|
||||
|
||||
@@ -894,6 +907,8 @@ gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model,
|
||||
g_return_val_if_fail (n >= 0, FALSE);
|
||||
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child != NULL, FALSE);
|
||||
|
||||
INITIALIZE_TREE_ITER (iter);
|
||||
|
||||
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_nth_child) (tree_model, iter, parent, n);
|
||||
}
|
||||
|
||||
@@ -920,6 +935,8 @@ gtk_tree_model_iter_parent (GtkTreeModel *tree_model,
|
||||
g_return_val_if_fail (child != NULL, FALSE);
|
||||
g_return_val_if_fail (GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_parent != NULL, FALSE);
|
||||
|
||||
INITIALIZE_TREE_ITER (iter);
|
||||
|
||||
return (* GTK_TREE_MODEL_GET_IFACE (tree_model)->iter_parent) (tree_model, iter, child);
|
||||
}
|
||||
|
||||
@@ -1368,7 +1385,14 @@ gtk_tree_row_ref_deleted_callback (GObject *object,
|
||||
/* We know it affects us. */
|
||||
if (path->indices[i] == reference->path->indices[i])
|
||||
{
|
||||
gtk_tree_row_reference_unref_path (reference->path, reference->model, reference->path->depth - 1);
|
||||
if (reference->path->depth > path->depth)
|
||||
/* some parent was deleted, trying to unref any node
|
||||
* between the deleted parent and the node the reference
|
||||
* is pointing to is bad, as those nodes are already gone.
|
||||
*/
|
||||
gtk_tree_row_reference_unref_path (reference->path, reference->model, path->depth - 1);
|
||||
else
|
||||
gtk_tree_row_reference_unref_path (reference->path, reference->model, reference->path->depth - 1);
|
||||
gtk_tree_path_free (reference->path);
|
||||
reference->path = NULL;
|
||||
}
|
||||
|
||||
+29
-12
@@ -1272,10 +1272,14 @@ gtk_tree_model_sort_set_sort_func (GtkTreeSortable *sortable,
|
||||
|
||||
for (list = tree_model_sort->sort_list; list; list = list->next)
|
||||
{
|
||||
header = (GtkTreeDataSortHeader *) list->data;
|
||||
GtkTreeDataSortHeader *list_header;
|
||||
|
||||
if (header->sort_column_id == sort_column_id)
|
||||
break;
|
||||
list_header = (GtkTreeDataSortHeader*) list->data;
|
||||
if (list_header->sort_column_id == sort_column_id)
|
||||
{
|
||||
header = list_header;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (header == NULL)
|
||||
@@ -1937,9 +1941,10 @@ gtk_tree_model_sort_convert_child_iter_to_iter (GtkTreeModelSort *tree_model_sor
|
||||
* @tree_model_sort: A #GtkTreeModelSort
|
||||
* @sorted_path: A #GtkTreePath to convert
|
||||
*
|
||||
* Converts @sort_path to a path on the child model of @tree_model_sort. That
|
||||
* is, @sort_path points ot a location in @tree_model_sort. The returned path
|
||||
* will point to the same location in the model not being sorted. If @path does not point to a
|
||||
* Converts @sorted_path to a path on the child model of @tree_model_sort. That
|
||||
* is, @sorted_path points to a location in @tree_model_sort. The returned path
|
||||
* will point to the same location in the model not being sorted. If @sorted_path
|
||||
* does not point to a location in the child model, %NULL is returned.
|
||||
*
|
||||
* Return value: A newly allocated #GtkTreePath, or %NULL
|
||||
**/
|
||||
@@ -1964,19 +1969,26 @@ gtk_tree_model_sort_convert_path_to_child_path (GtkTreeModelSort *tree_model_sor
|
||||
|
||||
for (i = 0; i < gtk_tree_path_get_depth (sorted_path); i++)
|
||||
{
|
||||
gint count = sorted_indices[i];
|
||||
|
||||
if ((level == NULL) ||
|
||||
(level->array->len <= sorted_indices[i]))
|
||||
(level->array->len <= count))
|
||||
{
|
||||
gtk_tree_path_free (retval);
|
||||
return NULL;
|
||||
}
|
||||
if (g_array_index (level->array, SortElt, sorted_indices[i]).children == NULL)
|
||||
gtk_tree_model_sort_build_level (tree_model_sort, level, &g_array_index (level->array, SortElt, sorted_indices[i]));
|
||||
|
||||
if (g_array_index (level->array, SortElt, count).children == NULL)
|
||||
gtk_tree_model_sort_build_level (tree_model_sort, level, &g_array_index (level->array, SortElt, count));
|
||||
|
||||
if (level == NULL)
|
||||
break;
|
||||
{
|
||||
gtk_tree_path_free (retval);
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_tree_path_append_index (retval, g_array_index (level->array, SortElt, i).offset);
|
||||
gtk_tree_path_append_index (retval, g_array_index (level->array, SortElt, count).offset);
|
||||
level = g_array_index (level->array, SortElt, count).children;
|
||||
}
|
||||
|
||||
return retval;
|
||||
@@ -2192,7 +2204,9 @@ gtk_tree_model_sort_clear_cache_helper (GtkTreeModelSort *tree_model_sort,
|
||||
* @tree_model_sort: A #GtkTreeModelSort
|
||||
*
|
||||
* This resets the default sort function to be in the 'unsorted' state. That
|
||||
* is, it is in the same order as the child model.
|
||||
* is, it is in the same order as the child model. It will re-sort the model
|
||||
* to be in the same order as the child model only if the #GtkTreeModelSort
|
||||
* is in 'unsorted' state.
|
||||
**/
|
||||
void
|
||||
gtk_tree_model_sort_reset_default_sort_func (GtkTreeModelSort *tree_model_sort)
|
||||
@@ -2210,6 +2224,9 @@ gtk_tree_model_sort_reset_default_sort_func (GtkTreeModelSort *tree_model_sort)
|
||||
tree_model_sort->default_sort_func = NO_SORT_FUNC;
|
||||
tree_model_sort->default_sort_data = NULL;
|
||||
tree_model_sort->default_sort_destroy = NULL;
|
||||
|
||||
if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
gtk_tree_model_sort_sort (tree_model_sort);
|
||||
tree_model_sort->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID;
|
||||
}
|
||||
|
||||
|
||||
@@ -101,8 +101,8 @@ struct _GtkTreeViewPrivate
|
||||
GdkWindow *drag_highlight_window;
|
||||
GtkTreeViewColumn *drag_column;
|
||||
|
||||
GtkTreeRowReference *last_single_clicked;
|
||||
GtkTreeRowReference *last_single_clicked_2;
|
||||
GtkTreeRowReference *last_button_press;
|
||||
GtkTreeRowReference *last_button_press_2;
|
||||
|
||||
/* bin_window offset */
|
||||
GtkTreeRowReference *top_row;
|
||||
@@ -311,9 +311,13 @@ gboolean _gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column,
|
||||
void _gtk_tree_view_column_start_editing (GtkTreeViewColumn *tree_column,
|
||||
GtkCellEditable *editable_widget);
|
||||
void _gtk_tree_view_column_stop_editing (GtkTreeViewColumn *tree_column);
|
||||
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
|
||||
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
|
||||
void _gtk_tree_view_column_autosize (GtkTreeView *tree_view,
|
||||
GtkTreeViewColumn *column);
|
||||
|
||||
gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column);
|
||||
GtkCellRenderer *_gtk_tree_view_column_get_editable_cell (GtkTreeViewColumn *column);
|
||||
gint _gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column);
|
||||
|
||||
GtkTreeSelection* _gtk_tree_selection_new (void);
|
||||
GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view);
|
||||
|
||||
+6
-4
@@ -1137,10 +1137,10 @@ gtk_tree_store_insert (GtkTreeStore *tree_store,
|
||||
* @sibling: A valid #GtkTreeIter, or %NULL
|
||||
*
|
||||
* Inserts a new row before @sibling. If @sibling is %NULL, then the row will
|
||||
* be appended to the beginning of the @parent 's children. If @parent and
|
||||
* @sibling are %NULL, then the row will be appended to the toplevel. If both
|
||||
* @sibling and @parent are set, then @parent must be the parent of @sibling.
|
||||
* When @sibling is set, @parent is optional.
|
||||
* be appended to @parent 's children. If @parent and @sibling are %NULL, then
|
||||
* the row will be appended to the toplevel. If both @sibling and @parent are
|
||||
* set, then @parent must be the parent of @sibling. When @sibling is set,
|
||||
* @parent is optional.
|
||||
*
|
||||
* @iter will be changed to point to this new row. The row will be empty after
|
||||
* this function is called. To fill in values, you need to call
|
||||
@@ -2042,6 +2042,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store,
|
||||
prev->next = next;
|
||||
else
|
||||
node->parent->children = next;
|
||||
|
||||
if (next)
|
||||
next->prev = prev;
|
||||
|
||||
@@ -2086,6 +2087,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store,
|
||||
else
|
||||
{
|
||||
G_NODE (iter->user_data)->next = G_NODE (iter->user_data)->parent->children;
|
||||
G_NODE (iter->user_data)->next->prev = G_NODE (iter->user_data);
|
||||
G_NODE (iter->user_data)->parent->children = G_NODE (iter->user_data);
|
||||
}
|
||||
|
||||
|
||||
+168
-92
@@ -347,8 +347,6 @@ static void gtk_tree_view_real_set_cursor (GtkTreeView
|
||||
GtkTreePath *path,
|
||||
gboolean clear_and_select,
|
||||
gboolean clamp_node);
|
||||
static void gtk_tree_view_column_autosize (GtkTreeView *tree_view,
|
||||
GtkTreeViewColumn *tree_column);
|
||||
|
||||
/* interactive search */
|
||||
static void gtk_tree_view_search_dialog_destroy (GtkWidget *search_dialog,
|
||||
@@ -1102,16 +1100,16 @@ gtk_tree_view_destroy (GtkObject *object)
|
||||
tree_view->priv->drag_dest_row = NULL;
|
||||
}
|
||||
|
||||
if (tree_view->priv->last_single_clicked != NULL)
|
||||
if (tree_view->priv->last_button_press != NULL)
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_single_clicked);
|
||||
tree_view->priv->last_single_clicked = NULL;
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press);
|
||||
tree_view->priv->last_button_press = NULL;
|
||||
}
|
||||
|
||||
if (tree_view->priv->last_single_clicked_2 != NULL)
|
||||
if (tree_view->priv->last_button_press_2 != NULL)
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_single_clicked_2);
|
||||
tree_view->priv->last_single_clicked_2 = NULL;
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press_2);
|
||||
tree_view->priv->last_button_press_2 = NULL;
|
||||
}
|
||||
|
||||
if (tree_view->priv->top_row != NULL)
|
||||
@@ -1650,7 +1648,7 @@ gtk_tree_view_size_allocate (GtkWidget *widget,
|
||||
tree_view->priv->vadjustment->lower = 0;
|
||||
tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->page_size, tree_view->priv->height);
|
||||
|
||||
if (tree_view->priv->vadjustment->value + allocation->height > tree_view->priv->height)
|
||||
if (tree_view->priv->vadjustment->value + allocation->height - TREE_VIEW_HEADER_HEIGHT (tree_view) > tree_view->priv->height)
|
||||
gtk_adjustment_set_value (tree_view->priv->vadjustment,
|
||||
MAX (tree_view->priv->height - tree_view->priv->vadjustment->page_size, 0));
|
||||
gtk_adjustment_changed (tree_view->priv->vadjustment);
|
||||
@@ -1790,20 +1788,25 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
|
||||
/* decide if we edit */
|
||||
if (event->type == GDK_BUTTON_PRESS &&
|
||||
!(event->state & gtk_accelerator_get_default_mod_mask ()) &&
|
||||
tree_view->priv->cursor)
|
||||
!(event->state & gtk_accelerator_get_default_mod_mask ()))
|
||||
{
|
||||
GtkTreePath *cursor = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
|
||||
GtkTreePath *anchor;
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_tree_model_get_iter (tree_view->priv->model, &iter, path);
|
||||
gtk_tree_view_column_cell_set_cell_data (column,
|
||||
tree_view->priv->model,
|
||||
&iter,
|
||||
GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT),
|
||||
node->children?TRUE:FALSE);
|
||||
if (tree_view->priv->anchor)
|
||||
{
|
||||
anchor = gtk_tree_row_reference_get_path (tree_view->priv->anchor);
|
||||
gtk_tree_model_get_iter (tree_view->priv->model, &iter, path);
|
||||
gtk_tree_view_column_cell_set_cell_data (column,
|
||||
tree_view->priv->model,
|
||||
&iter,
|
||||
GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT),
|
||||
node->children?TRUE:FALSE);
|
||||
}
|
||||
else
|
||||
anchor = NULL;
|
||||
|
||||
if ((cursor && !gtk_tree_path_compare (cursor, path))
|
||||
if ((anchor && !gtk_tree_path_compare (anchor, path))
|
||||
|| !_gtk_tree_view_column_has_editable_cell (column))
|
||||
{
|
||||
GtkCellEditable *cell_editable = NULL;
|
||||
@@ -1839,15 +1842,15 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
(GdkEvent *)event,
|
||||
flags);
|
||||
gtk_tree_path_free (path);
|
||||
gtk_tree_path_free (cursor);
|
||||
gtk_tree_path_free (anchor);
|
||||
return TRUE;
|
||||
}
|
||||
column_handled_click = TRUE;
|
||||
}
|
||||
g_free (path_string);
|
||||
}
|
||||
if (cursor)
|
||||
gtk_tree_path_free (cursor);
|
||||
if (anchor)
|
||||
gtk_tree_path_free (anchor);
|
||||
}
|
||||
|
||||
/* select */
|
||||
@@ -1890,18 +1893,18 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
}
|
||||
|
||||
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS &&
|
||||
tree_view->priv->last_single_clicked)
|
||||
tree_view->priv->last_button_press)
|
||||
{
|
||||
GtkTreePath *lsc;
|
||||
|
||||
lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_single_clicked);
|
||||
lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
|
||||
|
||||
if (tree_view->priv->last_single_clicked)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_single_clicked);
|
||||
if (tree_view->priv->last_single_clicked_2)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_single_clicked_2);
|
||||
tree_view->priv->last_single_clicked = NULL;
|
||||
tree_view->priv->last_single_clicked_2 = NULL;
|
||||
if (tree_view->priv->last_button_press)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press);
|
||||
if (tree_view->priv->last_button_press_2)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press_2);
|
||||
tree_view->priv->last_button_press = NULL;
|
||||
tree_view->priv->last_button_press_2 = NULL;
|
||||
|
||||
if (lsc)
|
||||
{
|
||||
@@ -1912,10 +1915,10 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
}
|
||||
else if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
|
||||
{
|
||||
if (tree_view->priv->last_single_clicked)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_single_clicked);
|
||||
tree_view->priv->last_single_clicked = tree_view->priv->last_single_clicked_2;
|
||||
tree_view->priv->last_single_clicked_2 = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view), tree_view->priv->model, path);
|
||||
if (tree_view->priv->last_button_press)
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press);
|
||||
tree_view->priv->last_button_press = tree_view->priv->last_button_press_2;
|
||||
tree_view->priv->last_button_press_2 = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view), tree_view->priv->model, path);
|
||||
}
|
||||
|
||||
GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
|
||||
@@ -1942,9 +1945,10 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
{
|
||||
gpointer drag_data;
|
||||
|
||||
if (event->type == GDK_2BUTTON_PRESS)
|
||||
if (event->type == GDK_2BUTTON_PRESS &&
|
||||
gtk_tree_view_column_get_sizing (column) != GTK_TREE_VIEW_COLUMN_AUTOSIZE)
|
||||
{
|
||||
gtk_tree_view_column_autosize (tree_view, column);
|
||||
_gtk_tree_view_column_autosize (tree_view, column);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2270,9 +2274,12 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
|
||||
|
||||
if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ORIGINAL)
|
||||
{
|
||||
|
||||
if (tree_view->priv->drag_highlight_window)
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
{
|
||||
gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
|
||||
NULL);
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
}
|
||||
|
||||
attributes.window_type = GDK_WINDOW_CHILD;
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
@@ -2331,7 +2338,11 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
|
||||
if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ARROW)
|
||||
{
|
||||
if (tree_view->priv->drag_highlight_window)
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
{
|
||||
gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
|
||||
NULL);
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
}
|
||||
|
||||
attributes.window_type = GDK_WINDOW_TEMP;
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
@@ -2400,7 +2411,11 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
|
||||
tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT)
|
||||
{
|
||||
if (tree_view->priv->drag_highlight_window)
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
{
|
||||
gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
|
||||
NULL);
|
||||
gdk_window_destroy (tree_view->priv->drag_highlight_window);
|
||||
}
|
||||
|
||||
attributes.window_type = GDK_WINDOW_TEMP;
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
@@ -4220,6 +4235,28 @@ _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view)
|
||||
install_presize_handler (tree_view);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function works synchronously (due to the while (do_validate_rows...)
|
||||
* loop).
|
||||
*
|
||||
* There was a check for column_type != GTK_TREE_VIEW_COLUMN_AUTOSIZE
|
||||
* here. You now need to check that yourself.
|
||||
*/
|
||||
void
|
||||
_gtk_tree_view_column_autosize (GtkTreeView *tree_view,
|
||||
GtkTreeViewColumn *column)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
|
||||
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column));
|
||||
|
||||
_gtk_tree_view_column_cell_set_dirty (column, FALSE);
|
||||
|
||||
do_presize_handler (tree_view);
|
||||
while (do_validate_rows (tree_view));
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
|
||||
}
|
||||
|
||||
/* Drag-and-drop */
|
||||
|
||||
static void
|
||||
@@ -5650,6 +5687,9 @@ gtk_tree_view_row_changed (GtkTreeModel *model,
|
||||
*/
|
||||
return;
|
||||
|
||||
if (tree_view->priv->edited_column)
|
||||
gtk_tree_view_stop_editing (tree_view, TRUE);
|
||||
|
||||
gtk_widget_style_get (GTK_WIDGET (data), "vertical_separator", &vertical_separator, NULL);
|
||||
|
||||
if (path == NULL)
|
||||
@@ -7795,24 +7835,6 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view,
|
||||
g_object_notify (G_OBJECT (tree_view), "headers_visible");
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tree_view_column_autosize (GtkTreeView *tree_view,
|
||||
GtkTreeViewColumn *column)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
|
||||
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column));
|
||||
|
||||
if (column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE)
|
||||
return;
|
||||
|
||||
_gtk_tree_view_column_cell_set_dirty (column, FALSE);
|
||||
|
||||
do_presize_handler (tree_view);
|
||||
while (do_validate_rows (tree_view));
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_tree_view_columns_autosize:
|
||||
* @tree_view: A #GtkTreeView.
|
||||
@@ -8846,6 +8868,53 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view,
|
||||
gtk_tree_path_free (child_path);
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->cursor))
|
||||
{
|
||||
GtkTreePath *cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
|
||||
|
||||
if (gtk_tree_path_is_ancestor (path, cursor_path))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->cursor);
|
||||
tree_view->priv->cursor = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view),
|
||||
tree_view->priv->model,
|
||||
path);
|
||||
}
|
||||
gtk_tree_path_free (cursor_path);
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->anchor))
|
||||
{
|
||||
GtkTreePath *anchor_path = gtk_tree_row_reference_get_path (tree_view->priv->anchor);
|
||||
if (gtk_tree_path_is_ancestor (path, anchor_path))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->anchor);
|
||||
tree_view->priv->anchor = NULL;
|
||||
}
|
||||
gtk_tree_path_free (anchor_path);
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->last_button_press))
|
||||
{
|
||||
GtkTreePath *lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
|
||||
if (gtk_tree_path_is_ancestor (path, lsc))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press);
|
||||
tree_view->priv->last_button_press = NULL;
|
||||
}
|
||||
gtk_tree_path_free (lsc);
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->last_button_press_2))
|
||||
{
|
||||
GtkTreePath *lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press_2);
|
||||
if (gtk_tree_path_is_ancestor (path, lsc))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->last_button_press_2);
|
||||
tree_view->priv->last_button_press_2 = NULL;
|
||||
}
|
||||
gtk_tree_path_free (lsc);
|
||||
}
|
||||
|
||||
if (gtk_tree_view_unref_and_check_selection_tree (tree_view, node->children))
|
||||
{
|
||||
_gtk_rbtree_remove (node->children);
|
||||
@@ -8882,32 +8951,6 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view,
|
||||
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->cursor))
|
||||
{
|
||||
GtkTreePath *cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
|
||||
|
||||
if (gtk_tree_path_is_ancestor (path, cursor_path))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->cursor);
|
||||
tree_view->priv->cursor = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view),
|
||||
tree_view->priv->model,
|
||||
path);
|
||||
}
|
||||
gtk_tree_path_free (cursor_path);
|
||||
}
|
||||
|
||||
if (gtk_tree_row_reference_valid (tree_view->priv->anchor))
|
||||
{
|
||||
GtkTreePath *anchor_path = gtk_tree_row_reference_get_path (tree_view->priv->anchor);
|
||||
if (gtk_tree_path_is_ancestor (path, anchor_path))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->anchor);
|
||||
tree_view->priv->anchor = NULL;
|
||||
}
|
||||
gtk_tree_path_free (anchor_path);
|
||||
|
||||
}
|
||||
|
||||
g_signal_emit (G_OBJECT (tree_view), tree_view_signals[ROW_COLLAPSED], 0, &iter, path);
|
||||
|
||||
/* now that we've collapsed all rows, we want to try to set the prelight
|
||||
@@ -8981,10 +9024,10 @@ gtk_tree_view_map_expanded_rows_helper (GtkTreeView *tree_view,
|
||||
{
|
||||
if (node->children)
|
||||
{
|
||||
(* func) (tree_view, path, user_data);
|
||||
gtk_tree_path_down (path);
|
||||
gtk_tree_view_map_expanded_rows_helper (tree_view, node->children, path, func, user_data);
|
||||
gtk_tree_path_up (path);
|
||||
(* func) (tree_view, path, user_data);
|
||||
}
|
||||
gtk_tree_path_next (path);
|
||||
node = _gtk_rbtree_next (tree, node);
|
||||
@@ -9952,7 +9995,6 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view,
|
||||
&cell_area,
|
||||
&expose_area,
|
||||
0);
|
||||
|
||||
cell_offset += column->width;
|
||||
}
|
||||
|
||||
@@ -10395,8 +10437,8 @@ gtk_tree_view_search_iter (GtkTreeModel *model,
|
||||
(*count)++;
|
||||
if (*count == n)
|
||||
{
|
||||
gtk_tree_view_scroll_to_cell (tree_view, path, column,
|
||||
TRUE, 0.5, 0.5);
|
||||
gtk_tree_view_scroll_to_cell (tree_view, path, NULL,
|
||||
TRUE, 0.5, 0.0);
|
||||
gtk_tree_selection_select_iter (selection, iter);
|
||||
gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
|
||||
|
||||
@@ -10598,11 +10640,22 @@ gtk_tree_view_start_editing (GtkTreeView *tree_view,
|
||||
retval = TRUE;
|
||||
if (editable_widget != NULL)
|
||||
{
|
||||
gint left, right;
|
||||
GdkRectangle area;
|
||||
GtkCellRenderer *cell;
|
||||
|
||||
area = cell_area;
|
||||
cell = _gtk_tree_view_column_get_editable_cell (tree_view->priv->focus_column);
|
||||
_gtk_tree_view_column_get_neighbor_sizes (tree_view->priv->focus_column, cell, &left, &right);
|
||||
|
||||
area.x += left;
|
||||
area.width -= right + left;
|
||||
|
||||
gtk_tree_view_real_start_editing (tree_view,
|
||||
tree_view->priv->focus_column,
|
||||
cursor_path,
|
||||
editable_widget,
|
||||
&cell_area,
|
||||
&area,
|
||||
NULL,
|
||||
flags);
|
||||
}
|
||||
@@ -10621,9 +10674,15 @@ gtk_tree_view_real_start_editing (GtkTreeView *tree_view,
|
||||
GdkEvent *event,
|
||||
guint flags)
|
||||
{
|
||||
gint pre_val = tree_view->priv->vadjustment->value;
|
||||
|
||||
tree_view->priv->edited_column = column;
|
||||
_gtk_tree_view_column_start_editing (column, GTK_CELL_EDITABLE (cell_editable));
|
||||
|
||||
gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
|
||||
|
||||
cell_area->y += pre_val - tree_view->priv->vadjustment->value;
|
||||
|
||||
GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
|
||||
gtk_tree_view_put (tree_view,
|
||||
GTK_WIDGET (cell_editable),
|
||||
@@ -10638,11 +10697,28 @@ static void
|
||||
gtk_tree_view_stop_editing (GtkTreeView *tree_view,
|
||||
gboolean cancel_editing)
|
||||
{
|
||||
GtkTreeViewColumn *column;
|
||||
|
||||
if (tree_view->priv->edited_column == NULL)
|
||||
return;
|
||||
|
||||
if (! cancel_editing)
|
||||
gtk_cell_editable_editing_done (tree_view->priv->edited_column->editable_widget);
|
||||
/*
|
||||
* This is very evil. We need to do this, because
|
||||
* gtk_cell_editable_editing_done may trigger gtk_tree_view_row_changed
|
||||
* later on. If gtk_tree_view_row_changed notices
|
||||
* tree_view->priv->edited_column != NULL, it'll call
|
||||
* gtk_tree_view_stop_editing again. Bad things will happen then.
|
||||
*
|
||||
* Please read that again if you intend to modify anything here.
|
||||
*/
|
||||
|
||||
gtk_cell_editable_remove_widget (tree_view->priv->edited_column->editable_widget);
|
||||
column = tree_view->priv->edited_column;
|
||||
tree_view->priv->edited_column = NULL;
|
||||
|
||||
if (! cancel_editing)
|
||||
gtk_cell_editable_editing_done (column->editable_widget);
|
||||
|
||||
tree_view->priv->edited_column = column;
|
||||
|
||||
gtk_cell_editable_remove_widget (column->editable_widget);
|
||||
}
|
||||
|
||||
+107
-5
@@ -1046,7 +1046,7 @@ _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = column->cell_list; list; list = list ->next)
|
||||
for (list = column->cell_list; list; list = list->next)
|
||||
if (((GtkTreeViewColumnCellInfo *)list->data)->cell->mode ==
|
||||
GTK_CELL_RENDERER_MODE_EDITABLE)
|
||||
return TRUE;
|
||||
@@ -1059,7 +1059,7 @@ _gtk_tree_view_column_get_editable_cell (GtkTreeViewColumn *column)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = column->cell_list; list; list = list ->next)
|
||||
for (list = column->cell_list; list; list = list->next)
|
||||
if (((GtkTreeViewColumnCellInfo *)list->data)->cell->mode ==
|
||||
GTK_CELL_RENDERER_MODE_EDITABLE)
|
||||
return ((GtkTreeViewColumnCellInfo *)list->data)->cell;
|
||||
@@ -1067,6 +1067,24 @@ _gtk_tree_view_column_get_editable_cell (GtkTreeViewColumn *column)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gint
|
||||
_gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column)
|
||||
{
|
||||
gint i = 0;
|
||||
GList *list;
|
||||
|
||||
for (list = column->cell_list; list; list = list->next)
|
||||
{
|
||||
GtkTreeViewColumnCellInfo *cellinfo = list->data;
|
||||
|
||||
if (cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_EDITABLE ||
|
||||
cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE)
|
||||
i++;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/* Public Functions */
|
||||
|
||||
|
||||
@@ -1204,7 +1222,7 @@ gtk_tree_view_column_pack_end (GtkTreeViewColumn *tree_column,
|
||||
g_object_ref (G_OBJECT (cell));
|
||||
gtk_object_sink (GTK_OBJECT (cell));
|
||||
|
||||
cell_info = g_new (GtkTreeViewColumnCellInfo, 1);
|
||||
cell_info = g_new0 (GtkTreeViewColumnCellInfo, 1);
|
||||
cell_info->cell = cell;
|
||||
cell_info->expand = expand ? TRUE : FALSE;
|
||||
cell_info->pack = GTK_PACK_END;
|
||||
@@ -1711,6 +1729,10 @@ gtk_tree_view_column_set_min_width (GtkTreeViewColumn *tree_column,
|
||||
}
|
||||
g_object_notify (G_OBJECT (tree_column), "min_width");
|
||||
g_object_thaw_notify (G_OBJECT (tree_column));
|
||||
|
||||
if (tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE)
|
||||
_gtk_tree_view_column_autosize (GTK_TREE_VIEW (tree_column->tree_view),
|
||||
tree_column);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1767,6 +1789,10 @@ gtk_tree_view_column_set_max_width (GtkTreeViewColumn *tree_column,
|
||||
}
|
||||
g_object_notify (G_OBJECT (tree_column), "max_width");
|
||||
g_object_thaw_notify (G_OBJECT (tree_column));
|
||||
|
||||
if (tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE)
|
||||
_gtk_tree_view_column_autosize (GTK_TREE_VIEW (tree_column->tree_view),
|
||||
tree_column);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2400,12 +2426,22 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column,
|
||||
|
||||
if (event)
|
||||
{
|
||||
if (real_cell_area.x <= ((GdkEventButton *)event)->x &&
|
||||
if (_gtk_tree_view_column_count_special_cells (tree_column) == 1)
|
||||
{
|
||||
/* only 1 activatable cell -> whole column can activate */
|
||||
if (cell_area->x <= ((GdkEventButton *)event)->x &&
|
||||
cell_area->x + cell_area->width > ((GdkEventButton *)event)->x)
|
||||
try_event = TRUE;
|
||||
}
|
||||
else if (real_cell_area.x <= ((GdkEventButton *)event)->x &&
|
||||
real_cell_area.x + real_cell_area.width > ((GdkEventButton *)event)->x)
|
||||
/* only activate cell if the user clicked on an individual
|
||||
* cell
|
||||
*/
|
||||
try_event = TRUE;
|
||||
}
|
||||
else /* if (info->has_focus)*/
|
||||
/* FIXME 73676: allow focusing individual cells */
|
||||
/* FIXME 73676: allow focusing individual cells (fixed on HEAD) */
|
||||
{
|
||||
try_event = TRUE;
|
||||
}
|
||||
@@ -2492,6 +2528,70 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column,
|
||||
if (max_y < real_cell_area.y + y_offset + height)
|
||||
max_y = real_cell_area.y + y_offset + height;
|
||||
}
|
||||
else if (action == CELL_ACTION_EVENT)
|
||||
{
|
||||
gboolean try_event = FALSE;
|
||||
|
||||
if (event)
|
||||
{
|
||||
if (_gtk_tree_view_column_count_special_cells (tree_column) == 1)
|
||||
{
|
||||
/* only 1 activatable cell -> whole column can activate */
|
||||
if (cell_area->x <= ((GdkEventButton *)event)->x &&
|
||||
cell_area->x + cell_area->width > ((GdkEventButton *)event)->x)
|
||||
try_event = TRUE;
|
||||
}
|
||||
else if (real_cell_area.x <= ((GdkEventButton *)event)->x &&
|
||||
real_cell_area.x + real_cell_area.width > ((GdkEventButton *)event)->x)
|
||||
/* only activate cell if the user clicked on an individual
|
||||
* cell
|
||||
*/
|
||||
try_event = TRUE;
|
||||
}
|
||||
else /* if (info->has_focus) */
|
||||
/* FIXME 73676: allow focusing individual cells (fixed on HEAD) */
|
||||
{
|
||||
try_event = TRUE;
|
||||
}
|
||||
if (try_event)
|
||||
{
|
||||
gboolean visible, mode;
|
||||
|
||||
g_object_get (G_OBJECT (info->cell),
|
||||
"visible", &visible,
|
||||
"mode", &mode,
|
||||
NULL);
|
||||
if (visible && mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE)
|
||||
{
|
||||
if (gtk_cell_renderer_activate (info->cell,
|
||||
event,
|
||||
tree_column->tree_view,
|
||||
path_string,
|
||||
background_area,
|
||||
cell_area,
|
||||
flags))
|
||||
return TRUE;
|
||||
}
|
||||
else if (visible && mode == GTK_CELL_RENDERER_MODE_EDITABLE)
|
||||
{
|
||||
*editable_widget =
|
||||
gtk_cell_renderer_start_editing (info->cell,
|
||||
event,
|
||||
tree_column->tree_view,
|
||||
path_string,
|
||||
background_area,
|
||||
cell_area,
|
||||
flags);
|
||||
|
||||
if (*editable_widget != NULL)
|
||||
{
|
||||
g_return_val_if_fail (GTK_IS_CELL_EDITABLE (*editable_widget), FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
real_cell_area.x += (info->requested_width + tree_column->spacing);
|
||||
}
|
||||
|
||||
@@ -2659,6 +2759,8 @@ gtk_tree_view_column_cell_is_visible (GtkTreeViewColumn *tree_column)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE);
|
||||
|
||||
for (list = tree_column->cell_list; list; list = list->next)
|
||||
{
|
||||
GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data;
|
||||
|
||||
+1
-1
@@ -477,7 +477,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
|
||||
PROP_COMPOSITE_CHILD,
|
||||
g_param_spec_boolean ("composite_child",
|
||||
_("Composite child"),
|
||||
_("Whether the widget is composed of other widgets"),
|
||||
_("Whether the widget is part of a composite widget"),
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
|
||||
+69
-34
@@ -40,6 +40,7 @@
|
||||
#include "gtkiconfactory.h"
|
||||
#include "gtkintl.h"
|
||||
#include "gtkmarshalers.h"
|
||||
#include "gtkplug.h"
|
||||
|
||||
enum {
|
||||
SET_FOCUS,
|
||||
@@ -68,6 +69,10 @@ enum {
|
||||
PROP_DEFAULT_HEIGHT,
|
||||
PROP_DESTROY_WITH_PARENT,
|
||||
PROP_ICON,
|
||||
|
||||
/* Readonly properties */
|
||||
PROP_ACTIVE,
|
||||
PROP_FOCUS_IN_TOPLEVEL,
|
||||
|
||||
LAST_ARG
|
||||
};
|
||||
@@ -3087,7 +3092,11 @@ gtk_window_show (GtkWidget *widget)
|
||||
|
||||
/* Try to make sure that we have some focused widget
|
||||
*/
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
if (!window->focus_widget && !GTK_IS_PLUG (window))
|
||||
#else
|
||||
if (!window->focus_widget)
|
||||
#endif
|
||||
gtk_window_move_focus (window, GTK_DIR_TAB_FORWARD);
|
||||
|
||||
if (window->modal)
|
||||
@@ -3255,7 +3264,7 @@ gtk_window_realize (GtkWidget *widget)
|
||||
|
||||
attributes.window_type = GDK_WINDOW_CHILD;
|
||||
attributes.x = window->frame_left;
|
||||
attributes.y = window->frame_right;
|
||||
attributes.y = window->frame_top;
|
||||
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y;
|
||||
|
||||
@@ -3474,6 +3483,7 @@ gtk_window_configure_event (GtkWidget *widget,
|
||||
GdkEventConfigure *event)
|
||||
{
|
||||
GtkWindow *window = GTK_WINDOW (widget);
|
||||
gboolean expected_reply = window->configure_request_count > 0;
|
||||
|
||||
/* window->configure_request_count incremented for each
|
||||
* configure request, and decremented to a min of 0 for
|
||||
@@ -3498,7 +3508,7 @@ gtk_window_configure_event (GtkWidget *widget,
|
||||
* notifies and can wait to resize when we get them
|
||||
*/
|
||||
|
||||
if (window->configure_request_count > 0 ||
|
||||
if (!expected_reply &&
|
||||
(widget->allocation.width == event->width &&
|
||||
widget->allocation.height == event->height))
|
||||
return TRUE;
|
||||
@@ -3842,8 +3852,20 @@ static void
|
||||
gtk_window_real_set_focus (GtkWindow *window,
|
||||
GtkWidget *focus)
|
||||
{
|
||||
GtkWidget *old_focus = window->focus_widget;
|
||||
gboolean def_flags = 0;
|
||||
|
||||
if (old_focus)
|
||||
{
|
||||
g_object_ref (old_focus);
|
||||
g_object_freeze_notify (G_OBJECT (old_focus));
|
||||
}
|
||||
if (focus)
|
||||
{
|
||||
g_object_ref (focus);
|
||||
g_object_freeze_notify (G_OBJECT (focus));
|
||||
}
|
||||
|
||||
if (window->default_widget)
|
||||
def_flags = GTK_WIDGET_HAS_DEFAULT (window->default_widget);
|
||||
|
||||
@@ -3883,6 +3905,17 @@ gtk_window_real_set_focus (GtkWindow *window,
|
||||
if (window->default_widget &&
|
||||
(def_flags != GTK_WIDGET_FLAGS (window->default_widget)))
|
||||
gtk_widget_queue_draw (window->default_widget);
|
||||
|
||||
if (old_focus)
|
||||
{
|
||||
g_object_thaw_notify (G_OBJECT (old_focus));
|
||||
g_object_unref (old_focus);
|
||||
}
|
||||
if (focus)
|
||||
{
|
||||
g_object_thaw_notify (G_OBJECT (focus));
|
||||
g_object_unref (focus);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************
|
||||
@@ -4273,38 +4306,38 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
/* this is the position from the last configure notify */
|
||||
gdk_window_get_position (widget->window, ¬ify_x, ¬ify_y);
|
||||
|
||||
g_print ("--- %s ---\n"
|
||||
"last : %d,%d\t%d x %d\n"
|
||||
"this : %d,%d\t%d x %d\n"
|
||||
"alloc : %d,%d\t%d x %d\n"
|
||||
"req : \t%d x %d\n"
|
||||
"resize: \t%d x %d\n"
|
||||
"size_changed: %d pos_changed: %d hints_changed: %d\n"
|
||||
"configure_notify_received: %d\n"
|
||||
"configure_request_count: %d\n"
|
||||
"position_constraints_changed: %d\n",
|
||||
window->title ? window->title : "(no title)",
|
||||
info->last.configure_request.x,
|
||||
info->last.configure_request.y,
|
||||
info->last.configure_request.width,
|
||||
info->last.configure_request.height,
|
||||
new_request.x,
|
||||
new_request.y,
|
||||
new_request.width,
|
||||
new_request.height,
|
||||
notify_x, notify_y,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height,
|
||||
widget->requisition.width,
|
||||
widget->requisition.height,
|
||||
info->resize_width,
|
||||
info->resize_height,
|
||||
configure_request_pos_changed,
|
||||
configure_request_size_changed,
|
||||
hints_changed,
|
||||
window->configure_notify_received,
|
||||
window->configure_request_count,
|
||||
info->position_constraints_changed);
|
||||
g_message ("--- %s ---\n"
|
||||
"last : %d,%d\t%d x %d\n"
|
||||
"this : %d,%d\t%d x %d\n"
|
||||
"alloc : %d,%d\t%d x %d\n"
|
||||
"req : \t%d x %d\n"
|
||||
"resize: \t%d x %d\n"
|
||||
"size_changed: %d pos_changed: %d hints_changed: %d\n"
|
||||
"configure_notify_received: %d\n"
|
||||
"configure_request_count: %d\n"
|
||||
"position_constraints_changed: %d\n",
|
||||
window->title ? window->title : "(no title)",
|
||||
info->last.configure_request.x,
|
||||
info->last.configure_request.y,
|
||||
info->last.configure_request.width,
|
||||
info->last.configure_request.height,
|
||||
new_request.x,
|
||||
new_request.y,
|
||||
new_request.width,
|
||||
new_request.height,
|
||||
notify_x, notify_y,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height,
|
||||
widget->requisition.width,
|
||||
widget->requisition.height,
|
||||
info->resize_width,
|
||||
info->resize_height,
|
||||
configure_request_pos_changed,
|
||||
configure_request_size_changed,
|
||||
hints_changed,
|
||||
window->configure_notify_received,
|
||||
window->configure_request_count,
|
||||
info->position_constraints_changed);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -4504,6 +4537,8 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
else
|
||||
gdk_window_move (widget->window,
|
||||
new_request.x, new_request.y);
|
||||
|
||||
info->initial_pos_set = FALSE;
|
||||
}
|
||||
|
||||
/* And run the resize queue.
|
||||
|
||||
+24
-14
@@ -257,20 +257,30 @@ VARIABLES6 = @STRIP_BEGIN@ \
|
||||
noinst_DATA = gtkstockpixbufs.h
|
||||
CLEANFILES = $(noinst_DATA)
|
||||
|
||||
pixbuf_dir = $(top_builddir)/gdk-pixbuf
|
||||
if CROSS_COMPILING
|
||||
pixbuf_csource=$(GDK_PIXBUF_CSOURCE)
|
||||
else
|
||||
pixbuf_csource=GDK_PIXBUF_MODULEDIR=$(top_builddir)/gdk-pixbuf $(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource
|
||||
endif
|
||||
|
||||
gtkstockpixbufs.h: $(pixbuf_dir)/gdk-pixbuf-csource $(IMAGES)
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES1) >$(srcdir)/gtkstockpixbufs.h
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES2) >>$(srcdir)/gtkstockpixbufs.h
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES3) >>$(srcdir)/gtkstockpixbufs.h
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES4) >>$(srcdir)/gtkstockpixbufs.h
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES5) >>$(srcdir)/gtkstockpixbufs.h
|
||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \
|
||||
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES6) >>$(srcdir)/gtkstockpixbufs.h
|
||||
gtkstockpixbufs.h: @REBUILD_PNGS@ $(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource $(IMAGES)
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES1) > $(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES2) >>$(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES3) >>$(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES4) >>$(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES5) >>$(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
$(pixbuf_csource) \
|
||||
--raw --build-list $(VARIABLES6) >>$(srcdir)/gtkstockpixbufs.h || \
|
||||
( rm -f $(srcdir)/gtkstockpixbufs.h && false )
|
||||
|
||||
EXTRA_DIST = $(IMAGES) gtkstockpixbufs.h
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 237 B |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user