Compare commits
87 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ad891783f2 | |||
| bd8e4ec9c7 | |||
| 56bf242952 | |||
| b05973ad54 | |||
| eb6822c2ca | |||
| 69e5d23af7 | |||
| 94d641664a | |||
| b11de91341 | |||
| f1a895f5cf | |||
| d7fc46eb8a | |||
| b5ebedc782 | |||
| c012d1fe9e | |||
| b92af6e16b | |||
| 43de9ea350 | |||
| 9bc1460bca | |||
| acd43b3ee6 | |||
| 0745fd5c6c | |||
| 592df75970 | |||
| 545ef43527 | |||
| fee332c6dc | |||
| 6ab8762032 | |||
| 704fd74f2b | |||
| d23d7f9916 | |||
| f1f9bf8a38 | |||
| b0e495309d | |||
| 1e11759ffd | |||
| 30a9e56179 | |||
| a3883873ce | |||
| 9c99f64bda | |||
| d87fb4cab8 | |||
| 1f1e466e88 | |||
| 715f735051 | |||
| 4184031fab | |||
| 9ef77ef39c | |||
| 7e12070078 | |||
| a5c0d28e10 | |||
| e0c849739d | |||
| a0f421f6eb | |||
| d703d86055 | |||
| 58ee037434 | |||
| 6d006849aa | |||
| 8fcedda777 | |||
| 45e801df00 | |||
| 02dbda7fac | |||
| 15f799d645 | |||
| 365bd26d3c | |||
| e344b9e864 | |||
| a4f1d8e6ea | |||
| 1657870198 | |||
| d90f3e1479 | |||
| 32caaf841d | |||
| c84b10e5bb | |||
| f4504ac5a2 | |||
| e578482657 | |||
| d941e11496 | |||
| 2db9f4acbe | |||
| 4a9a6598f0 | |||
| 2ec3761ee7 | |||
| ad7a7fac4b | |||
| 2b09353851 | |||
| 7710e3111d | |||
| 0a35750777 | |||
| 6b6dfd7fe6 | |||
| 2a5cb4e974 | |||
| 2159b143c4 | |||
| df954de178 | |||
| cbf87cfed9 | |||
| c50b328eb9 | |||
| 2183d21b12 | |||
| ca8a6763ea | |||
| c2d9c765ab | |||
| 95c4b5228d | |||
| b60c0b2967 | |||
| 6ea8fe462a | |||
| a329c83c0a | |||
| 41210aa925 | |||
| c1b968cf65 | |||
| 9efbd84d74 | |||
| 261cd8ea9b | |||
| 5261ce807f | |||
| c1bc2621fa | |||
| 9e291b8477 | |||
| ff619c2925 | |||
| 1f99d840af | |||
| e8c775e330 | |||
| 631b0ab956 | |||
| f3779ad3bd |
@@ -1,3 +1,551 @@
|
||||
Sun Feb 2 10:03:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* === Released 2.2.1 ===
|
||||
|
||||
* configure.in: Version 2.2.1, Binary age 201, interface age 1.
|
||||
|
||||
* NEWS: More updates.
|
||||
|
||||
2003-02-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/gdk.def: Add gdk_screen_get_system_visual. Noticed by Ed
|
||||
Woods.
|
||||
|
||||
Fri Jan 31 17:48:53 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* demos/pixbuf-demo.c
|
||||
* demos/testpixbuf.c
|
||||
* demos/gtk-demo/pixbufs.c
|
||||
* tests/testtext.c: sync with HEAD (removed gtk_timeout_* usage)
|
||||
|
||||
Fri Jan 31 17:23:59 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): set_state
|
||||
on the tab_label before unparenting it, in case the unparent
|
||||
drops the refcount to 0.
|
||||
|
||||
Thu Jan 30 23:44:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* NEWS: Updates.
|
||||
|
||||
Fri Jan 31 00:28:18 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* NEWS: beginning of NEWS for 2.2.1.
|
||||
|
||||
Thu Jan 30 23:48:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_count_special_cell):
|
||||
only count the special cell if it is also visible,
|
||||
(_gtk_tree_view_column_get_neighbor_sizes): only take the width into
|
||||
account from visible cells,
|
||||
(gtk_tree_view_column_cell_get_position): likewise, (Reported and
|
||||
testcase provided by Vasco Alexandre da Silva Costa, via IRC,
|
||||
tracking bug was #104563).
|
||||
|
||||
Thu Jan 30 23:46:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
subtract expander space and focus line space from the extra space
|
||||
we are about the allocate. (Fixes #104635).
|
||||
|
||||
Thu Jan 30 23:42:03 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkstyle.c (apply_affine_on_point): fix rouding error
|
||||
(Fixes #96242, patch from Soeren Sandmann).
|
||||
|
||||
Thu Jan 30 16:54:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Patch from Soeren Sandmann
|
||||
to update the states of the tab label child
|
||||
widgets to match the state of the tabs.
|
||||
(#93389, Reported by Tommi Komulainen)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||
function that sets the icon's and label's packing options and
|
||||
visibility based on toolbar->style.
|
||||
|
||||
(gtk_toolbar_internal_insert_element):
|
||||
(gtk_real_toolbar_style_changed): Make use of
|
||||
set_child_packing_and_visibility() to clean up the code and get
|
||||
the packing right for icon-only/text-only toolbars. (#104679)
|
||||
|
||||
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||
|
||||
Thu Jan 30 16:30:54 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Remove gtk+.spec.in from
|
||||
EXTRA_DIST, and from dist rules. (#102231)
|
||||
|
||||
Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkrgb.c (gdk_rgb_try_colormap): Remove the
|
||||
attempt-to-allocate then free code. To handle multiple
|
||||
people allocating colors at the same time, we need
|
||||
to just go ahead and try. (#102213, Shivram U)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||
rectangle using the background color rather than relying on
|
||||
gdk_window_clear_area(), so that the palette works properly with
|
||||
pixmap themes. (#101732)
|
||||
|
||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||
to fill the drawing area in the background color.
|
||||
|
||||
Wed Jan 29 14:11:21 2003 Hidetoshi Tajima <hidetoshi.tajima@sun.com>
|
||||
|
||||
* modules/input/gtkimcontextxim.c (choose_better_style): fix a memory
|
||||
initialization error for selecting input style (#103549).
|
||||
|
||||
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkkeyuni.c (get_decimal_char): Make the
|
||||
translation of GDK_KP_Decimal dependent on LC_NUMERIC.
|
||||
(#101225)
|
||||
|
||||
Wed Jan 29 15:43:56 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
|
||||
Make up from the menu bar go to the end of the submenu.
|
||||
(#96114, Ian Peters.)
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate):
|
||||
Only do the select-but-not-activate stuff if the
|
||||
menu is already active. Otherwise, just activate.
|
||||
(#101690, Arvind Samptur)
|
||||
|
||||
Tue Jan 28 15:18:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* autogen.sh (have_automake): Fix version in complaint
|
||||
message about automake. (#104366, Rich Burridge)
|
||||
|
||||
Mon Jan 27 16:38:13 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Remove SOEXT stuff; it doesn't work portably.
|
||||
|
||||
Mon Jan 27 22:45:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_move): don't handle b if
|
||||
we appended/prepended, send the rows_reordered signal to the
|
||||
correct level ... (Reported by Matthew Tuck).
|
||||
|
||||
Mon Jan 27 22:43:11 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_helper): don't just bail
|
||||
out if the level only has one item, recurse over the child if there
|
||||
is one. (Fixes #100458, reported by Gaël Le Mignot).
|
||||
|
||||
Mon Jan 27 22:41:26 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_set_model),
|
||||
(gtk_tree_view_search_equal_func): make TreeView search handle
|
||||
all types which are transformable by GValue. (Fixes #99803, reported
|
||||
by Muktha Narayan).
|
||||
|
||||
Mon Jan 27 22:39:25 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_sort_column_id):
|
||||
*really* handle unsetting the ID. Slightly modified patch from
|
||||
Soeren Sandmann. Fixes #87556, reported by Jarek Dukat.
|
||||
|
||||
Mon Jan 27 22:33:43 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Fixes the total GtkTreeSortable mess, and #83195, reported by
|
||||
Jarek Dukat
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_get_sort_column_id),
|
||||
(gtk_tree_store_set_sort_column_id), (gtk_tree_store_set_sort_func),
|
||||
(gtk_tree_store_set_default_sort_func): use the constant
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID instead of -1, make functions
|
||||
work as advertised by the documentation.
|
||||
|
||||
* gtk/gtklistore.c (gtk_list_store_get_sort_column_id),
|
||||
(gtk_list_store_set_sort_column_id), (gtk_list_store_set_sort_func),
|
||||
(gtk_list_store_set_default_sort_func): likewise.
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_set_sort_column_id),
|
||||
(gtk_tree_model_set_sort_func),
|
||||
(gtk_tree_model_sort_set_default_sort_func): make functions work
|
||||
as advertised by the documentation.
|
||||
|
||||
Mon Jan 27 22:31:56 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): update focus_column
|
||||
before we decide if we edit. (fixes #100973, reported by Dave Cook).
|
||||
|
||||
Mon Jan 27 22:29:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Bug report and test case from Paolo Maggi via IRC.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_swap): update tail if needed,
|
||||
(gtk_list_store_move): update tail if needed.
|
||||
|
||||
Mon Jan 27 16:19:59 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_filter_func): event->any.window
|
||||
might be NULL. Use gtk_widget_get_display (widget)
|
||||
(#102860, Thomas Leonard)
|
||||
|
||||
Mon Jan 27 15:58:31 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Fix --without-modules/--disable-modules
|
||||
confusion that was causing --disable-modules not to work.
|
||||
(#102865, Akira Tagoh)
|
||||
|
||||
* configure.in: Fix problem with plain --with-xinput
|
||||
(#104266, Akira Tagoh)
|
||||
|
||||
2003-01-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
move bindings viewport-based when the cursor is invisible. (#78669)
|
||||
|
||||
2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_hide_all): Override hide_all
|
||||
in addition to show_all in order to keep them symmetric. (#102201)
|
||||
|
||||
2003-01-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_foreign_new_for_display,
|
||||
gdk_pixmap_lookup, gdk_pixmap_lookup_for_display): Implement.
|
||||
(#104108, Naofumi Yasufuku)
|
||||
|
||||
* gdk/gdk.def: Export the above.
|
||||
|
||||
Wed Jan 22 14:23:23 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (translate_key_event): add a "return" at
|
||||
the end of the function, so there is a statement following the "out"
|
||||
label in all cases (fixes #101961)
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
||||
|
||||
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
|
||||
Fix off-by-one error on the backward iteration loop,
|
||||
that was causing the wrong range to be redrawn.
|
||||
(at least part of #72734)
|
||||
|
||||
2003-01-21 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_size_allocate): Adjust the
|
||||
vadjustment value after changing its bounds. (fixes #101963 and
|
||||
#73562)
|
||||
|
||||
* gtk/gtkcolorsel.c (hex_changed): Fix clamping to [0,1] to avoid
|
||||
unnecessary roundtrip failures. (#93500)
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* configure.in: Added Amharic (am), Macedonian (mk)
|
||||
and Tamil (ta) to ALL_LINGUAS
|
||||
|
||||
2003-01-19 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix for #103614 and some other problems with GtkFileSelection on
|
||||
Windows:
|
||||
|
||||
* gtk/fnmatch.c (get_char): Need to use g_unichar_tolower(), not
|
||||
g_ascii_tolower(). Windows file names are case-insensitive for all
|
||||
Unicode letters.
|
||||
|
||||
* gtk/gtkfilesel.c: Instead of checking for G_OS_WIN32 or
|
||||
G_WITH_CYGWIN, check G_PLATFORM_WIN32. Move inclusion of gtkintl.h
|
||||
earlier, as it includes config.h unconditionally, and gtkprivate.h
|
||||
redefines GTK_LOCALEDIR.
|
||||
(struct _CompletionDirSent): Ifdef out the fields not used on
|
||||
Windows.
|
||||
(compare_utf8_filenames, compare_sys_filenames): Need different
|
||||
comparison implementation for UTF-8 file names and system locale
|
||||
file names on Win32. Cannot simply use g_ascii_strcasecmp(), but
|
||||
need to casefold all Unicode letters.
|
||||
(cmpl_completion_matches, open_dir, correct_parent): Ifdef out
|
||||
variables not used on Win32 to avoid warnings about unused
|
||||
variables.
|
||||
(open_ref_dir): Use g_path_skip_root() to skip past potential
|
||||
drive letter in front of the leading (back)slash.
|
||||
(open_new_dir): Ifdef out use of CompletionDirSent fields not
|
||||
there on Win32.
|
||||
(correct_parent): Bypass inode check also on Cygwin.
|
||||
|
||||
2003-01-15 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix bug noticed by Alex Shaduri: Tooltips and other
|
||||
GDK_WINDOW_TEMP windows were activated. This looked very odd, and
|
||||
was a regression from earlier versions.
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (show_window_internal): Fine-tune
|
||||
behaviour. Don't ever activate GDK_WINDOW_TEMP windows.
|
||||
(gdk_window_move, gdk_window_resize): Add debug logging.
|
||||
|
||||
* gdk/win32/gdkevents-win32.c (gdk_event_translate): When we get a
|
||||
WM_SIZE message for a non-visible (withdrawn) window, don't clear
|
||||
the GDK_WINDOW_STATE_WITHDRAWN bit. The window is still withdrawn
|
||||
even if its size changes.
|
||||
|
||||
Wed Jan 15 15:55:47 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksettings.c: Set the double click speed from
|
||||
XSETTINGS when creating a new GtkSettings object
|
||||
as well as when getting a notify. (#103601, reported
|
||||
by Louis Garcia)
|
||||
|
||||
Wed Jan 15 14:56:09 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_size_allocate):
|
||||
Show/hide the notebook event window as necessary,
|
||||
we weren't previously keeping the visibility updated
|
||||
properly. (#103599)
|
||||
|
||||
2002-12-29 Murray Cumming <murrayc@usa.net>
|
||||
|
||||
Fixes #102168. Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c, gtktreednd.c, gtktreestore.c:
|
||||
Actually implement the GtkTreeDragSource::row_draggable virtual
|
||||
function in GtkListStore and GtkTreeStore instead of just checking
|
||||
whether it's implemented at all. This means that DnD isn't broken by
|
||||
gtkmm's virtual function wrappers. The alternative would be to
|
||||
hard-code the TRUE return value into gtkmm's wrappers, but that's
|
||||
part of GTK+'s implementation, not it's API.
|
||||
|
||||
Tue Jan 14 23:54:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c: fix compiler warning.
|
||||
|
||||
Tue Jan 14 23:29:00 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
|
||||
make sure exposed pixbufs are clipped to the exposed area before
|
||||
drawing, which is a slight speedup. (#102379, patch from Soeren
|
||||
Sandmann).
|
||||
|
||||
Tue Jan 14 23:26:41 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): silly typo fix,
|
||||
only free scroll_to_path when the complete tree has been validated.
|
||||
This makes sure that we scrolled to the correct path.
|
||||
|
||||
Tue Jan 14 23:25:32 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_style_set): update the
|
||||
background of widget->window and bin->window. (Fixes #96650, reported
|
||||
by Dave Camp).
|
||||
|
||||
Tue Jan 14 23:24:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_clamp_node_visible): process
|
||||
updates before scrolling, avoiding a "selection streak". (Fixes
|
||||
#101235, patch from Soeren Sandmann).
|
||||
|
||||
Tue Jan 14 23:22:13 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): actually put values
|
||||
in the requisition using gtk_widget_size_request. (Fixes #100172,
|
||||
reported by Kjartan Maraas).
|
||||
|
||||
Tue Jan 14 23:19:45 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_rows_reordered): cancel the
|
||||
arrow animation timeout before we actually reorder the rbtree. If
|
||||
we don't do this we can get stuck arrows,
|
||||
(cancel_arrow_animation): new function. (Fixes #93629, part 2,
|
||||
reported and testcase provided by Hans Petter Jansson).
|
||||
|
||||
Tue Jan 14 23:18:21 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
|
||||
anchor_path should be start_path, not end_path. (Fixes #102618,
|
||||
patch from Carlos Garnacho Parro).
|
||||
|
||||
Tue Jan 14 23:16:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_move): also update the tail,
|
||||
only correct new_pos if we don't move to the head/tail.
|
||||
|
||||
Tue Jan 14 23:11:55 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_swap): take the path from
|
||||
the parent_iter if depth >= 1, so we send the reordered signal to
|
||||
the correct level, remove debugging printfs which I forgot the remove
|
||||
earlier (2.2.0 shipped with this, oops). (Fixes #103198, Reported and
|
||||
testcase provided by Matthew Tuck).
|
||||
|
||||
Tue Jan 14 20:58:44 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (invalite_last_column): split out actual column
|
||||
invalidation into invalite_column(),
|
||||
(gtk_tree_view_size_allocate_columns): invalidate column if the
|
||||
new width is larger than the old width.
|
||||
(fixes #102890, reported by Alex Duggan).
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkmain.c: Move inclusion of config.h and gtkintl.h earlier,
|
||||
as gtkprivate.h redefines GTK_LOCALEDIR on Win32, for run-time
|
||||
lookup.
|
||||
|
||||
* gdk/Makefile.am (libgdk_win32_2_0_la_DEPENDENCIES): Depend on
|
||||
gdk.def.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
|
||||
Implement by setting or clearing the WS_EX_TOOLWINDOW extended
|
||||
window style.
|
||||
(gdk_window_set_type_hint): Add all cases to the switch (not all
|
||||
do anything, though). Handle GDK_WINDOW_TYPE_HINT_TOOLBAR by
|
||||
calling gdk_window_set_skip_taskbar_hint(). This means that GTK
|
||||
won't know that the skip_taskbar hint is on for the window, is
|
||||
this bad?
|
||||
|
||||
Wed Jan 8 18:44:21 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: #include <stdlib.h> for putenv,
|
||||
<string.h> for strlen.
|
||||
|
||||
* gdk/x11/gdkscreen-x11.c: #include <stdlib.h> for getenv,
|
||||
<string.h> for strrchr.
|
||||
|
||||
* tests/testgtk.c (create_saved_position): "x" and "y" properties
|
||||
for widgets no longer exist, use gtk_window_move instead.
|
||||
|
||||
* test/testtextbuffer.c (check_get_set_text): cast strlen to
|
||||
int for g_error.
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct DLL and import library names, with
|
||||
GTK_API_VERSION in name, not GTK_MAJOR_VERSION.GTK_MINOR_VERSION.
|
||||
(DEVZIP): Add bin/{gdk-pixbuf-query-loaders,gtk-query-immodules-2.0,
|
||||
gtk-demo}.exe and share/gtk-2.0.
|
||||
|
||||
* configure.in: Improve check for dimm.h.
|
||||
|
||||
* configure.in: Set SOEXT to 'so' on Unix, 'dll' on Win32. Used in
|
||||
gdk-pixbuf/Makefile.am.
|
||||
|
||||
* gdk-pixbuf/makefile.mingw.in
|
||||
* gdk-pixbuf/pixops/makefile.mingw.in
|
||||
* gdk/makefile.mingw.in
|
||||
* gdk/win32/makefile.mingw.in
|
||||
* gtk/makefile.mingw.in: Remove. Not maintained anyway.
|
||||
|
||||
* gdk-pixbuf/Makefile.am
|
||||
* gdk-pixbuf/pixops/Makefile.am
|
||||
* gdk/Makefile.am
|
||||
* gdk/win32/Makefile.am
|
||||
* gtk/Makefile.am
|
||||
* configure.in: Remove makefile.mingw{,.in} from here, too.
|
||||
|
||||
* README.win32: Updates. Don't mention the now removed
|
||||
makefile.mingw files.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add a couple of missing entries.
|
||||
|
||||
* gdk/gdkkeynames.c: Include <string.h> for strcmp() and memcpy().
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Move dimm.h header clash workaround
|
||||
earlier.
|
||||
|
||||
* gdk/win32/rc/Makefile.am: Add hack to help
|
||||
build/win32/lt-compile-resource decide which kind of libtool
|
||||
object file to produce.
|
||||
|
||||
2003-01-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
C-Down step through the sequence of paragraph ends (old behaviour
|
||||
included paragraph starts). (#80340, patch by Narayana Pattipati)
|
||||
|
||||
* gtk/gtktextiter.c (_gtk_text_btree_get_iter_at_first_toggle):
|
||||
Check for a tag toggle at the start iterator before calling
|
||||
gtk_text_iter_forward_to_tag_toggle(). (#102090, patch by Daniel
|
||||
Elstner)
|
||||
|
||||
2003-01-04 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkfilesel.h (struct _GtkFileSelection): Add /*< public >*/
|
||||
and /*< private >*/ as appropriate. (#97211)
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Don't distribute gtk-zip.sh, but do
|
||||
distribute gtk-zip.sh.in.
|
||||
|
||||
* gtk-zip.sh.in (DEVZIP): Add gdk-pixbuf-csource.exe and .1.
|
||||
|
||||
2003-01-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_get_focus): Document that it may
|
||||
return NULL. (#102069)
|
||||
|
||||
2003-01-01 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/fnmatch.c (FNMATCH_TEST_CASES): #undef, since having
|
||||
a main() in the library is obviously bad.
|
||||
|
||||
2002-12-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_drag_data_received): Place the
|
||||
|
||||
@@ -1,3 +1,551 @@
|
||||
Sun Feb 2 10:03:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* === Released 2.2.1 ===
|
||||
|
||||
* configure.in: Version 2.2.1, Binary age 201, interface age 1.
|
||||
|
||||
* NEWS: More updates.
|
||||
|
||||
2003-02-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/gdk.def: Add gdk_screen_get_system_visual. Noticed by Ed
|
||||
Woods.
|
||||
|
||||
Fri Jan 31 17:48:53 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* demos/pixbuf-demo.c
|
||||
* demos/testpixbuf.c
|
||||
* demos/gtk-demo/pixbufs.c
|
||||
* tests/testtext.c: sync with HEAD (removed gtk_timeout_* usage)
|
||||
|
||||
Fri Jan 31 17:23:59 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): set_state
|
||||
on the tab_label before unparenting it, in case the unparent
|
||||
drops the refcount to 0.
|
||||
|
||||
Thu Jan 30 23:44:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* NEWS: Updates.
|
||||
|
||||
Fri Jan 31 00:28:18 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* NEWS: beginning of NEWS for 2.2.1.
|
||||
|
||||
Thu Jan 30 23:48:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_count_special_cell):
|
||||
only count the special cell if it is also visible,
|
||||
(_gtk_tree_view_column_get_neighbor_sizes): only take the width into
|
||||
account from visible cells,
|
||||
(gtk_tree_view_column_cell_get_position): likewise, (Reported and
|
||||
testcase provided by Vasco Alexandre da Silva Costa, via IRC,
|
||||
tracking bug was #104563).
|
||||
|
||||
Thu Jan 30 23:46:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
subtract expander space and focus line space from the extra space
|
||||
we are about the allocate. (Fixes #104635).
|
||||
|
||||
Thu Jan 30 23:42:03 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkstyle.c (apply_affine_on_point): fix rouding error
|
||||
(Fixes #96242, patch from Soeren Sandmann).
|
||||
|
||||
Thu Jan 30 16:54:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Patch from Soeren Sandmann
|
||||
to update the states of the tab label child
|
||||
widgets to match the state of the tabs.
|
||||
(#93389, Reported by Tommi Komulainen)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||
function that sets the icon's and label's packing options and
|
||||
visibility based on toolbar->style.
|
||||
|
||||
(gtk_toolbar_internal_insert_element):
|
||||
(gtk_real_toolbar_style_changed): Make use of
|
||||
set_child_packing_and_visibility() to clean up the code and get
|
||||
the packing right for icon-only/text-only toolbars. (#104679)
|
||||
|
||||
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||
|
||||
Thu Jan 30 16:30:54 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Remove gtk+.spec.in from
|
||||
EXTRA_DIST, and from dist rules. (#102231)
|
||||
|
||||
Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkrgb.c (gdk_rgb_try_colormap): Remove the
|
||||
attempt-to-allocate then free code. To handle multiple
|
||||
people allocating colors at the same time, we need
|
||||
to just go ahead and try. (#102213, Shivram U)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||
rectangle using the background color rather than relying on
|
||||
gdk_window_clear_area(), so that the palette works properly with
|
||||
pixmap themes. (#101732)
|
||||
|
||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||
to fill the drawing area in the background color.
|
||||
|
||||
Wed Jan 29 14:11:21 2003 Hidetoshi Tajima <hidetoshi.tajima@sun.com>
|
||||
|
||||
* modules/input/gtkimcontextxim.c (choose_better_style): fix a memory
|
||||
initialization error for selecting input style (#103549).
|
||||
|
||||
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkkeyuni.c (get_decimal_char): Make the
|
||||
translation of GDK_KP_Decimal dependent on LC_NUMERIC.
|
||||
(#101225)
|
||||
|
||||
Wed Jan 29 15:43:56 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
|
||||
Make up from the menu bar go to the end of the submenu.
|
||||
(#96114, Ian Peters.)
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate):
|
||||
Only do the select-but-not-activate stuff if the
|
||||
menu is already active. Otherwise, just activate.
|
||||
(#101690, Arvind Samptur)
|
||||
|
||||
Tue Jan 28 15:18:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* autogen.sh (have_automake): Fix version in complaint
|
||||
message about automake. (#104366, Rich Burridge)
|
||||
|
||||
Mon Jan 27 16:38:13 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Remove SOEXT stuff; it doesn't work portably.
|
||||
|
||||
Mon Jan 27 22:45:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_move): don't handle b if
|
||||
we appended/prepended, send the rows_reordered signal to the
|
||||
correct level ... (Reported by Matthew Tuck).
|
||||
|
||||
Mon Jan 27 22:43:11 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_helper): don't just bail
|
||||
out if the level only has one item, recurse over the child if there
|
||||
is one. (Fixes #100458, reported by Gaël Le Mignot).
|
||||
|
||||
Mon Jan 27 22:41:26 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_set_model),
|
||||
(gtk_tree_view_search_equal_func): make TreeView search handle
|
||||
all types which are transformable by GValue. (Fixes #99803, reported
|
||||
by Muktha Narayan).
|
||||
|
||||
Mon Jan 27 22:39:25 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_sort_column_id):
|
||||
*really* handle unsetting the ID. Slightly modified patch from
|
||||
Soeren Sandmann. Fixes #87556, reported by Jarek Dukat.
|
||||
|
||||
Mon Jan 27 22:33:43 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Fixes the total GtkTreeSortable mess, and #83195, reported by
|
||||
Jarek Dukat
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_get_sort_column_id),
|
||||
(gtk_tree_store_set_sort_column_id), (gtk_tree_store_set_sort_func),
|
||||
(gtk_tree_store_set_default_sort_func): use the constant
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID instead of -1, make functions
|
||||
work as advertised by the documentation.
|
||||
|
||||
* gtk/gtklistore.c (gtk_list_store_get_sort_column_id),
|
||||
(gtk_list_store_set_sort_column_id), (gtk_list_store_set_sort_func),
|
||||
(gtk_list_store_set_default_sort_func): likewise.
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_set_sort_column_id),
|
||||
(gtk_tree_model_set_sort_func),
|
||||
(gtk_tree_model_sort_set_default_sort_func): make functions work
|
||||
as advertised by the documentation.
|
||||
|
||||
Mon Jan 27 22:31:56 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): update focus_column
|
||||
before we decide if we edit. (fixes #100973, reported by Dave Cook).
|
||||
|
||||
Mon Jan 27 22:29:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Bug report and test case from Paolo Maggi via IRC.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_swap): update tail if needed,
|
||||
(gtk_list_store_move): update tail if needed.
|
||||
|
||||
Mon Jan 27 16:19:59 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_filter_func): event->any.window
|
||||
might be NULL. Use gtk_widget_get_display (widget)
|
||||
(#102860, Thomas Leonard)
|
||||
|
||||
Mon Jan 27 15:58:31 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Fix --without-modules/--disable-modules
|
||||
confusion that was causing --disable-modules not to work.
|
||||
(#102865, Akira Tagoh)
|
||||
|
||||
* configure.in: Fix problem with plain --with-xinput
|
||||
(#104266, Akira Tagoh)
|
||||
|
||||
2003-01-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
move bindings viewport-based when the cursor is invisible. (#78669)
|
||||
|
||||
2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_hide_all): Override hide_all
|
||||
in addition to show_all in order to keep them symmetric. (#102201)
|
||||
|
||||
2003-01-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_foreign_new_for_display,
|
||||
gdk_pixmap_lookup, gdk_pixmap_lookup_for_display): Implement.
|
||||
(#104108, Naofumi Yasufuku)
|
||||
|
||||
* gdk/gdk.def: Export the above.
|
||||
|
||||
Wed Jan 22 14:23:23 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (translate_key_event): add a "return" at
|
||||
the end of the function, so there is a statement following the "out"
|
||||
label in all cases (fixes #101961)
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
||||
|
||||
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
|
||||
Fix off-by-one error on the backward iteration loop,
|
||||
that was causing the wrong range to be redrawn.
|
||||
(at least part of #72734)
|
||||
|
||||
2003-01-21 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_size_allocate): Adjust the
|
||||
vadjustment value after changing its bounds. (fixes #101963 and
|
||||
#73562)
|
||||
|
||||
* gtk/gtkcolorsel.c (hex_changed): Fix clamping to [0,1] to avoid
|
||||
unnecessary roundtrip failures. (#93500)
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* configure.in: Added Amharic (am), Macedonian (mk)
|
||||
and Tamil (ta) to ALL_LINGUAS
|
||||
|
||||
2003-01-19 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix for #103614 and some other problems with GtkFileSelection on
|
||||
Windows:
|
||||
|
||||
* gtk/fnmatch.c (get_char): Need to use g_unichar_tolower(), not
|
||||
g_ascii_tolower(). Windows file names are case-insensitive for all
|
||||
Unicode letters.
|
||||
|
||||
* gtk/gtkfilesel.c: Instead of checking for G_OS_WIN32 or
|
||||
G_WITH_CYGWIN, check G_PLATFORM_WIN32. Move inclusion of gtkintl.h
|
||||
earlier, as it includes config.h unconditionally, and gtkprivate.h
|
||||
redefines GTK_LOCALEDIR.
|
||||
(struct _CompletionDirSent): Ifdef out the fields not used on
|
||||
Windows.
|
||||
(compare_utf8_filenames, compare_sys_filenames): Need different
|
||||
comparison implementation for UTF-8 file names and system locale
|
||||
file names on Win32. Cannot simply use g_ascii_strcasecmp(), but
|
||||
need to casefold all Unicode letters.
|
||||
(cmpl_completion_matches, open_dir, correct_parent): Ifdef out
|
||||
variables not used on Win32 to avoid warnings about unused
|
||||
variables.
|
||||
(open_ref_dir): Use g_path_skip_root() to skip past potential
|
||||
drive letter in front of the leading (back)slash.
|
||||
(open_new_dir): Ifdef out use of CompletionDirSent fields not
|
||||
there on Win32.
|
||||
(correct_parent): Bypass inode check also on Cygwin.
|
||||
|
||||
2003-01-15 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix bug noticed by Alex Shaduri: Tooltips and other
|
||||
GDK_WINDOW_TEMP windows were activated. This looked very odd, and
|
||||
was a regression from earlier versions.
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (show_window_internal): Fine-tune
|
||||
behaviour. Don't ever activate GDK_WINDOW_TEMP windows.
|
||||
(gdk_window_move, gdk_window_resize): Add debug logging.
|
||||
|
||||
* gdk/win32/gdkevents-win32.c (gdk_event_translate): When we get a
|
||||
WM_SIZE message for a non-visible (withdrawn) window, don't clear
|
||||
the GDK_WINDOW_STATE_WITHDRAWN bit. The window is still withdrawn
|
||||
even if its size changes.
|
||||
|
||||
Wed Jan 15 15:55:47 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksettings.c: Set the double click speed from
|
||||
XSETTINGS when creating a new GtkSettings object
|
||||
as well as when getting a notify. (#103601, reported
|
||||
by Louis Garcia)
|
||||
|
||||
Wed Jan 15 14:56:09 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_size_allocate):
|
||||
Show/hide the notebook event window as necessary,
|
||||
we weren't previously keeping the visibility updated
|
||||
properly. (#103599)
|
||||
|
||||
2002-12-29 Murray Cumming <murrayc@usa.net>
|
||||
|
||||
Fixes #102168. Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c, gtktreednd.c, gtktreestore.c:
|
||||
Actually implement the GtkTreeDragSource::row_draggable virtual
|
||||
function in GtkListStore and GtkTreeStore instead of just checking
|
||||
whether it's implemented at all. This means that DnD isn't broken by
|
||||
gtkmm's virtual function wrappers. The alternative would be to
|
||||
hard-code the TRUE return value into gtkmm's wrappers, but that's
|
||||
part of GTK+'s implementation, not it's API.
|
||||
|
||||
Tue Jan 14 23:54:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c: fix compiler warning.
|
||||
|
||||
Tue Jan 14 23:29:00 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
|
||||
make sure exposed pixbufs are clipped to the exposed area before
|
||||
drawing, which is a slight speedup. (#102379, patch from Soeren
|
||||
Sandmann).
|
||||
|
||||
Tue Jan 14 23:26:41 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): silly typo fix,
|
||||
only free scroll_to_path when the complete tree has been validated.
|
||||
This makes sure that we scrolled to the correct path.
|
||||
|
||||
Tue Jan 14 23:25:32 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_style_set): update the
|
||||
background of widget->window and bin->window. (Fixes #96650, reported
|
||||
by Dave Camp).
|
||||
|
||||
Tue Jan 14 23:24:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_clamp_node_visible): process
|
||||
updates before scrolling, avoiding a "selection streak". (Fixes
|
||||
#101235, patch from Soeren Sandmann).
|
||||
|
||||
Tue Jan 14 23:22:13 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): actually put values
|
||||
in the requisition using gtk_widget_size_request. (Fixes #100172,
|
||||
reported by Kjartan Maraas).
|
||||
|
||||
Tue Jan 14 23:19:45 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_rows_reordered): cancel the
|
||||
arrow animation timeout before we actually reorder the rbtree. If
|
||||
we don't do this we can get stuck arrows,
|
||||
(cancel_arrow_animation): new function. (Fixes #93629, part 2,
|
||||
reported and testcase provided by Hans Petter Jansson).
|
||||
|
||||
Tue Jan 14 23:18:21 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
|
||||
anchor_path should be start_path, not end_path. (Fixes #102618,
|
||||
patch from Carlos Garnacho Parro).
|
||||
|
||||
Tue Jan 14 23:16:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_move): also update the tail,
|
||||
only correct new_pos if we don't move to the head/tail.
|
||||
|
||||
Tue Jan 14 23:11:55 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_swap): take the path from
|
||||
the parent_iter if depth >= 1, so we send the reordered signal to
|
||||
the correct level, remove debugging printfs which I forgot the remove
|
||||
earlier (2.2.0 shipped with this, oops). (Fixes #103198, Reported and
|
||||
testcase provided by Matthew Tuck).
|
||||
|
||||
Tue Jan 14 20:58:44 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (invalite_last_column): split out actual column
|
||||
invalidation into invalite_column(),
|
||||
(gtk_tree_view_size_allocate_columns): invalidate column if the
|
||||
new width is larger than the old width.
|
||||
(fixes #102890, reported by Alex Duggan).
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkmain.c: Move inclusion of config.h and gtkintl.h earlier,
|
||||
as gtkprivate.h redefines GTK_LOCALEDIR on Win32, for run-time
|
||||
lookup.
|
||||
|
||||
* gdk/Makefile.am (libgdk_win32_2_0_la_DEPENDENCIES): Depend on
|
||||
gdk.def.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
|
||||
Implement by setting or clearing the WS_EX_TOOLWINDOW extended
|
||||
window style.
|
||||
(gdk_window_set_type_hint): Add all cases to the switch (not all
|
||||
do anything, though). Handle GDK_WINDOW_TYPE_HINT_TOOLBAR by
|
||||
calling gdk_window_set_skip_taskbar_hint(). This means that GTK
|
||||
won't know that the skip_taskbar hint is on for the window, is
|
||||
this bad?
|
||||
|
||||
Wed Jan 8 18:44:21 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: #include <stdlib.h> for putenv,
|
||||
<string.h> for strlen.
|
||||
|
||||
* gdk/x11/gdkscreen-x11.c: #include <stdlib.h> for getenv,
|
||||
<string.h> for strrchr.
|
||||
|
||||
* tests/testgtk.c (create_saved_position): "x" and "y" properties
|
||||
for widgets no longer exist, use gtk_window_move instead.
|
||||
|
||||
* test/testtextbuffer.c (check_get_set_text): cast strlen to
|
||||
int for g_error.
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct DLL and import library names, with
|
||||
GTK_API_VERSION in name, not GTK_MAJOR_VERSION.GTK_MINOR_VERSION.
|
||||
(DEVZIP): Add bin/{gdk-pixbuf-query-loaders,gtk-query-immodules-2.0,
|
||||
gtk-demo}.exe and share/gtk-2.0.
|
||||
|
||||
* configure.in: Improve check for dimm.h.
|
||||
|
||||
* configure.in: Set SOEXT to 'so' on Unix, 'dll' on Win32. Used in
|
||||
gdk-pixbuf/Makefile.am.
|
||||
|
||||
* gdk-pixbuf/makefile.mingw.in
|
||||
* gdk-pixbuf/pixops/makefile.mingw.in
|
||||
* gdk/makefile.mingw.in
|
||||
* gdk/win32/makefile.mingw.in
|
||||
* gtk/makefile.mingw.in: Remove. Not maintained anyway.
|
||||
|
||||
* gdk-pixbuf/Makefile.am
|
||||
* gdk-pixbuf/pixops/Makefile.am
|
||||
* gdk/Makefile.am
|
||||
* gdk/win32/Makefile.am
|
||||
* gtk/Makefile.am
|
||||
* configure.in: Remove makefile.mingw{,.in} from here, too.
|
||||
|
||||
* README.win32: Updates. Don't mention the now removed
|
||||
makefile.mingw files.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add a couple of missing entries.
|
||||
|
||||
* gdk/gdkkeynames.c: Include <string.h> for strcmp() and memcpy().
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Move dimm.h header clash workaround
|
||||
earlier.
|
||||
|
||||
* gdk/win32/rc/Makefile.am: Add hack to help
|
||||
build/win32/lt-compile-resource decide which kind of libtool
|
||||
object file to produce.
|
||||
|
||||
2003-01-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
C-Down step through the sequence of paragraph ends (old behaviour
|
||||
included paragraph starts). (#80340, patch by Narayana Pattipati)
|
||||
|
||||
* gtk/gtktextiter.c (_gtk_text_btree_get_iter_at_first_toggle):
|
||||
Check for a tag toggle at the start iterator before calling
|
||||
gtk_text_iter_forward_to_tag_toggle(). (#102090, patch by Daniel
|
||||
Elstner)
|
||||
|
||||
2003-01-04 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkfilesel.h (struct _GtkFileSelection): Add /*< public >*/
|
||||
and /*< private >*/ as appropriate. (#97211)
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Don't distribute gtk-zip.sh, but do
|
||||
distribute gtk-zip.sh.in.
|
||||
|
||||
* gtk-zip.sh.in (DEVZIP): Add gdk-pixbuf-csource.exe and .1.
|
||||
|
||||
2003-01-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_get_focus): Document that it may
|
||||
return NULL. (#102069)
|
||||
|
||||
2003-01-01 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/fnmatch.c (FNMATCH_TEST_CASES): #undef, since having
|
||||
a main() in the library is obviously bad.
|
||||
|
||||
2002-12-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_drag_data_received): Place the
|
||||
|
||||
@@ -1,3 +1,551 @@
|
||||
Sun Feb 2 10:03:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* === Released 2.2.1 ===
|
||||
|
||||
* configure.in: Version 2.2.1, Binary age 201, interface age 1.
|
||||
|
||||
* NEWS: More updates.
|
||||
|
||||
2003-02-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/gdk.def: Add gdk_screen_get_system_visual. Noticed by Ed
|
||||
Woods.
|
||||
|
||||
Fri Jan 31 17:48:53 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* demos/pixbuf-demo.c
|
||||
* demos/testpixbuf.c
|
||||
* demos/gtk-demo/pixbufs.c
|
||||
* tests/testtext.c: sync with HEAD (removed gtk_timeout_* usage)
|
||||
|
||||
Fri Jan 31 17:23:59 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): set_state
|
||||
on the tab_label before unparenting it, in case the unparent
|
||||
drops the refcount to 0.
|
||||
|
||||
Thu Jan 30 23:44:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* NEWS: Updates.
|
||||
|
||||
Fri Jan 31 00:28:18 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* NEWS: beginning of NEWS for 2.2.1.
|
||||
|
||||
Thu Jan 30 23:48:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_count_special_cell):
|
||||
only count the special cell if it is also visible,
|
||||
(_gtk_tree_view_column_get_neighbor_sizes): only take the width into
|
||||
account from visible cells,
|
||||
(gtk_tree_view_column_cell_get_position): likewise, (Reported and
|
||||
testcase provided by Vasco Alexandre da Silva Costa, via IRC,
|
||||
tracking bug was #104563).
|
||||
|
||||
Thu Jan 30 23:46:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
subtract expander space and focus line space from the extra space
|
||||
we are about the allocate. (Fixes #104635).
|
||||
|
||||
Thu Jan 30 23:42:03 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkstyle.c (apply_affine_on_point): fix rouding error
|
||||
(Fixes #96242, patch from Soeren Sandmann).
|
||||
|
||||
Thu Jan 30 16:54:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Patch from Soeren Sandmann
|
||||
to update the states of the tab label child
|
||||
widgets to match the state of the tabs.
|
||||
(#93389, Reported by Tommi Komulainen)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||
function that sets the icon's and label's packing options and
|
||||
visibility based on toolbar->style.
|
||||
|
||||
(gtk_toolbar_internal_insert_element):
|
||||
(gtk_real_toolbar_style_changed): Make use of
|
||||
set_child_packing_and_visibility() to clean up the code and get
|
||||
the packing right for icon-only/text-only toolbars. (#104679)
|
||||
|
||||
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||
|
||||
Thu Jan 30 16:30:54 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Remove gtk+.spec.in from
|
||||
EXTRA_DIST, and from dist rules. (#102231)
|
||||
|
||||
Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkrgb.c (gdk_rgb_try_colormap): Remove the
|
||||
attempt-to-allocate then free code. To handle multiple
|
||||
people allocating colors at the same time, we need
|
||||
to just go ahead and try. (#102213, Shivram U)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||
rectangle using the background color rather than relying on
|
||||
gdk_window_clear_area(), so that the palette works properly with
|
||||
pixmap themes. (#101732)
|
||||
|
||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||
to fill the drawing area in the background color.
|
||||
|
||||
Wed Jan 29 14:11:21 2003 Hidetoshi Tajima <hidetoshi.tajima@sun.com>
|
||||
|
||||
* modules/input/gtkimcontextxim.c (choose_better_style): fix a memory
|
||||
initialization error for selecting input style (#103549).
|
||||
|
||||
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkkeyuni.c (get_decimal_char): Make the
|
||||
translation of GDK_KP_Decimal dependent on LC_NUMERIC.
|
||||
(#101225)
|
||||
|
||||
Wed Jan 29 15:43:56 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
|
||||
Make up from the menu bar go to the end of the submenu.
|
||||
(#96114, Ian Peters.)
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate):
|
||||
Only do the select-but-not-activate stuff if the
|
||||
menu is already active. Otherwise, just activate.
|
||||
(#101690, Arvind Samptur)
|
||||
|
||||
Tue Jan 28 15:18:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* autogen.sh (have_automake): Fix version in complaint
|
||||
message about automake. (#104366, Rich Burridge)
|
||||
|
||||
Mon Jan 27 16:38:13 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Remove SOEXT stuff; it doesn't work portably.
|
||||
|
||||
Mon Jan 27 22:45:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_move): don't handle b if
|
||||
we appended/prepended, send the rows_reordered signal to the
|
||||
correct level ... (Reported by Matthew Tuck).
|
||||
|
||||
Mon Jan 27 22:43:11 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_helper): don't just bail
|
||||
out if the level only has one item, recurse over the child if there
|
||||
is one. (Fixes #100458, reported by Gaël Le Mignot).
|
||||
|
||||
Mon Jan 27 22:41:26 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_set_model),
|
||||
(gtk_tree_view_search_equal_func): make TreeView search handle
|
||||
all types which are transformable by GValue. (Fixes #99803, reported
|
||||
by Muktha Narayan).
|
||||
|
||||
Mon Jan 27 22:39:25 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_sort_column_id):
|
||||
*really* handle unsetting the ID. Slightly modified patch from
|
||||
Soeren Sandmann. Fixes #87556, reported by Jarek Dukat.
|
||||
|
||||
Mon Jan 27 22:33:43 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Fixes the total GtkTreeSortable mess, and #83195, reported by
|
||||
Jarek Dukat
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_get_sort_column_id),
|
||||
(gtk_tree_store_set_sort_column_id), (gtk_tree_store_set_sort_func),
|
||||
(gtk_tree_store_set_default_sort_func): use the constant
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID instead of -1, make functions
|
||||
work as advertised by the documentation.
|
||||
|
||||
* gtk/gtklistore.c (gtk_list_store_get_sort_column_id),
|
||||
(gtk_list_store_set_sort_column_id), (gtk_list_store_set_sort_func),
|
||||
(gtk_list_store_set_default_sort_func): likewise.
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_set_sort_column_id),
|
||||
(gtk_tree_model_set_sort_func),
|
||||
(gtk_tree_model_sort_set_default_sort_func): make functions work
|
||||
as advertised by the documentation.
|
||||
|
||||
Mon Jan 27 22:31:56 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): update focus_column
|
||||
before we decide if we edit. (fixes #100973, reported by Dave Cook).
|
||||
|
||||
Mon Jan 27 22:29:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Bug report and test case from Paolo Maggi via IRC.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_swap): update tail if needed,
|
||||
(gtk_list_store_move): update tail if needed.
|
||||
|
||||
Mon Jan 27 16:19:59 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_filter_func): event->any.window
|
||||
might be NULL. Use gtk_widget_get_display (widget)
|
||||
(#102860, Thomas Leonard)
|
||||
|
||||
Mon Jan 27 15:58:31 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Fix --without-modules/--disable-modules
|
||||
confusion that was causing --disable-modules not to work.
|
||||
(#102865, Akira Tagoh)
|
||||
|
||||
* configure.in: Fix problem with plain --with-xinput
|
||||
(#104266, Akira Tagoh)
|
||||
|
||||
2003-01-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
move bindings viewport-based when the cursor is invisible. (#78669)
|
||||
|
||||
2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_hide_all): Override hide_all
|
||||
in addition to show_all in order to keep them symmetric. (#102201)
|
||||
|
||||
2003-01-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_foreign_new_for_display,
|
||||
gdk_pixmap_lookup, gdk_pixmap_lookup_for_display): Implement.
|
||||
(#104108, Naofumi Yasufuku)
|
||||
|
||||
* gdk/gdk.def: Export the above.
|
||||
|
||||
Wed Jan 22 14:23:23 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (translate_key_event): add a "return" at
|
||||
the end of the function, so there is a statement following the "out"
|
||||
label in all cases (fixes #101961)
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
||||
|
||||
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
|
||||
Fix off-by-one error on the backward iteration loop,
|
||||
that was causing the wrong range to be redrawn.
|
||||
(at least part of #72734)
|
||||
|
||||
2003-01-21 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_size_allocate): Adjust the
|
||||
vadjustment value after changing its bounds. (fixes #101963 and
|
||||
#73562)
|
||||
|
||||
* gtk/gtkcolorsel.c (hex_changed): Fix clamping to [0,1] to avoid
|
||||
unnecessary roundtrip failures. (#93500)
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* configure.in: Added Amharic (am), Macedonian (mk)
|
||||
and Tamil (ta) to ALL_LINGUAS
|
||||
|
||||
2003-01-19 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix for #103614 and some other problems with GtkFileSelection on
|
||||
Windows:
|
||||
|
||||
* gtk/fnmatch.c (get_char): Need to use g_unichar_tolower(), not
|
||||
g_ascii_tolower(). Windows file names are case-insensitive for all
|
||||
Unicode letters.
|
||||
|
||||
* gtk/gtkfilesel.c: Instead of checking for G_OS_WIN32 or
|
||||
G_WITH_CYGWIN, check G_PLATFORM_WIN32. Move inclusion of gtkintl.h
|
||||
earlier, as it includes config.h unconditionally, and gtkprivate.h
|
||||
redefines GTK_LOCALEDIR.
|
||||
(struct _CompletionDirSent): Ifdef out the fields not used on
|
||||
Windows.
|
||||
(compare_utf8_filenames, compare_sys_filenames): Need different
|
||||
comparison implementation for UTF-8 file names and system locale
|
||||
file names on Win32. Cannot simply use g_ascii_strcasecmp(), but
|
||||
need to casefold all Unicode letters.
|
||||
(cmpl_completion_matches, open_dir, correct_parent): Ifdef out
|
||||
variables not used on Win32 to avoid warnings about unused
|
||||
variables.
|
||||
(open_ref_dir): Use g_path_skip_root() to skip past potential
|
||||
drive letter in front of the leading (back)slash.
|
||||
(open_new_dir): Ifdef out use of CompletionDirSent fields not
|
||||
there on Win32.
|
||||
(correct_parent): Bypass inode check also on Cygwin.
|
||||
|
||||
2003-01-15 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix bug noticed by Alex Shaduri: Tooltips and other
|
||||
GDK_WINDOW_TEMP windows were activated. This looked very odd, and
|
||||
was a regression from earlier versions.
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (show_window_internal): Fine-tune
|
||||
behaviour. Don't ever activate GDK_WINDOW_TEMP windows.
|
||||
(gdk_window_move, gdk_window_resize): Add debug logging.
|
||||
|
||||
* gdk/win32/gdkevents-win32.c (gdk_event_translate): When we get a
|
||||
WM_SIZE message for a non-visible (withdrawn) window, don't clear
|
||||
the GDK_WINDOW_STATE_WITHDRAWN bit. The window is still withdrawn
|
||||
even if its size changes.
|
||||
|
||||
Wed Jan 15 15:55:47 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksettings.c: Set the double click speed from
|
||||
XSETTINGS when creating a new GtkSettings object
|
||||
as well as when getting a notify. (#103601, reported
|
||||
by Louis Garcia)
|
||||
|
||||
Wed Jan 15 14:56:09 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_size_allocate):
|
||||
Show/hide the notebook event window as necessary,
|
||||
we weren't previously keeping the visibility updated
|
||||
properly. (#103599)
|
||||
|
||||
2002-12-29 Murray Cumming <murrayc@usa.net>
|
||||
|
||||
Fixes #102168. Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c, gtktreednd.c, gtktreestore.c:
|
||||
Actually implement the GtkTreeDragSource::row_draggable virtual
|
||||
function in GtkListStore and GtkTreeStore instead of just checking
|
||||
whether it's implemented at all. This means that DnD isn't broken by
|
||||
gtkmm's virtual function wrappers. The alternative would be to
|
||||
hard-code the TRUE return value into gtkmm's wrappers, but that's
|
||||
part of GTK+'s implementation, not it's API.
|
||||
|
||||
Tue Jan 14 23:54:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c: fix compiler warning.
|
||||
|
||||
Tue Jan 14 23:29:00 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
|
||||
make sure exposed pixbufs are clipped to the exposed area before
|
||||
drawing, which is a slight speedup. (#102379, patch from Soeren
|
||||
Sandmann).
|
||||
|
||||
Tue Jan 14 23:26:41 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): silly typo fix,
|
||||
only free scroll_to_path when the complete tree has been validated.
|
||||
This makes sure that we scrolled to the correct path.
|
||||
|
||||
Tue Jan 14 23:25:32 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_style_set): update the
|
||||
background of widget->window and bin->window. (Fixes #96650, reported
|
||||
by Dave Camp).
|
||||
|
||||
Tue Jan 14 23:24:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_clamp_node_visible): process
|
||||
updates before scrolling, avoiding a "selection streak". (Fixes
|
||||
#101235, patch from Soeren Sandmann).
|
||||
|
||||
Tue Jan 14 23:22:13 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): actually put values
|
||||
in the requisition using gtk_widget_size_request. (Fixes #100172,
|
||||
reported by Kjartan Maraas).
|
||||
|
||||
Tue Jan 14 23:19:45 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_rows_reordered): cancel the
|
||||
arrow animation timeout before we actually reorder the rbtree. If
|
||||
we don't do this we can get stuck arrows,
|
||||
(cancel_arrow_animation): new function. (Fixes #93629, part 2,
|
||||
reported and testcase provided by Hans Petter Jansson).
|
||||
|
||||
Tue Jan 14 23:18:21 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
|
||||
anchor_path should be start_path, not end_path. (Fixes #102618,
|
||||
patch from Carlos Garnacho Parro).
|
||||
|
||||
Tue Jan 14 23:16:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_move): also update the tail,
|
||||
only correct new_pos if we don't move to the head/tail.
|
||||
|
||||
Tue Jan 14 23:11:55 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_swap): take the path from
|
||||
the parent_iter if depth >= 1, so we send the reordered signal to
|
||||
the correct level, remove debugging printfs which I forgot the remove
|
||||
earlier (2.2.0 shipped with this, oops). (Fixes #103198, Reported and
|
||||
testcase provided by Matthew Tuck).
|
||||
|
||||
Tue Jan 14 20:58:44 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (invalite_last_column): split out actual column
|
||||
invalidation into invalite_column(),
|
||||
(gtk_tree_view_size_allocate_columns): invalidate column if the
|
||||
new width is larger than the old width.
|
||||
(fixes #102890, reported by Alex Duggan).
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkmain.c: Move inclusion of config.h and gtkintl.h earlier,
|
||||
as gtkprivate.h redefines GTK_LOCALEDIR on Win32, for run-time
|
||||
lookup.
|
||||
|
||||
* gdk/Makefile.am (libgdk_win32_2_0_la_DEPENDENCIES): Depend on
|
||||
gdk.def.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
|
||||
Implement by setting or clearing the WS_EX_TOOLWINDOW extended
|
||||
window style.
|
||||
(gdk_window_set_type_hint): Add all cases to the switch (not all
|
||||
do anything, though). Handle GDK_WINDOW_TYPE_HINT_TOOLBAR by
|
||||
calling gdk_window_set_skip_taskbar_hint(). This means that GTK
|
||||
won't know that the skip_taskbar hint is on for the window, is
|
||||
this bad?
|
||||
|
||||
Wed Jan 8 18:44:21 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: #include <stdlib.h> for putenv,
|
||||
<string.h> for strlen.
|
||||
|
||||
* gdk/x11/gdkscreen-x11.c: #include <stdlib.h> for getenv,
|
||||
<string.h> for strrchr.
|
||||
|
||||
* tests/testgtk.c (create_saved_position): "x" and "y" properties
|
||||
for widgets no longer exist, use gtk_window_move instead.
|
||||
|
||||
* test/testtextbuffer.c (check_get_set_text): cast strlen to
|
||||
int for g_error.
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct DLL and import library names, with
|
||||
GTK_API_VERSION in name, not GTK_MAJOR_VERSION.GTK_MINOR_VERSION.
|
||||
(DEVZIP): Add bin/{gdk-pixbuf-query-loaders,gtk-query-immodules-2.0,
|
||||
gtk-demo}.exe and share/gtk-2.0.
|
||||
|
||||
* configure.in: Improve check for dimm.h.
|
||||
|
||||
* configure.in: Set SOEXT to 'so' on Unix, 'dll' on Win32. Used in
|
||||
gdk-pixbuf/Makefile.am.
|
||||
|
||||
* gdk-pixbuf/makefile.mingw.in
|
||||
* gdk-pixbuf/pixops/makefile.mingw.in
|
||||
* gdk/makefile.mingw.in
|
||||
* gdk/win32/makefile.mingw.in
|
||||
* gtk/makefile.mingw.in: Remove. Not maintained anyway.
|
||||
|
||||
* gdk-pixbuf/Makefile.am
|
||||
* gdk-pixbuf/pixops/Makefile.am
|
||||
* gdk/Makefile.am
|
||||
* gdk/win32/Makefile.am
|
||||
* gtk/Makefile.am
|
||||
* configure.in: Remove makefile.mingw{,.in} from here, too.
|
||||
|
||||
* README.win32: Updates. Don't mention the now removed
|
||||
makefile.mingw files.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add a couple of missing entries.
|
||||
|
||||
* gdk/gdkkeynames.c: Include <string.h> for strcmp() and memcpy().
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Move dimm.h header clash workaround
|
||||
earlier.
|
||||
|
||||
* gdk/win32/rc/Makefile.am: Add hack to help
|
||||
build/win32/lt-compile-resource decide which kind of libtool
|
||||
object file to produce.
|
||||
|
||||
2003-01-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
C-Down step through the sequence of paragraph ends (old behaviour
|
||||
included paragraph starts). (#80340, patch by Narayana Pattipati)
|
||||
|
||||
* gtk/gtktextiter.c (_gtk_text_btree_get_iter_at_first_toggle):
|
||||
Check for a tag toggle at the start iterator before calling
|
||||
gtk_text_iter_forward_to_tag_toggle(). (#102090, patch by Daniel
|
||||
Elstner)
|
||||
|
||||
2003-01-04 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkfilesel.h (struct _GtkFileSelection): Add /*< public >*/
|
||||
and /*< private >*/ as appropriate. (#97211)
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Don't distribute gtk-zip.sh, but do
|
||||
distribute gtk-zip.sh.in.
|
||||
|
||||
* gtk-zip.sh.in (DEVZIP): Add gdk-pixbuf-csource.exe and .1.
|
||||
|
||||
2003-01-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_get_focus): Document that it may
|
||||
return NULL. (#102069)
|
||||
|
||||
2003-01-01 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/fnmatch.c (FNMATCH_TEST_CASES): #undef, since having
|
||||
a main() in the library is obviously bad.
|
||||
|
||||
2002-12-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_drag_data_received): Place the
|
||||
|
||||
@@ -1,3 +1,551 @@
|
||||
Sun Feb 2 10:03:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* === Released 2.2.1 ===
|
||||
|
||||
* configure.in: Version 2.2.1, Binary age 201, interface age 1.
|
||||
|
||||
* NEWS: More updates.
|
||||
|
||||
2003-02-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/gdk.def: Add gdk_screen_get_system_visual. Noticed by Ed
|
||||
Woods.
|
||||
|
||||
Fri Jan 31 17:48:53 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* demos/pixbuf-demo.c
|
||||
* demos/testpixbuf.c
|
||||
* demos/gtk-demo/pixbufs.c
|
||||
* tests/testtext.c: sync with HEAD (removed gtk_timeout_* usage)
|
||||
|
||||
Fri Jan 31 17:23:59 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): set_state
|
||||
on the tab_label before unparenting it, in case the unparent
|
||||
drops the refcount to 0.
|
||||
|
||||
Thu Jan 30 23:44:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* NEWS: Updates.
|
||||
|
||||
Fri Jan 31 00:28:18 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* NEWS: beginning of NEWS for 2.2.1.
|
||||
|
||||
Thu Jan 30 23:48:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_count_special_cell):
|
||||
only count the special cell if it is also visible,
|
||||
(_gtk_tree_view_column_get_neighbor_sizes): only take the width into
|
||||
account from visible cells,
|
||||
(gtk_tree_view_column_cell_get_position): likewise, (Reported and
|
||||
testcase provided by Vasco Alexandre da Silva Costa, via IRC,
|
||||
tracking bug was #104563).
|
||||
|
||||
Thu Jan 30 23:46:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
subtract expander space and focus line space from the extra space
|
||||
we are about the allocate. (Fixes #104635).
|
||||
|
||||
Thu Jan 30 23:42:03 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkstyle.c (apply_affine_on_point): fix rouding error
|
||||
(Fixes #96242, patch from Soeren Sandmann).
|
||||
|
||||
Thu Jan 30 16:54:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Patch from Soeren Sandmann
|
||||
to update the states of the tab label child
|
||||
widgets to match the state of the tabs.
|
||||
(#93389, Reported by Tommi Komulainen)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||
function that sets the icon's and label's packing options and
|
||||
visibility based on toolbar->style.
|
||||
|
||||
(gtk_toolbar_internal_insert_element):
|
||||
(gtk_real_toolbar_style_changed): Make use of
|
||||
set_child_packing_and_visibility() to clean up the code and get
|
||||
the packing right for icon-only/text-only toolbars. (#104679)
|
||||
|
||||
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||
|
||||
Thu Jan 30 16:30:54 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Remove gtk+.spec.in from
|
||||
EXTRA_DIST, and from dist rules. (#102231)
|
||||
|
||||
Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkrgb.c (gdk_rgb_try_colormap): Remove the
|
||||
attempt-to-allocate then free code. To handle multiple
|
||||
people allocating colors at the same time, we need
|
||||
to just go ahead and try. (#102213, Shivram U)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||
rectangle using the background color rather than relying on
|
||||
gdk_window_clear_area(), so that the palette works properly with
|
||||
pixmap themes. (#101732)
|
||||
|
||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||
to fill the drawing area in the background color.
|
||||
|
||||
Wed Jan 29 14:11:21 2003 Hidetoshi Tajima <hidetoshi.tajima@sun.com>
|
||||
|
||||
* modules/input/gtkimcontextxim.c (choose_better_style): fix a memory
|
||||
initialization error for selecting input style (#103549).
|
||||
|
||||
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkkeyuni.c (get_decimal_char): Make the
|
||||
translation of GDK_KP_Decimal dependent on LC_NUMERIC.
|
||||
(#101225)
|
||||
|
||||
Wed Jan 29 15:43:56 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
|
||||
Make up from the menu bar go to the end of the submenu.
|
||||
(#96114, Ian Peters.)
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate):
|
||||
Only do the select-but-not-activate stuff if the
|
||||
menu is already active. Otherwise, just activate.
|
||||
(#101690, Arvind Samptur)
|
||||
|
||||
Tue Jan 28 15:18:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* autogen.sh (have_automake): Fix version in complaint
|
||||
message about automake. (#104366, Rich Burridge)
|
||||
|
||||
Mon Jan 27 16:38:13 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Remove SOEXT stuff; it doesn't work portably.
|
||||
|
||||
Mon Jan 27 22:45:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_move): don't handle b if
|
||||
we appended/prepended, send the rows_reordered signal to the
|
||||
correct level ... (Reported by Matthew Tuck).
|
||||
|
||||
Mon Jan 27 22:43:11 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_helper): don't just bail
|
||||
out if the level only has one item, recurse over the child if there
|
||||
is one. (Fixes #100458, reported by Gaël Le Mignot).
|
||||
|
||||
Mon Jan 27 22:41:26 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_set_model),
|
||||
(gtk_tree_view_search_equal_func): make TreeView search handle
|
||||
all types which are transformable by GValue. (Fixes #99803, reported
|
||||
by Muktha Narayan).
|
||||
|
||||
Mon Jan 27 22:39:25 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_sort_column_id):
|
||||
*really* handle unsetting the ID. Slightly modified patch from
|
||||
Soeren Sandmann. Fixes #87556, reported by Jarek Dukat.
|
||||
|
||||
Mon Jan 27 22:33:43 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Fixes the total GtkTreeSortable mess, and #83195, reported by
|
||||
Jarek Dukat
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_get_sort_column_id),
|
||||
(gtk_tree_store_set_sort_column_id), (gtk_tree_store_set_sort_func),
|
||||
(gtk_tree_store_set_default_sort_func): use the constant
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID instead of -1, make functions
|
||||
work as advertised by the documentation.
|
||||
|
||||
* gtk/gtklistore.c (gtk_list_store_get_sort_column_id),
|
||||
(gtk_list_store_set_sort_column_id), (gtk_list_store_set_sort_func),
|
||||
(gtk_list_store_set_default_sort_func): likewise.
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_set_sort_column_id),
|
||||
(gtk_tree_model_set_sort_func),
|
||||
(gtk_tree_model_sort_set_default_sort_func): make functions work
|
||||
as advertised by the documentation.
|
||||
|
||||
Mon Jan 27 22:31:56 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): update focus_column
|
||||
before we decide if we edit. (fixes #100973, reported by Dave Cook).
|
||||
|
||||
Mon Jan 27 22:29:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Bug report and test case from Paolo Maggi via IRC.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_swap): update tail if needed,
|
||||
(gtk_list_store_move): update tail if needed.
|
||||
|
||||
Mon Jan 27 16:19:59 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_filter_func): event->any.window
|
||||
might be NULL. Use gtk_widget_get_display (widget)
|
||||
(#102860, Thomas Leonard)
|
||||
|
||||
Mon Jan 27 15:58:31 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Fix --without-modules/--disable-modules
|
||||
confusion that was causing --disable-modules not to work.
|
||||
(#102865, Akira Tagoh)
|
||||
|
||||
* configure.in: Fix problem with plain --with-xinput
|
||||
(#104266, Akira Tagoh)
|
||||
|
||||
2003-01-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
move bindings viewport-based when the cursor is invisible. (#78669)
|
||||
|
||||
2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_hide_all): Override hide_all
|
||||
in addition to show_all in order to keep them symmetric. (#102201)
|
||||
|
||||
2003-01-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_foreign_new_for_display,
|
||||
gdk_pixmap_lookup, gdk_pixmap_lookup_for_display): Implement.
|
||||
(#104108, Naofumi Yasufuku)
|
||||
|
||||
* gdk/gdk.def: Export the above.
|
||||
|
||||
Wed Jan 22 14:23:23 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (translate_key_event): add a "return" at
|
||||
the end of the function, so there is a statement following the "out"
|
||||
label in all cases (fixes #101961)
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
||||
|
||||
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
|
||||
Fix off-by-one error on the backward iteration loop,
|
||||
that was causing the wrong range to be redrawn.
|
||||
(at least part of #72734)
|
||||
|
||||
2003-01-21 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_size_allocate): Adjust the
|
||||
vadjustment value after changing its bounds. (fixes #101963 and
|
||||
#73562)
|
||||
|
||||
* gtk/gtkcolorsel.c (hex_changed): Fix clamping to [0,1] to avoid
|
||||
unnecessary roundtrip failures. (#93500)
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* configure.in: Added Amharic (am), Macedonian (mk)
|
||||
and Tamil (ta) to ALL_LINGUAS
|
||||
|
||||
2003-01-19 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix for #103614 and some other problems with GtkFileSelection on
|
||||
Windows:
|
||||
|
||||
* gtk/fnmatch.c (get_char): Need to use g_unichar_tolower(), not
|
||||
g_ascii_tolower(). Windows file names are case-insensitive for all
|
||||
Unicode letters.
|
||||
|
||||
* gtk/gtkfilesel.c: Instead of checking for G_OS_WIN32 or
|
||||
G_WITH_CYGWIN, check G_PLATFORM_WIN32. Move inclusion of gtkintl.h
|
||||
earlier, as it includes config.h unconditionally, and gtkprivate.h
|
||||
redefines GTK_LOCALEDIR.
|
||||
(struct _CompletionDirSent): Ifdef out the fields not used on
|
||||
Windows.
|
||||
(compare_utf8_filenames, compare_sys_filenames): Need different
|
||||
comparison implementation for UTF-8 file names and system locale
|
||||
file names on Win32. Cannot simply use g_ascii_strcasecmp(), but
|
||||
need to casefold all Unicode letters.
|
||||
(cmpl_completion_matches, open_dir, correct_parent): Ifdef out
|
||||
variables not used on Win32 to avoid warnings about unused
|
||||
variables.
|
||||
(open_ref_dir): Use g_path_skip_root() to skip past potential
|
||||
drive letter in front of the leading (back)slash.
|
||||
(open_new_dir): Ifdef out use of CompletionDirSent fields not
|
||||
there on Win32.
|
||||
(correct_parent): Bypass inode check also on Cygwin.
|
||||
|
||||
2003-01-15 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix bug noticed by Alex Shaduri: Tooltips and other
|
||||
GDK_WINDOW_TEMP windows were activated. This looked very odd, and
|
||||
was a regression from earlier versions.
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (show_window_internal): Fine-tune
|
||||
behaviour. Don't ever activate GDK_WINDOW_TEMP windows.
|
||||
(gdk_window_move, gdk_window_resize): Add debug logging.
|
||||
|
||||
* gdk/win32/gdkevents-win32.c (gdk_event_translate): When we get a
|
||||
WM_SIZE message for a non-visible (withdrawn) window, don't clear
|
||||
the GDK_WINDOW_STATE_WITHDRAWN bit. The window is still withdrawn
|
||||
even if its size changes.
|
||||
|
||||
Wed Jan 15 15:55:47 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksettings.c: Set the double click speed from
|
||||
XSETTINGS when creating a new GtkSettings object
|
||||
as well as when getting a notify. (#103601, reported
|
||||
by Louis Garcia)
|
||||
|
||||
Wed Jan 15 14:56:09 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_size_allocate):
|
||||
Show/hide the notebook event window as necessary,
|
||||
we weren't previously keeping the visibility updated
|
||||
properly. (#103599)
|
||||
|
||||
2002-12-29 Murray Cumming <murrayc@usa.net>
|
||||
|
||||
Fixes #102168. Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c, gtktreednd.c, gtktreestore.c:
|
||||
Actually implement the GtkTreeDragSource::row_draggable virtual
|
||||
function in GtkListStore and GtkTreeStore instead of just checking
|
||||
whether it's implemented at all. This means that DnD isn't broken by
|
||||
gtkmm's virtual function wrappers. The alternative would be to
|
||||
hard-code the TRUE return value into gtkmm's wrappers, but that's
|
||||
part of GTK+'s implementation, not it's API.
|
||||
|
||||
Tue Jan 14 23:54:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c: fix compiler warning.
|
||||
|
||||
Tue Jan 14 23:29:00 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
|
||||
make sure exposed pixbufs are clipped to the exposed area before
|
||||
drawing, which is a slight speedup. (#102379, patch from Soeren
|
||||
Sandmann).
|
||||
|
||||
Tue Jan 14 23:26:41 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): silly typo fix,
|
||||
only free scroll_to_path when the complete tree has been validated.
|
||||
This makes sure that we scrolled to the correct path.
|
||||
|
||||
Tue Jan 14 23:25:32 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_style_set): update the
|
||||
background of widget->window and bin->window. (Fixes #96650, reported
|
||||
by Dave Camp).
|
||||
|
||||
Tue Jan 14 23:24:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_clamp_node_visible): process
|
||||
updates before scrolling, avoiding a "selection streak". (Fixes
|
||||
#101235, patch from Soeren Sandmann).
|
||||
|
||||
Tue Jan 14 23:22:13 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): actually put values
|
||||
in the requisition using gtk_widget_size_request. (Fixes #100172,
|
||||
reported by Kjartan Maraas).
|
||||
|
||||
Tue Jan 14 23:19:45 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_rows_reordered): cancel the
|
||||
arrow animation timeout before we actually reorder the rbtree. If
|
||||
we don't do this we can get stuck arrows,
|
||||
(cancel_arrow_animation): new function. (Fixes #93629, part 2,
|
||||
reported and testcase provided by Hans Petter Jansson).
|
||||
|
||||
Tue Jan 14 23:18:21 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
|
||||
anchor_path should be start_path, not end_path. (Fixes #102618,
|
||||
patch from Carlos Garnacho Parro).
|
||||
|
||||
Tue Jan 14 23:16:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_move): also update the tail,
|
||||
only correct new_pos if we don't move to the head/tail.
|
||||
|
||||
Tue Jan 14 23:11:55 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_swap): take the path from
|
||||
the parent_iter if depth >= 1, so we send the reordered signal to
|
||||
the correct level, remove debugging printfs which I forgot the remove
|
||||
earlier (2.2.0 shipped with this, oops). (Fixes #103198, Reported and
|
||||
testcase provided by Matthew Tuck).
|
||||
|
||||
Tue Jan 14 20:58:44 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (invalite_last_column): split out actual column
|
||||
invalidation into invalite_column(),
|
||||
(gtk_tree_view_size_allocate_columns): invalidate column if the
|
||||
new width is larger than the old width.
|
||||
(fixes #102890, reported by Alex Duggan).
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkmain.c: Move inclusion of config.h and gtkintl.h earlier,
|
||||
as gtkprivate.h redefines GTK_LOCALEDIR on Win32, for run-time
|
||||
lookup.
|
||||
|
||||
* gdk/Makefile.am (libgdk_win32_2_0_la_DEPENDENCIES): Depend on
|
||||
gdk.def.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
|
||||
Implement by setting or clearing the WS_EX_TOOLWINDOW extended
|
||||
window style.
|
||||
(gdk_window_set_type_hint): Add all cases to the switch (not all
|
||||
do anything, though). Handle GDK_WINDOW_TYPE_HINT_TOOLBAR by
|
||||
calling gdk_window_set_skip_taskbar_hint(). This means that GTK
|
||||
won't know that the skip_taskbar hint is on for the window, is
|
||||
this bad?
|
||||
|
||||
Wed Jan 8 18:44:21 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: #include <stdlib.h> for putenv,
|
||||
<string.h> for strlen.
|
||||
|
||||
* gdk/x11/gdkscreen-x11.c: #include <stdlib.h> for getenv,
|
||||
<string.h> for strrchr.
|
||||
|
||||
* tests/testgtk.c (create_saved_position): "x" and "y" properties
|
||||
for widgets no longer exist, use gtk_window_move instead.
|
||||
|
||||
* test/testtextbuffer.c (check_get_set_text): cast strlen to
|
||||
int for g_error.
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct DLL and import library names, with
|
||||
GTK_API_VERSION in name, not GTK_MAJOR_VERSION.GTK_MINOR_VERSION.
|
||||
(DEVZIP): Add bin/{gdk-pixbuf-query-loaders,gtk-query-immodules-2.0,
|
||||
gtk-demo}.exe and share/gtk-2.0.
|
||||
|
||||
* configure.in: Improve check for dimm.h.
|
||||
|
||||
* configure.in: Set SOEXT to 'so' on Unix, 'dll' on Win32. Used in
|
||||
gdk-pixbuf/Makefile.am.
|
||||
|
||||
* gdk-pixbuf/makefile.mingw.in
|
||||
* gdk-pixbuf/pixops/makefile.mingw.in
|
||||
* gdk/makefile.mingw.in
|
||||
* gdk/win32/makefile.mingw.in
|
||||
* gtk/makefile.mingw.in: Remove. Not maintained anyway.
|
||||
|
||||
* gdk-pixbuf/Makefile.am
|
||||
* gdk-pixbuf/pixops/Makefile.am
|
||||
* gdk/Makefile.am
|
||||
* gdk/win32/Makefile.am
|
||||
* gtk/Makefile.am
|
||||
* configure.in: Remove makefile.mingw{,.in} from here, too.
|
||||
|
||||
* README.win32: Updates. Don't mention the now removed
|
||||
makefile.mingw files.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add a couple of missing entries.
|
||||
|
||||
* gdk/gdkkeynames.c: Include <string.h> for strcmp() and memcpy().
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Move dimm.h header clash workaround
|
||||
earlier.
|
||||
|
||||
* gdk/win32/rc/Makefile.am: Add hack to help
|
||||
build/win32/lt-compile-resource decide which kind of libtool
|
||||
object file to produce.
|
||||
|
||||
2003-01-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
C-Down step through the sequence of paragraph ends (old behaviour
|
||||
included paragraph starts). (#80340, patch by Narayana Pattipati)
|
||||
|
||||
* gtk/gtktextiter.c (_gtk_text_btree_get_iter_at_first_toggle):
|
||||
Check for a tag toggle at the start iterator before calling
|
||||
gtk_text_iter_forward_to_tag_toggle(). (#102090, patch by Daniel
|
||||
Elstner)
|
||||
|
||||
2003-01-04 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkfilesel.h (struct _GtkFileSelection): Add /*< public >*/
|
||||
and /*< private >*/ as appropriate. (#97211)
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Don't distribute gtk-zip.sh, but do
|
||||
distribute gtk-zip.sh.in.
|
||||
|
||||
* gtk-zip.sh.in (DEVZIP): Add gdk-pixbuf-csource.exe and .1.
|
||||
|
||||
2003-01-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_get_focus): Document that it may
|
||||
return NULL. (#102069)
|
||||
|
||||
2003-01-01 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/fnmatch.c (FNMATCH_TEST_CASES): #undef, since having
|
||||
a main() in the library is obviously bad.
|
||||
|
||||
2002-12-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_drag_data_received): Place the
|
||||
|
||||
@@ -1,3 +1,551 @@
|
||||
Sun Feb 2 10:03:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* === Released 2.2.1 ===
|
||||
|
||||
* configure.in: Version 2.2.1, Binary age 201, interface age 1.
|
||||
|
||||
* NEWS: More updates.
|
||||
|
||||
2003-02-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/gdk.def: Add gdk_screen_get_system_visual. Noticed by Ed
|
||||
Woods.
|
||||
|
||||
Fri Jan 31 17:48:53 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* demos/pixbuf-demo.c
|
||||
* demos/testpixbuf.c
|
||||
* demos/gtk-demo/pixbufs.c
|
||||
* tests/testtext.c: sync with HEAD (removed gtk_timeout_* usage)
|
||||
|
||||
Fri Jan 31 17:23:59 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): set_state
|
||||
on the tab_label before unparenting it, in case the unparent
|
||||
drops the refcount to 0.
|
||||
|
||||
Thu Jan 30 23:44:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* NEWS: Updates.
|
||||
|
||||
Fri Jan 31 00:28:18 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* NEWS: beginning of NEWS for 2.2.1.
|
||||
|
||||
Thu Jan 30 23:48:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_count_special_cell):
|
||||
only count the special cell if it is also visible,
|
||||
(_gtk_tree_view_column_get_neighbor_sizes): only take the width into
|
||||
account from visible cells,
|
||||
(gtk_tree_view_column_cell_get_position): likewise, (Reported and
|
||||
testcase provided by Vasco Alexandre da Silva Costa, via IRC,
|
||||
tracking bug was #104563).
|
||||
|
||||
Thu Jan 30 23:46:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_process_action):
|
||||
subtract expander space and focus line space from the extra space
|
||||
we are about the allocate. (Fixes #104635).
|
||||
|
||||
Thu Jan 30 23:42:03 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkstyle.c (apply_affine_on_point): fix rouding error
|
||||
(Fixes #96242, patch from Soeren Sandmann).
|
||||
|
||||
Thu Jan 30 16:54:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c: Patch from Soeren Sandmann
|
||||
to update the states of the tab label child
|
||||
widgets to match the state of the tabs.
|
||||
(#93389, Reported by Tommi Komulainen)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||
function that sets the icon's and label's packing options and
|
||||
visibility based on toolbar->style.
|
||||
|
||||
(gtk_toolbar_internal_insert_element):
|
||||
(gtk_real_toolbar_style_changed): Make use of
|
||||
set_child_packing_and_visibility() to clean up the code and get
|
||||
the packing right for icon-only/text-only toolbars. (#104679)
|
||||
|
||||
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||
|
||||
Thu Jan 30 16:30:54 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Remove gtk+.spec.in from
|
||||
EXTRA_DIST, and from dist rules. (#102231)
|
||||
|
||||
Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkrgb.c (gdk_rgb_try_colormap): Remove the
|
||||
attempt-to-allocate then free code. To handle multiple
|
||||
people allocating colors at the same time, we need
|
||||
to just go ahead and try. (#102213, Shivram U)
|
||||
|
||||
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||
rectangle using the background color rather than relying on
|
||||
gdk_window_clear_area(), so that the palette works properly with
|
||||
pixmap themes. (#101732)
|
||||
|
||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||
to fill the drawing area in the background color.
|
||||
|
||||
Wed Jan 29 14:11:21 2003 Hidetoshi Tajima <hidetoshi.tajima@sun.com>
|
||||
|
||||
* modules/input/gtkimcontextxim.c (choose_better_style): fix a memory
|
||||
initialization error for selecting input style (#103549).
|
||||
|
||||
Wed Jan 29 17:02:41 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gdk/gdkkeyuni.c (get_decimal_char): Make the
|
||||
translation of GDK_KP_Decimal dependent on LC_NUMERIC.
|
||||
(#101225)
|
||||
|
||||
Wed Jan 29 15:43:56 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
|
||||
Make up from the menu bar go to the end of the submenu.
|
||||
(#96114, Ian Peters.)
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate):
|
||||
Only do the select-but-not-activate stuff if the
|
||||
menu is already active. Otherwise, just activate.
|
||||
(#101690, Arvind Samptur)
|
||||
|
||||
Tue Jan 28 15:18:24 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* autogen.sh (have_automake): Fix version in complaint
|
||||
message about automake. (#104366, Rich Burridge)
|
||||
|
||||
Mon Jan 27 16:38:13 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Remove SOEXT stuff; it doesn't work portably.
|
||||
|
||||
Mon Jan 27 22:45:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_move): don't handle b if
|
||||
we appended/prepended, send the rows_reordered signal to the
|
||||
correct level ... (Reported by Matthew Tuck).
|
||||
|
||||
Mon Jan 27 22:43:11 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_sort_helper): don't just bail
|
||||
out if the level only has one item, recurse over the child if there
|
||||
is one. (Fixes #100458, reported by Gaël Le Mignot).
|
||||
|
||||
Mon Jan 27 22:41:26 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_set_model),
|
||||
(gtk_tree_view_search_equal_func): make TreeView search handle
|
||||
all types which are transformable by GValue. (Fixes #99803, reported
|
||||
by Muktha Narayan).
|
||||
|
||||
Mon Jan 27 22:39:25 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_sort_column_id):
|
||||
*really* handle unsetting the ID. Slightly modified patch from
|
||||
Soeren Sandmann. Fixes #87556, reported by Jarek Dukat.
|
||||
|
||||
Mon Jan 27 22:33:43 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Fixes the total GtkTreeSortable mess, and #83195, reported by
|
||||
Jarek Dukat
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_get_sort_column_id),
|
||||
(gtk_tree_store_set_sort_column_id), (gtk_tree_store_set_sort_func),
|
||||
(gtk_tree_store_set_default_sort_func): use the constant
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID instead of -1, make functions
|
||||
work as advertised by the documentation.
|
||||
|
||||
* gtk/gtklistore.c (gtk_list_store_get_sort_column_id),
|
||||
(gtk_list_store_set_sort_column_id), (gtk_list_store_set_sort_func),
|
||||
(gtk_list_store_set_default_sort_func): likewise.
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_set_sort_column_id),
|
||||
(gtk_tree_model_set_sort_func),
|
||||
(gtk_tree_model_sort_set_default_sort_func): make functions work
|
||||
as advertised by the documentation.
|
||||
|
||||
Mon Jan 27 22:31:56 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_button_press): update focus_column
|
||||
before we decide if we edit. (fixes #100973, reported by Dave Cook).
|
||||
|
||||
Mon Jan 27 22:29:30 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
Bug report and test case from Paolo Maggi via IRC.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_swap): update tail if needed,
|
||||
(gtk_list_store_move): update tail if needed.
|
||||
|
||||
Mon Jan 27 16:19:59 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksocket.c (gtk_socket_filter_func): event->any.window
|
||||
might be NULL. Use gtk_widget_get_display (widget)
|
||||
(#102860, Thomas Leonard)
|
||||
|
||||
Mon Jan 27 15:58:31 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Fix --without-modules/--disable-modules
|
||||
confusion that was causing --disable-modules not to work.
|
||||
(#102865, Akira Tagoh)
|
||||
|
||||
* configure.in: Fix problem with plain --with-xinput
|
||||
(#104266, Akira Tagoh)
|
||||
|
||||
2003-01-24 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
move bindings viewport-based when the cursor is invisible. (#78669)
|
||||
|
||||
2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_hide_all): Override hide_all
|
||||
in addition to show_all in order to keep them symmetric. (#102201)
|
||||
|
||||
2003-01-22 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkpixmap-win32.c (gdk_pixmap_foreign_new_for_display,
|
||||
gdk_pixmap_lookup, gdk_pixmap_lookup_for_display): Implement.
|
||||
(#104108, Naofumi Yasufuku)
|
||||
|
||||
* gdk/gdk.def: Export the above.
|
||||
|
||||
Wed Jan 22 14:23:23 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkevents-x11.c (translate_key_event): add a "return" at
|
||||
the end of the function, so there is a statement following the "out"
|
||||
label in all cases (fixes #101961)
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* configure.in: Added "mn" to ALL_LINGUAS.
|
||||
|
||||
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
|
||||
Fix off-by-one error on the backward iteration loop,
|
||||
that was causing the wrong range to be redrawn.
|
||||
(at least part of #72734)
|
||||
|
||||
2003-01-21 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_size_allocate): Adjust the
|
||||
vadjustment value after changing its bounds. (fixes #101963 and
|
||||
#73562)
|
||||
|
||||
* gtk/gtkcolorsel.c (hex_changed): Fix clamping to [0,1] to avoid
|
||||
unnecessary roundtrip failures. (#93500)
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* configure.in: Added Amharic (am), Macedonian (mk)
|
||||
and Tamil (ta) to ALL_LINGUAS
|
||||
|
||||
2003-01-19 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix for #103614 and some other problems with GtkFileSelection on
|
||||
Windows:
|
||||
|
||||
* gtk/fnmatch.c (get_char): Need to use g_unichar_tolower(), not
|
||||
g_ascii_tolower(). Windows file names are case-insensitive for all
|
||||
Unicode letters.
|
||||
|
||||
* gtk/gtkfilesel.c: Instead of checking for G_OS_WIN32 or
|
||||
G_WITH_CYGWIN, check G_PLATFORM_WIN32. Move inclusion of gtkintl.h
|
||||
earlier, as it includes config.h unconditionally, and gtkprivate.h
|
||||
redefines GTK_LOCALEDIR.
|
||||
(struct _CompletionDirSent): Ifdef out the fields not used on
|
||||
Windows.
|
||||
(compare_utf8_filenames, compare_sys_filenames): Need different
|
||||
comparison implementation for UTF-8 file names and system locale
|
||||
file names on Win32. Cannot simply use g_ascii_strcasecmp(), but
|
||||
need to casefold all Unicode letters.
|
||||
(cmpl_completion_matches, open_dir, correct_parent): Ifdef out
|
||||
variables not used on Win32 to avoid warnings about unused
|
||||
variables.
|
||||
(open_ref_dir): Use g_path_skip_root() to skip past potential
|
||||
drive letter in front of the leading (back)slash.
|
||||
(open_new_dir): Ifdef out use of CompletionDirSent fields not
|
||||
there on Win32.
|
||||
(correct_parent): Bypass inode check also on Cygwin.
|
||||
|
||||
2003-01-15 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Fix bug noticed by Alex Shaduri: Tooltips and other
|
||||
GDK_WINDOW_TEMP windows were activated. This looked very odd, and
|
||||
was a regression from earlier versions.
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (show_window_internal): Fine-tune
|
||||
behaviour. Don't ever activate GDK_WINDOW_TEMP windows.
|
||||
(gdk_window_move, gdk_window_resize): Add debug logging.
|
||||
|
||||
* gdk/win32/gdkevents-win32.c (gdk_event_translate): When we get a
|
||||
WM_SIZE message for a non-visible (withdrawn) window, don't clear
|
||||
the GDK_WINDOW_STATE_WITHDRAWN bit. The window is still withdrawn
|
||||
even if its size changes.
|
||||
|
||||
Wed Jan 15 15:55:47 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtksettings.c: Set the double click speed from
|
||||
XSETTINGS when creating a new GtkSettings object
|
||||
as well as when getting a notify. (#103601, reported
|
||||
by Louis Garcia)
|
||||
|
||||
Wed Jan 15 14:56:09 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_size_allocate):
|
||||
Show/hide the notebook event window as necessary,
|
||||
we weren't previously keeping the visibility updated
|
||||
properly. (#103599)
|
||||
|
||||
2002-12-29 Murray Cumming <murrayc@usa.net>
|
||||
|
||||
Fixes #102168. Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c, gtktreednd.c, gtktreestore.c:
|
||||
Actually implement the GtkTreeDragSource::row_draggable virtual
|
||||
function in GtkListStore and GtkTreeStore instead of just checking
|
||||
whether it's implemented at all. This means that DnD isn't broken by
|
||||
gtkmm's virtual function wrappers. The alternative would be to
|
||||
hard-code the TRUE return value into gtkmm's wrappers, but that's
|
||||
part of GTK+'s implementation, not it's API.
|
||||
|
||||
Tue Jan 14 23:54:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c: fix compiler warning.
|
||||
|
||||
Tue Jan 14 23:29:00 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
|
||||
make sure exposed pixbufs are clipped to the exposed area before
|
||||
drawing, which is a slight speedup. (#102379, patch from Soeren
|
||||
Sandmann).
|
||||
|
||||
Tue Jan 14 23:26:41 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): silly typo fix,
|
||||
only free scroll_to_path when the complete tree has been validated.
|
||||
This makes sure that we scrolled to the correct path.
|
||||
|
||||
Tue Jan 14 23:25:32 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_style_set): update the
|
||||
background of widget->window and bin->window. (Fixes #96650, reported
|
||||
by Dave Camp).
|
||||
|
||||
Tue Jan 14 23:24:02 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_clamp_node_visible): process
|
||||
updates before scrolling, avoiding a "selection streak". (Fixes
|
||||
#101235, patch from Soeren Sandmann).
|
||||
|
||||
Tue Jan 14 23:22:13 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (validate_visible_area): actually put values
|
||||
in the requisition using gtk_widget_size_request. (Fixes #100172,
|
||||
reported by Kjartan Maraas).
|
||||
|
||||
Tue Jan 14 23:19:45 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (gtk_tree_view_rows_reordered): cancel the
|
||||
arrow animation timeout before we actually reorder the rbtree. If
|
||||
we don't do this we can get stuck arrows,
|
||||
(cancel_arrow_animation): new function. (Fixes #93629, part 2,
|
||||
reported and testcase provided by Hans Petter Jansson).
|
||||
|
||||
Tue Jan 14 23:18:21 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
|
||||
anchor_path should be start_path, not end_path. (Fixes #102618,
|
||||
patch from Carlos Garnacho Parro).
|
||||
|
||||
Tue Jan 14 23:16:15 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtkliststore.c (gtk_list_store_move): also update the tail,
|
||||
only correct new_pos if we don't move to the head/tail.
|
||||
|
||||
Tue Jan 14 23:11:55 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_swap): take the path from
|
||||
the parent_iter if depth >= 1, so we send the reordered signal to
|
||||
the correct level, remove debugging printfs which I forgot the remove
|
||||
earlier (2.2.0 shipped with this, oops). (Fixes #103198, Reported and
|
||||
testcase provided by Matthew Tuck).
|
||||
|
||||
Tue Jan 14 20:58:44 2003 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
Merge from HEAD.
|
||||
|
||||
* gtk/gtktreeview.c (invalite_last_column): split out actual column
|
||||
invalidation into invalite_column(),
|
||||
(gtk_tree_view_size_allocate_columns): invalidate column if the
|
||||
new width is larger than the old width.
|
||||
(fixes #102890, reported by Alex Duggan).
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkmain.c: Move inclusion of config.h and gtkintl.h earlier,
|
||||
as gtkprivate.h redefines GTK_LOCALEDIR on Win32, for run-time
|
||||
lookup.
|
||||
|
||||
* gdk/Makefile.am (libgdk_win32_2_0_la_DEPENDENCIES): Depend on
|
||||
gdk.def.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (gdk_window_set_skip_taskbar_hint):
|
||||
Implement by setting or clearing the WS_EX_TOOLWINDOW extended
|
||||
window style.
|
||||
(gdk_window_set_type_hint): Add all cases to the switch (not all
|
||||
do anything, though). Handle GDK_WINDOW_TYPE_HINT_TOOLBAR by
|
||||
calling gdk_window_set_skip_taskbar_hint(). This means that GTK
|
||||
won't know that the skip_taskbar hint is on for the window, is
|
||||
this bad?
|
||||
|
||||
Wed Jan 8 18:44:21 2003 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* gdk/x11/gdkdisplay-x11.c: #include <stdlib.h> for putenv,
|
||||
<string.h> for strlen.
|
||||
|
||||
* gdk/x11/gdkscreen-x11.c: #include <stdlib.h> for getenv,
|
||||
<string.h> for strrchr.
|
||||
|
||||
* tests/testgtk.c (create_saved_position): "x" and "y" properties
|
||||
for widgets no longer exist, use gtk_window_move instead.
|
||||
|
||||
* test/testtextbuffer.c (check_get_set_text): cast strlen to
|
||||
int for g_error.
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk-zip.sh.in: Use correct DLL and import library names, with
|
||||
GTK_API_VERSION in name, not GTK_MAJOR_VERSION.GTK_MINOR_VERSION.
|
||||
(DEVZIP): Add bin/{gdk-pixbuf-query-loaders,gtk-query-immodules-2.0,
|
||||
gtk-demo}.exe and share/gtk-2.0.
|
||||
|
||||
* configure.in: Improve check for dimm.h.
|
||||
|
||||
* configure.in: Set SOEXT to 'so' on Unix, 'dll' on Win32. Used in
|
||||
gdk-pixbuf/Makefile.am.
|
||||
|
||||
* gdk-pixbuf/makefile.mingw.in
|
||||
* gdk-pixbuf/pixops/makefile.mingw.in
|
||||
* gdk/makefile.mingw.in
|
||||
* gdk/win32/makefile.mingw.in
|
||||
* gtk/makefile.mingw.in: Remove. Not maintained anyway.
|
||||
|
||||
* gdk-pixbuf/Makefile.am
|
||||
* gdk-pixbuf/pixops/Makefile.am
|
||||
* gdk/Makefile.am
|
||||
* gdk/win32/Makefile.am
|
||||
* gtk/Makefile.am
|
||||
* configure.in: Remove makefile.mingw{,.in} from here, too.
|
||||
|
||||
* README.win32: Updates. Don't mention the now removed
|
||||
makefile.mingw files.
|
||||
|
||||
* gdk/gdk.def
|
||||
* gtk/gtk.def: Add a couple of missing entries.
|
||||
|
||||
* gdk/gdkkeynames.c: Include <string.h> for strcmp() and memcpy().
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Move dimm.h header clash workaround
|
||||
earlier.
|
||||
|
||||
* gdk/win32/rc/Makefile.am: Add hack to help
|
||||
build/win32/lt-compile-resource decide which kind of libtool
|
||||
object file to produce.
|
||||
|
||||
2003-01-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal): Make
|
||||
C-Down step through the sequence of paragraph ends (old behaviour
|
||||
included paragraph starts). (#80340, patch by Narayana Pattipati)
|
||||
|
||||
* gtk/gtktextiter.c (_gtk_text_btree_get_iter_at_first_toggle):
|
||||
Check for a tag toggle at the start iterator before calling
|
||||
gtk_text_iter_forward_to_tag_toggle(). (#102090, patch by Daniel
|
||||
Elstner)
|
||||
|
||||
2003-01-04 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkfilesel.h (struct _GtkFileSelection): Add /*< public >*/
|
||||
and /*< private >*/ as appropriate. (#97211)
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Don't distribute gtk-zip.sh, but do
|
||||
distribute gtk-zip.sh.in.
|
||||
|
||||
* gtk-zip.sh.in (DEVZIP): Add gdk-pixbuf-csource.exe and .1.
|
||||
|
||||
2003-01-02 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkwindow.c (gtk_window_get_focus): Document that it may
|
||||
return NULL. (#102069)
|
||||
|
||||
2003-01-01 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/fnmatch.c (FNMATCH_TEST_CASES): #undef, since having
|
||||
a main() in the library is obviously bad.
|
||||
|
||||
2002-12-27 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtktextview.c (gtk_text_view_drag_data_received): Place the
|
||||
|
||||
@@ -22,8 +22,8 @@ GTK+ requires the following packages:
|
||||
Simple install procedure
|
||||
========================
|
||||
|
||||
% gzip -cd gtk+-2.2.0.tar.gz | tar xvf - # unpack the sources
|
||||
% cd gtk+-2.2.0 # change to the toplevel directory
|
||||
% gzip -cd gtk+-2.2.1.tar.gz | tar xvf - # unpack the sources
|
||||
% cd gtk+-2.2.1 # change to the toplevel directory
|
||||
% ./configure # run the `configure' script
|
||||
% make # build GTK
|
||||
[ Become root if necessary ]
|
||||
|
||||
+3
-5
@@ -8,7 +8,6 @@ AUTOMAKE_OPTIONS = 1.4
|
||||
|
||||
EXTRA_DIST = \
|
||||
HACKING \
|
||||
gtk+.spec.in \
|
||||
makecopyright \
|
||||
NEWS.pre-1-0 \
|
||||
ChangeLog.pre-1-0 \
|
||||
@@ -17,7 +16,7 @@ EXTRA_DIST = \
|
||||
README.cvs-commits \
|
||||
README.win32 \
|
||||
config.h.win32 \
|
||||
gtk-zip.sh \
|
||||
gtk-zip.sh.in \
|
||||
sanitize-la.sh \
|
||||
po/README.translators \
|
||||
po/makefile.mingw \
|
||||
@@ -149,14 +148,13 @@ install-data-hook:
|
||||
rm -f gdk-2.0.pc && cp -f gdk-$(GDKTARGET)-2.0.pc gdk-2.0.pc && \
|
||||
rm -f gtk+-2.0.pc && cp -f gtk+-$(GDKTARGET)-2.0.pc gtk+-2.0.pc)
|
||||
|
||||
dist-hook: gtk+.spec
|
||||
dist-hook:
|
||||
if test -f $(srcdir)/INSTALL.in && test -f $(srcdir)/README.in ; then \
|
||||
CONFIG_FILES="INSTALL:$(srcdir)/INSTALL.in README:$(srcdir)/README.in" \
|
||||
CONFIG_HEADERS= \
|
||||
$(SHELL) config.status \
|
||||
&& cp INSTALL README $(distdir) ; \
|
||||
fi \
|
||||
&& cp gtk+.spec $(distdir)
|
||||
fi
|
||||
|
||||
.PHONY: files release sanity snapshot
|
||||
|
||||
|
||||
@@ -1,3 +1,36 @@
|
||||
Overview of Changes in GTK+ 2.2.1
|
||||
=================================
|
||||
* Win32 [Tor Lillqvist]
|
||||
- Improve setting of window position / decorations
|
||||
- Implement gdk_pixmap_foreign_new() [Naofumi Yasufuku]
|
||||
- Fix various file selection bugs
|
||||
- Improve scheme for locating pixbuf loader modules
|
||||
- Miscellaneous fixes [Alex Shaduri, Kenichi SUTO, Ed Woods]
|
||||
* GtkTreeView [Kristian Rietveld]
|
||||
- made GtkTreeSortable work as the documentation advertises [Jarek Dukat]
|
||||
- fixed gtk_tree_view_set_sort_column_id so you can disable sorting [Soeren
|
||||
Sandmann, Jarek Dukat]
|
||||
- TreeView search now works on all values transformable by GValue and not
|
||||
just strings [Muktha Narayan]
|
||||
- _move/_swap fixage in the Stores [Matthew Tuck, Paolo Maggi]
|
||||
- a lot of misc bug fixes [Alex Duggan, Carlos Garnacho Parro, Hans Petter
|
||||
Jansson, Kjartan Maraas, Soeren, Dave Camp, Murray Cumming, Dave Cook,
|
||||
Gaël Le Mignot, Vasco Alexandre da Silva Costa]
|
||||
* GtkTextView [Matthias Clasen]
|
||||
- Fix keynav with invisible cursor
|
||||
- Fix misdrawing of cursor [Owen Taylor] and selection
|
||||
- Many miscellaneous fixes [Narayana Pattipati, Daniel Elstner]
|
||||
* Fix problem with accidental inclusion of a main() [Matthias]
|
||||
* Documentation improvements [Matthias, Havoc Pennington]
|
||||
* Fix problem with GtkColorsel and pixmap themes [Daniel]
|
||||
* Fix race condition with GdkRGB in PseudoColor [Shivaram Upadhyayula]
|
||||
* Warning fixes [Manish Singh]
|
||||
* configure fixes [Akira Tagoh]
|
||||
* New and updated translations (ca,de,es,et,ko,mn,pl,pt,vi,zh_CN)
|
||||
* Miscellaneous bug fixes [Matthias, Daniel, Martin Gansser, Louis Garcia,
|
||||
Tommi Komulainen, Thomas Leonard, Ian Peters, Arvind Samptur,
|
||||
Soeren Sandmann, Hidetoshi Tajima, Owen]
|
||||
|
||||
Overview of Changes in GTK+ 2.2.0
|
||||
=================================
|
||||
* Fix problem with the DND code and event filters [Bolian Yin, Owen Taylor]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
General Information
|
||||
===================
|
||||
|
||||
This is GTK+ version 2.2.0. GTK+ is a multi-platform toolkit for
|
||||
This is GTK+ version 2.2.1. 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.
|
||||
|
||||
+3
-8
@@ -33,16 +33,11 @@ Alternative 1 also generates Microsoft import libraries (.lib), if you
|
||||
have lib.exe available. It might also work for cross-compilation from
|
||||
Unix.
|
||||
|
||||
There are hand-written makefiles for mingw (look for makefile.mingw in
|
||||
various directories), but those haven't been kept up-to-date, and
|
||||
probably won't work without editing. Sorry. If you make them work
|
||||
again, by all means do submit patches.
|
||||
|
||||
Note that I use method 1 myself. Hans Breuer has been taking care of
|
||||
the MSVC makefiles. At times, we disagree a bit about various issues,
|
||||
and the makefile.msc files might not produce identically named DLLs
|
||||
and import libraries as the "autoconfiscated" makefiles and libtool
|
||||
do.
|
||||
and for instance the makefile.msc files will not produce identically
|
||||
named DLLs and import libraries as the "autoconfiscated" makefiles and
|
||||
libtool do. If this bothers you, you will have to fix the makefiles.
|
||||
|
||||
Using GTK+ on Win32
|
||||
===================
|
||||
|
||||
+2
-2
@@ -50,8 +50,8 @@ if automake-1.4 --version < /dev/null > /dev/null 2>&1 ; then
|
||||
fi
|
||||
if $have_automake ; then : ; else
|
||||
echo
|
||||
echo "You must have automake 1.4-p1 installed to compile $PROJECT."
|
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake/automake-1.4-p1.tar.gz"
|
||||
echo "You must have automake 1.4-p6 installed to compile $PROJECT."
|
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake/automake-1.4-p6.tar.gz"
|
||||
echo "(or a newer version if it is available)"
|
||||
DIE=1
|
||||
fi
|
||||
|
||||
+12
-22
@@ -32,9 +32,9 @@ GLIB_AC_DIVERT_BEFORE_HELP([
|
||||
#
|
||||
GTK_MAJOR_VERSION=2
|
||||
GTK_MINOR_VERSION=2
|
||||
GTK_MICRO_VERSION=0
|
||||
GTK_INTERFACE_AGE=0
|
||||
GTK_BINARY_AGE=200
|
||||
GTK_MICRO_VERSION=1
|
||||
GTK_INTERFACE_AGE=1
|
||||
GTK_BINARY_AGE=201
|
||||
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
|
||||
@@ -389,7 +389,7 @@ AC_SUBST(STRIP_BEGIN)
|
||||
AC_SUBST(STRIP_END)
|
||||
|
||||
# i18n stuff
|
||||
ALL_LINGUAS="az be bg ca cs cy da de el en_GB en@IPA es et eu fa fi fr ga gl he hi hr hu ia it ja ko lt lv ms nl nn no pl pt pt_BR ro ru sk sl sp sr sv tr uk vi wa zh_TW zh_CN"
|
||||
ALL_LINGUAS="am az be bg ca cs cy da de el en_GB en@IPA es et eu fa fi fr ga gl he hi hr hu ia it ja ko lt lv mk mn ms nl nn no pl pt pt_BR ro ru sk sl sp sr sv ta tr uk vi wa zh_TW zh_CN"
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
LIBS="$LIBS $INTLLIBS"
|
||||
|
||||
@@ -470,13 +470,15 @@ if test "${with_ie55+set}" = set && test $with_ie55 != no; then
|
||||
AC_MSG_CHECKING([for dimm.h])
|
||||
saved_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -idirafter $with_ie55/Include"
|
||||
AC_TRY_COMPILE([#include <windows.h>
|
||||
#include <objbase.h>
|
||||
AC_TRY_COMPILE([/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */
|
||||
#ifdef __GNUC__
|
||||
/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */
|
||||
#define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA
|
||||
#define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#include <objbase.h>
|
||||
#include <imm.h>
|
||||
#ifdef __GNUC__
|
||||
#undef IMEMENUITEMINFOA
|
||||
#undef IMEMENUITEMINFOW
|
||||
#endif
|
||||
@@ -632,17 +634,11 @@ fi
|
||||
|
||||
AC_MSG_CHECKING(whether to build gmodulized gdk-pixbuf)
|
||||
|
||||
AC_ARG_ENABLE(modules, [ --disable-modules disable dynamic module loading],[
|
||||
if test x$withval = xyes; then
|
||||
with_modules=yes
|
||||
else
|
||||
with_modules=no
|
||||
fi
|
||||
])
|
||||
AC_ARG_ENABLE(modules, [ --disable-modules disable dynamic module loading])
|
||||
|
||||
dynworks=false
|
||||
deps=
|
||||
if test x$with_modules = xno; then
|
||||
if test x$enable_modules = xno; then
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
@@ -1187,7 +1183,7 @@ if test "x$gdktarget" = "xx11"; then
|
||||
AC_DEFINE(XINPUT_NONE)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(XINPUT_XFREE, test x$with_xinput = xxfree)
|
||||
AM_CONDITIONAL(XINPUT_XFREE, test x$with_xinput = xxfree || test x$with_xinput = xyes)
|
||||
|
||||
# Check for the RANDR extension
|
||||
|
||||
@@ -1581,7 +1577,6 @@ AM_CONDITIONAL(HAVE_SGML2HTML, test x$SGML2HTML != xno)
|
||||
AC_OUTPUT([
|
||||
config.h.win32
|
||||
gtk-zip.sh
|
||||
gtk+.spec
|
||||
Makefile
|
||||
gdk-pixbuf-2.0.pc
|
||||
gdk-2.0.pc
|
||||
@@ -1609,21 +1604,16 @@ docs/reference/gtk/version.xml
|
||||
docs/faq/Makefile
|
||||
docs/tutorial/Makefile
|
||||
gdk-pixbuf/Makefile
|
||||
gdk-pixbuf/makefile.mingw
|
||||
gdk-pixbuf/gdk_pixbuf.rc
|
||||
gdk-pixbuf/gdk-pixbuf-features.h
|
||||
gdk-pixbuf/pixops/Makefile
|
||||
gdk-pixbuf/pixops/makefile.mingw
|
||||
gdk/Makefile
|
||||
gdk/makefile.mingw
|
||||
gdk/x11/Makefile
|
||||
gdk/win32/Makefile
|
||||
gdk/win32/makefile.mingw
|
||||
gdk/win32/rc/Makefile
|
||||
gdk/win32/rc/gdk.rc
|
||||
gdk/linux-fb/Makefile
|
||||
gtk/Makefile
|
||||
gtk/makefile.mingw
|
||||
gtk/makefile.msc
|
||||
gtk/gtkversion.h
|
||||
gtk/gtk-win32.rc
|
||||
|
||||
@@ -12,6 +12,27 @@ static GtkWidget *da;
|
||||
static GdkColor color;
|
||||
static GtkWidget *frame;
|
||||
|
||||
/* Expose callback for the drawing area
|
||||
*/
|
||||
static gboolean
|
||||
expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
if (widget->window)
|
||||
{
|
||||
GtkStyle *style;
|
||||
|
||||
style = gtk_widget_get_style (widget);
|
||||
|
||||
gdk_draw_rectangle (widget->window,
|
||||
style->bg_gc[GTK_STATE_NORMAL],
|
||||
TRUE,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
change_color_callback (GtkWidget *button,
|
||||
gpointer data)
|
||||
@@ -76,8 +97,12 @@ do_colorsel (void)
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
|
||||
da = gtk_drawing_area_new ();
|
||||
|
||||
g_signal_connect (da, "expose_event",
|
||||
G_CALLBACK (expose_event_callback), NULL);
|
||||
|
||||
/* set a minimum size */
|
||||
gtk_widget_set_size_request (da, 200, 200);
|
||||
/* set the color */
|
||||
|
||||
@@ -252,7 +252,7 @@ do_pixbufs (void)
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), da);
|
||||
|
||||
timeout_id = gtk_timeout_add (FRAME_DELAY, timeout, NULL);
|
||||
timeout_id = g_timeout_add (FRAME_DELAY, timeout, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -187,7 +187,7 @@ static guint timeout_id;
|
||||
static void
|
||||
destroy_cb (GtkObject *object, gpointer data)
|
||||
{
|
||||
gtk_timeout_remove (timeout_id);
|
||||
g_source_remove (timeout_id);
|
||||
timeout_id = 0;
|
||||
|
||||
gtk_main_quit ();
|
||||
@@ -225,7 +225,7 @@ main (int argc, char **argv)
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), da);
|
||||
|
||||
timeout_id = gtk_timeout_add (FRAME_DELAY, timeout, NULL);
|
||||
timeout_id = g_timeout_add (FRAME_DELAY, timeout, NULL);
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
gtk_main ();
|
||||
|
||||
@@ -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
-1
@@ -626,7 +626,7 @@ main (int argc, char **argv)
|
||||
|
||||
status.readlen = readlen;
|
||||
|
||||
status.timeout = gtk_timeout_add (100, update_timeout, &status);
|
||||
status.timeout = g_timeout_add (100, update_timeout, &status);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/running.sgml: s/overwrite/override/g (#104627, Brian Cameron)
|
||||
|
||||
Fri Dec 20 13:10:06 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* gtk/building.sgml: Update directories in download
|
||||
|
||||
@@ -284,6 +284,7 @@ Modules supporting animations must derive a type from
|
||||
virtual functions.
|
||||
</para>
|
||||
|
||||
@parent_class:
|
||||
@is_static_image: returns whether the given animation is just a static image.
|
||||
@get_static_image: returns a static image representing the given animation.
|
||||
@get_size: fills @width and @height with the frame size of the animation.
|
||||
@@ -296,6 +297,7 @@ Modules supporting animations must derive a type from
|
||||
virtual functions.
|
||||
</para>
|
||||
|
||||
@parent_class:
|
||||
@get_delay_time: returns the time in milliseconds that the current frame
|
||||
should be shown.
|
||||
@get_pixbuf: returns the current frame.
|
||||
|
||||
@@ -156,7 +156,7 @@ This option is only available if GTK+ has been configured with
|
||||
<title><systemitem>--gxid-host <replaceable>host</replaceable></systemitem></title>
|
||||
|
||||
<para>
|
||||
The host to contact the <application>gxid</application> daemon on; overwrites
|
||||
The host to contact the <application>gxid</application> daemon on; overrides
|
||||
the <link linkend="GXID"><envar>GXID_HOST</envar></link> environment variable.
|
||||
This option is only available if GTK+ has been configured with
|
||||
<option>--gdk-target=x11</option>.
|
||||
@@ -167,7 +167,7 @@ This option is only available if GTK+ has been configured with
|
||||
<title><systemitem>--gxid-port <replaceable>port</replaceable></systemitem></title>
|
||||
|
||||
<para>
|
||||
The port for the connection to <application>gxid</application>; overwrites
|
||||
The port for the connection to <application>gxid</application>; overrides
|
||||
the <link linkend="GXID"><envar>GXID_PORT</envar></link> environment variable.
|
||||
This option is only available if GTK+ has been configured with
|
||||
<option>--gdk-target=x11</option>.
|
||||
@@ -276,8 +276,8 @@ or <envar>DISPLAY</envar>; mostly to determine paths to look for certain files.
|
||||
|
||||
<para>
|
||||
Specifies the file listing the IM modules to load. This environment
|
||||
variable overwrites the <literal>im_module_file</literal> specified in
|
||||
the RC files, which in turn overwrites the default value
|
||||
variable overrides the <literal>im_module_file</literal> specified in
|
||||
the RC files, which in turn overrides the default value
|
||||
<filename><replaceable>sysconfdir</replaceable>/gtk-2.0/gtk.immodules</filename>
|
||||
(<replaceable>sysconfdir</replaceable> is the sysconfdir specified when GTK+ was configured,
|
||||
usually <filename>/usr/local/etc</filename>.)
|
||||
@@ -322,7 +322,7 @@ nevertheless.
|
||||
|
||||
<para>
|
||||
Specifies the file listing the GdkPixbuf loader modules to load.
|
||||
This environment variable overwrites the default value
|
||||
This environment variable overrides the default value
|
||||
<filename><replaceable>sysconfdir</replaceable>/gtk-2.0/gdk-pixbuf.loaders</filename>
|
||||
(<replaceable>sysconfdir</replaceable> is the sysconfdir specified when
|
||||
GTK+ was configured, usually <filename>/usr/local/etc</filename>.)
|
||||
|
||||
@@ -118,6 +118,26 @@ The #GtkFileSelection struct contains the following #GtkWidget fields:
|
||||
|
||||
</para>
|
||||
|
||||
@dir_list:
|
||||
@file_list:
|
||||
@selection_entry:
|
||||
@selection_text:
|
||||
@main_vbox:
|
||||
@ok_button:
|
||||
@cancel_button:
|
||||
@help_button:
|
||||
@history_pulldown:
|
||||
@history_menu:
|
||||
@history_list:
|
||||
@fileop_dialog:
|
||||
@fileop_entry:
|
||||
@fileop_file:
|
||||
@cmpl_state:
|
||||
@fileop_c_dir:
|
||||
@fileop_del_file:
|
||||
@fileop_ren_file:
|
||||
@button_area:
|
||||
@action_area:
|
||||
|
||||
<!-- ##### FUNCTION gtk_file_selection_new ##### -->
|
||||
<para>
|
||||
|
||||
@@ -49,6 +49,7 @@ handles the emission.
|
||||
Implementation of this signal is optional.
|
||||
</para>
|
||||
|
||||
@parent_class:
|
||||
@activate_signal:
|
||||
@set_scroll_adjustments_signal:
|
||||
|
||||
|
||||
@@ -1,3 +1,47 @@
|
||||
Mon Jan 27 17:10:30 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am (gdk-pixbuf.loaders): Rewrite to run
|
||||
on the .la files rather than looking for .so files.
|
||||
(#102142, Martin Gansser)
|
||||
|
||||
* Makefile.am: Don't build gdk-pixbuf.loaders when
|
||||
cross-compiling.
|
||||
|
||||
2003-01-12 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gdk_pixbuf.def: Add some missing entries. Thanks to Kenichi SUTO.
|
||||
|
||||
2003-01-09 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
Changes for run-time lookup of installation location on Win32:
|
||||
|
||||
* Makefile.am (INCLUDES): Define PREFIX as $(prefix).
|
||||
|
||||
* gdk-pixbuf-io.c (get_sysconfdir): New function, look up
|
||||
installation location at runtime and deduce GTK_SYSCONFDIR
|
||||
from it.
|
||||
(get_toplevel): Similar, for the top-level installation directory.
|
||||
(correct_prefix): Replace compile-time prefix with run-time
|
||||
prefix.
|
||||
(get_libdir): Remove, not used any longer.
|
||||
(gdk_pixbuf_io_init): Call correct_prefix().
|
||||
|
||||
2003-01-05 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* queryloaders.c (query_module): [Win32] Change backslahses into
|
||||
slashes in path.
|
||||
|
||||
2003-01-04 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* Makefile.am (gdk-pixbuf.loaders): Use @SOEXT@ in the find command.
|
||||
|
||||
* gdk_pixbuf.def: Add gdk_pixbuf_loader_set_size.
|
||||
|
||||
2003-01-03 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gdk-pixbuf-io.c (gdk_pixbuf_new_from_xpm_data): Don't crash if
|
||||
gdk-pixbuf.loaders file is missing. (#102222)
|
||||
|
||||
2002-12-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gdk-pixbuf-animation.h:
|
||||
|
||||
@@ -248,6 +248,7 @@ INCLUDES = @STRIP_BEGIN@ \
|
||||
-DGTK_BINARY_VERSION=\"@GTK_BINARY_VERSION@\" \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
-DGDK_PIXBUF_DISABLE_DEPRECATED \
|
||||
-DPREFIX=\"$(prefix)\" \
|
||||
@INCLUDED_LOADER_DEFINE@ \
|
||||
@GTK_DEBUG_FLAGS@ \
|
||||
@GDK_PIXBUF_DEP_CFLAGS@ \
|
||||
@@ -393,8 +394,6 @@ CLEANFILES += xgen-gmc
|
||||
|
||||
EXTRA_DIST = \
|
||||
gdk-pixbuf-csource.1 \
|
||||
makefile.mingw \
|
||||
makefile.mingw.in \
|
||||
makefile.msc \
|
||||
gdk_pixbuf.def \
|
||||
gdk_pixbuf.rc \
|
||||
@@ -435,12 +434,16 @@ install-data-local: install-ms-lib install-libtool-import-lib
|
||||
echo "***" ; \
|
||||
fi
|
||||
|
||||
if CROSS_COMPILING
|
||||
else
|
||||
all-local: gdk-pixbuf.loaders
|
||||
endif
|
||||
|
||||
gdk-pixbuf.loaders: $(loader_LTLIBRARIES) gdk-pixbuf-query-loaders
|
||||
if find . -name 'libpixbufloader-*.so' | grep 'so' > /dev/null ; then \
|
||||
LOADERS=`echo libpixbufloader-*.la` ; \
|
||||
if test "x$$LOADERS" != 'xlibpixbufloader-*.la' ; then \
|
||||
echo "Writing a gdk-pixbuf.loader file to use when running examples before installing gdk-pixbuf."; \
|
||||
GDK_PIXBUF_MODULEDIR=.libs $(top_builddir)/gdk-pixbuf/gdk-pixbuf-query-loaders > ./gdk-pixbuf.loaders ;\
|
||||
$(top_builddir)/gdk-pixbuf/gdk-pixbuf-query-loaders $$LOADERS > ./gdk-pixbuf.loaders ;\
|
||||
else \
|
||||
echo "No dynamic modules found; will use only static modules for uninstalled example programs."; \
|
||||
touch gdk-pixbuf.loaders; \
|
||||
|
||||
+64
-29
@@ -165,6 +165,59 @@ skip_space (const char **pos)
|
||||
return !(*p == '\0');
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DllMain function needed to tuck away the gdk-pixbuf DLL name */
|
||||
G_WIN32_DLLMAIN_FOR_DLL_NAME (static, dll_name)
|
||||
|
||||
static char *
|
||||
get_toplevel (void)
|
||||
{
|
||||
static char *toplevel = NULL;
|
||||
|
||||
if (toplevel == NULL)
|
||||
toplevel = g_win32_get_package_installation_subdirectory
|
||||
(GETTEXT_PACKAGE, dll_name, "");
|
||||
|
||||
return toplevel;
|
||||
}
|
||||
|
||||
static char *
|
||||
get_sysconfdir (void)
|
||||
{
|
||||
static char *sysconfdir = NULL;
|
||||
|
||||
if (sysconfdir == NULL)
|
||||
sysconfdir = g_win32_get_package_installation_subdirectory
|
||||
(GETTEXT_PACKAGE, dll_name, "etc");
|
||||
|
||||
return sysconfdir;
|
||||
}
|
||||
|
||||
#undef GTK_SYSCONFDIR
|
||||
#define GTK_SYSCONFDIR get_sysconfdir()
|
||||
|
||||
static void
|
||||
correct_prefix (gchar **path)
|
||||
{
|
||||
if (strncmp (*path, PREFIX "/", strlen (PREFIX "/")) == 0 ||
|
||||
strncmp (*path, PREFIX "\\", strlen (PREFIX "\\")) == 0)
|
||||
{
|
||||
/* This is an entry put there by gdk-pixbuf-query-loaders on the
|
||||
* packager's system. On Windows a prebuilt GTK+ package can be
|
||||
* installed in a random location. The gdk-pixbuf.loaders file
|
||||
* distributed in such a package contains paths from the package
|
||||
* builder's machine. Replace the build-time prefix with the
|
||||
* installation prefix on this machine.
|
||||
*/
|
||||
gchar *tem = *path;
|
||||
*path = g_strconcat (get_toplevel (), tem + strlen (PREFIX), NULL);
|
||||
g_free (tem);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static gchar *
|
||||
gdk_pixbuf_get_module_file (void)
|
||||
{
|
||||
@@ -209,6 +262,9 @@ gdk_pixbuf_io_init ()
|
||||
/* Blank line marking the end of a module
|
||||
*/
|
||||
if (module && *p != '#') {
|
||||
#ifdef G_OS_WIN32
|
||||
correct_prefix (&module->module_path);
|
||||
#endif
|
||||
file_formats = g_slist_prepend (file_formats, module);
|
||||
module = NULL;
|
||||
}
|
||||
@@ -331,29 +387,6 @@ gdk_pixbuf_io_init ()
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DllMain function needed to tuck away the gdk-pixbuf DLL name */
|
||||
|
||||
G_WIN32_DLLMAIN_FOR_DLL_NAME (static, dll_name)
|
||||
|
||||
static char *
|
||||
get_libdir (void)
|
||||
{
|
||||
static char *libdir = NULL;
|
||||
|
||||
if (libdir == NULL)
|
||||
libdir = g_win32_get_package_installation_subdirectory
|
||||
(GETTEXT_PACKAGE, dll_name, "lib\\gtk-2.0\\" GTK_BINARY_VERSION "\\loaders");
|
||||
|
||||
return libdir;
|
||||
}
|
||||
|
||||
#undef PIXBUF_LIBDIR
|
||||
#define PIXBUF_LIBDIR get_libdir ()
|
||||
|
||||
#endif
|
||||
|
||||
/* actually load the image handler - gdk_pixbuf_get_module only get a */
|
||||
/* reference to the module to load, it doesn't actually load it */
|
||||
/* perhaps these actions should be combined in one function */
|
||||
@@ -779,20 +812,22 @@ gdk_pixbuf_new_from_xpm_data (const char **data)
|
||||
GdkPixbuf *(* load_xpm_data) (const char **data);
|
||||
GdkPixbuf *pixbuf;
|
||||
GError *error = NULL;
|
||||
GdkPixbufModule *xpm_module = _gdk_pixbuf_get_named_module ("xpm", NULL);
|
||||
GdkPixbufModule *xpm_module = _gdk_pixbuf_get_named_module ("xpm", &error);
|
||||
if (xpm_module == NULL) {
|
||||
g_warning ("Error loading XPM image loader: %s", error->message);
|
||||
g_error_free (error);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (xpm_module->module == NULL) {
|
||||
if (!_gdk_pixbuf_load_module (xpm_module, &error)) {
|
||||
g_warning ("Error loading XPM image loader: %s", error->message);
|
||||
g_error_free (error);
|
||||
return FALSE;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (xpm_module->module == NULL) {
|
||||
g_warning ("Can't find gdk-pixbuf module for parsing inline XPM data");
|
||||
return NULL;
|
||||
} else if (xpm_module->load_xpm_data == NULL) {
|
||||
if (xpm_module->load_xpm_data == NULL) {
|
||||
g_warning ("gdk-pixbuf XPM module lacks XPM data capability");
|
||||
return NULL;
|
||||
} else
|
||||
|
||||
@@ -25,9 +25,15 @@ EXPORTS
|
||||
gdk_pixbuf_error_get_type
|
||||
gdk_pixbuf_error_quark
|
||||
gdk_pixbuf_fill
|
||||
gdk_pixbuf_format_get_description
|
||||
gdk_pixbuf_format_get_extensions
|
||||
gdk_pixbuf_format_get_mime_types
|
||||
gdk_pixbuf_format_get_name
|
||||
gdk_pixbuf_format_is_writable
|
||||
gdk_pixbuf_from_pixdata
|
||||
gdk_pixbuf_get_bits_per_sample
|
||||
gdk_pixbuf_get_colorspace
|
||||
gdk_pixbuf_get_formats
|
||||
gdk_pixbuf_get_has_alpha
|
||||
gdk_pixbuf_get_height
|
||||
gdk_pixbuf_get_n_channels
|
||||
@@ -38,10 +44,12 @@ EXPORTS
|
||||
gdk_pixbuf_get_width
|
||||
gdk_pixbuf_loader_close
|
||||
gdk_pixbuf_loader_get_animation
|
||||
gdk_pixbuf_loader_get_format
|
||||
gdk_pixbuf_loader_get_pixbuf
|
||||
gdk_pixbuf_loader_get_type
|
||||
gdk_pixbuf_loader_new
|
||||
gdk_pixbuf_loader_new_with_type
|
||||
gdk_pixbuf_loader_set_size
|
||||
gdk_pixbuf_loader_write
|
||||
gdk_pixbuf_new
|
||||
gdk_pixbuf_new_from_data
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
####
|
||||
#### Out of order! Use autoconfiscation.
|
||||
####
|
||||
|
||||
## Makefile for building the gdk_pixbuf DLL with gcc on Win32
|
||||
## Use: make -f makefile.mingw
|
||||
|
||||
TOP = ../..
|
||||
|
||||
include ../build/win32/make.mingw
|
||||
|
||||
# Possibly override GTK+ version from build/win32/module.defs
|
||||
GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@
|
||||
|
||||
OPTIMIZE = -g
|
||||
|
||||
INCLUDES = -I . -I ..
|
||||
DEPCFLAGS = $(GLIB_CFLAGS) $(INTL_CFLAGS)
|
||||
|
||||
all : \
|
||||
../config.h \
|
||||
gdk_pixbuf-$(GDK_PIXBUF_VER).dll \
|
||||
pixbufloader-bmp.dll \
|
||||
pixbufloader-gif.dll \
|
||||
pixbufloader-ico.dll \
|
||||
pixbufloader-jpeg.dll \
|
||||
pixbufloader-png.dll \
|
||||
pixbufloader-pnm.dll \
|
||||
pixbufloader-ras.dll \
|
||||
pixbufloader-tiff.dll \
|
||||
pixbufloader-wbmp.dll \
|
||||
pixbufloader-xpm.dll \
|
||||
make-inline-pixbuf.exe \
|
||||
test-gdk-pixbuf.exe
|
||||
|
||||
gdk_pixbuf_OBJECTS = \
|
||||
gdk-pixbuf.o \
|
||||
gdk-pixbuf-animation.o \
|
||||
gdk-pixbuf-data.o \
|
||||
gdk-pixbuf-io.o \
|
||||
gdk-pixbuf-scale.o \
|
||||
gdk-pixbuf-util.o \
|
||||
pixops/libpixops.a
|
||||
|
||||
../config.h : ../config.h.win32
|
||||
cp $< $@
|
||||
|
||||
gdk_pixbuf-$(GDK_PIXBUF_VER).dll : $(gdk_pixbuf_OBJECTS) gdk_pixbuf.def
|
||||
$(GLIB)/build-dll gdk_pixbuf $(GDK_PIXBUF_VER) gdk_pixbuf.def $(gdk_pixbuf_OBJECTS) -L ../gdk -lgdk-$(GTK_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
gdk-pixbuf.o:: gdk-pixbuf-marshal.c
|
||||
|
||||
gdk-pixbuf-marshal.c :
|
||||
$(GLIB_GENMARSHAL) --prefix=gdk_pixbuf_marshal gdk-pixbuf-marshal.list --header >$@
|
||||
|
||||
pixops/libpixops.a :
|
||||
cd pixops && $(MAKE) -f makefile.mingw libpixops.a
|
||||
|
||||
pixbufloader_bmp_OBJECTS = io-bmp.o
|
||||
|
||||
pixbufloader-bmp.dll : $(pixbufloader_bmp_OBJECTS) pixbufloader_bmp.def
|
||||
$(GLIB)/build-dll pixbufloader-bmp - pixbufloader_bmp.def $(pixbufloader_bmp_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_gif_OBJECTS = io-gif.o
|
||||
|
||||
pixbufloader-gif.dll : $(pixbufloader_gif_OBJECTS) pixbufloader_gif.def
|
||||
$(GLIB)/build-dll pixbufloader-gif - pixbufloader_gif.def $(pixbufloader_gif_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_ico_OBJECTS = io-ico.o
|
||||
|
||||
pixbufloader-ico.dll : $(pixbufloader_ico_OBJECTS) pixbufloader_ico.def
|
||||
$(GLIB)/build-dll pixbufloader-ico - pixbufloader_ico.def $(pixbufloader_ico_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_jpeg_OBJECTS = io-jpeg.o
|
||||
|
||||
io-jpeg.o : io-jpeg.c
|
||||
$(CC) $(CFLAGS) $(JPEG_CFLAGS) -c $<
|
||||
|
||||
pixbufloader-jpeg.dll : $(pixbufloader_jpeg_OBJECTS) pixbufloader_jpeg.def
|
||||
$(GLIB)/build-dll pixbufloader-jpeg - pixbufloader_jpeg.def $(pixbufloader_jpeg_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(JPEG_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_png_OBJECTS = io-png.o
|
||||
|
||||
io-png.o : io-png.c
|
||||
$(CC) $(CFLAGS) $(PNG_CFLAGS) -c $<
|
||||
|
||||
pixbufloader-png.dll : $(pixbufloader_png_OBJECTS) pixbufloader_png.def
|
||||
$(GLIB)/build-dll pixbufloader-png - pixbufloader_png.def $(pixbufloader_png_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(PNG_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_pnm_OBJECTS = io-pnm.o
|
||||
|
||||
pixbufloader-pnm.dll : $(pixbufloader_pnm_OBJECTS) pixbufloader_pnm.def
|
||||
$(GLIB)/build-dll pixbufloader-pnm - pixbufloader_pnm.def $(pixbufloader_pnm_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_ras_OBJECTS = io-ras.o
|
||||
|
||||
pixbufloader-ras.dll : $(pixbufloader_ras_OBJECTS) pixbufloader_ras.def
|
||||
$(GLIB)/build-dll pixbufloader-ras - pixbufloader_ras.def $(pixbufloader_ras_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_tiff_OBJECTS = io-tiff.o
|
||||
|
||||
pixbufloader-tiff.dll : $(pixbufloader_tiff_OBJECTS) pixbufloader_tiff.def
|
||||
$(GLIB)/build-dll pixbufloader-tiff - pixbufloader_tiff.def $(pixbufloader_tiff_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(ZLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
io-tiff.o : io-tiff.c
|
||||
$(CC) $(CFLAGS) $(TIFF_CFLAGS) -c $<
|
||||
|
||||
pixbufloader_wbmp_OBJECTS = io-wbmp.o
|
||||
|
||||
pixbufloader-wbmp.dll : $(pixbufloader_wbmp_OBJECTS) pixbufloader_wbmp.def
|
||||
$(GLIB)/build-dll pixbufloader-wbmp - pixbufloader_wbmp.def $(pixbufloader_wbmp_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
pixbufloader_xpm_OBJECTS = io-xpm.o
|
||||
|
||||
pixbufloader-xpm.dll : $(pixbufloader_xpm_OBJECTS) pixbufloader_xpm.def
|
||||
$(GLIB)/build-dll pixbufloader-xpm - pixbufloader_xpm.def $(pixbufloader_xpm_OBJECTS) -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS) $(INTL_LIBS)
|
||||
|
||||
make-inline-pixbuf.exe : make-inline-pixbuf.o gdk_pixbuf-$(GDK_PIXBUF_VER).dll
|
||||
$(CC) $(CFLAGS) -o $@ make-inline-pixbuf.o -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GLIB_LIBS)
|
||||
|
||||
test-gdk-pixbuf.exe : test-gdk-pixbuf.o gdk_pixbuf-$(GDK_PIXBUF_VER).dll
|
||||
$(CC) $(CFLAGS) -o $@ test-gdk-pixbuf.o -L . -lgdk_pixbuf-$(GDK_PIXBUF_VER) $(GTK_LIBS) $(GLIB_LIBS)
|
||||
|
||||
ifeq ($(wildcard makefile.mingw.in),makefile.mingw.in)
|
||||
# Hack to get an updated makefile.mingw automatically after updating
|
||||
# makefile.mingw.in. Only for developer use.
|
||||
makefile.mingw: makefile.mingw.in
|
||||
sed -e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \
|
||||
-e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,' <$< >$@
|
||||
endif
|
||||
@@ -29,6 +29,4 @@ libpixops_la_SOURCES = \
|
||||
|
||||
EXTRA_DIST = \
|
||||
DETAILS \
|
||||
makefile.mingw \
|
||||
makefile.mingw.in \
|
||||
makefile.msc
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
## Makefile for building libpixops.a with gcc on Win32
|
||||
## Use: make -f makefile.mingw
|
||||
|
||||
TOP = ../../..
|
||||
|
||||
include $(TOP)/build/win32/make.mingw
|
||||
|
||||
# Possibly override GTK+ version from build/win32/module.defs
|
||||
GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@
|
||||
|
||||
OPTIMIZE = -g
|
||||
|
||||
INCLUDES = -I .. -I ../..
|
||||
DEPCFLAGS = $(GLIB_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS) $(JPEG_CLFAGS) $(TIFF_CFLAGS)
|
||||
|
||||
all : \
|
||||
../../config.h \
|
||||
libpixops.a \
|
||||
timescale.exe
|
||||
|
||||
libpixops_OBJECTS = \
|
||||
pixops.o \
|
||||
have_mmx.o \
|
||||
scale_line_22_33_mmx.o \
|
||||
composite_line_22_4a4_mmx.o \
|
||||
composite_line_color_22_4a4_mmx.o
|
||||
|
||||
../../config.h : ../../config.h.win32
|
||||
cp $< $@
|
||||
|
||||
libpixops.a : $(libpixops_OBJECTS)
|
||||
ar rv $@ $?
|
||||
|
||||
timescale.exe : timescale.o libpixops.a
|
||||
$(CC) $(CFLAGS) -o $@ timescale.o libpixops.a $(GLIB_LIBS)
|
||||
|
||||
makefile.mingw: makefile.mingw.in
|
||||
sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \
|
||||
-e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' <$< >$@
|
||||
|
||||
@@ -78,6 +78,19 @@ query_module (const char *dir, const char *file)
|
||||
g_module_symbol (module, "fill_info", (gpointer *) &fill_info) &&
|
||||
g_module_symbol (module, "fill_vtable", (gpointer *) &fill_vtable)) {
|
||||
GdkPixbufFormat *info;
|
||||
#ifdef G_OS_WIN32
|
||||
/* Replace backslashes in path with forward slashes, so that
|
||||
* it reads in without problems.
|
||||
*/
|
||||
{
|
||||
char *p = path;
|
||||
while (*p) {
|
||||
if (*p == '\\')
|
||||
*p = '/';
|
||||
p++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
g_printf("\"%s\"\n", path);
|
||||
info = g_new0 (GdkPixbufFormat, 1);
|
||||
(*fill_info) (info);
|
||||
|
||||
+1
-2
@@ -7,8 +7,6 @@ EXTRA_DIST = \
|
||||
gdkconfig.h.win32 \
|
||||
gdk.def \
|
||||
gdkmarshalers.list \
|
||||
makefile.mingw \
|
||||
makefile.mingw.in \
|
||||
makeenums.pl \
|
||||
makefile.msc
|
||||
|
||||
@@ -181,6 +179,7 @@ libgdk_linux_fb_2_0_la_LIBADD = linux-fb/libgdk-linux-fb.la @GDK_DEP_LIBS@
|
||||
libgdk_win32_2_0_la_LIBADD = \
|
||||
win32/libgdk-win32.la $(wintab_lib) $(ie55uuid_lib) \
|
||||
@GDK_DEP_LIBS@
|
||||
libgdk_win32_2_0_la_DEPENDENCIES = gdk.def
|
||||
|
||||
lib_LTLIBRARIES = $(gdktargetlib)
|
||||
|
||||
|
||||
+15
-2
@@ -59,11 +59,13 @@ EXPORTS
|
||||
gdk_devices_list
|
||||
gdk_display_add_client_message_filter
|
||||
gdk_display_beep
|
||||
gdk_display_close
|
||||
gdk_display_get_core_pointer
|
||||
gdk_display_get_default
|
||||
gdk_display_get_default_screen
|
||||
gdk_display_get_name
|
||||
gdk_display_get_event
|
||||
gdk_display_get_n_screens
|
||||
gdk_display_get_name
|
||||
gdk_display_get_pointer
|
||||
gdk_display_get_screen
|
||||
gdk_display_get_type
|
||||
@@ -71,11 +73,17 @@ EXPORTS
|
||||
gdk_display_keyboard_ungrab
|
||||
gdk_display_list_devices
|
||||
gdk_display_manager_get
|
||||
gdk_display_manager_get_default_display
|
||||
gdk_display_manager_list_displays
|
||||
gdk_display_manager_set_default_display
|
||||
gdk_display_open
|
||||
gdk_display_open_default_libgtk_only
|
||||
gdk_display_peek_event
|
||||
gdk_display_pointer_is_grabbed
|
||||
gdk_display_pointer_ungrab
|
||||
gdk_display_put_event
|
||||
gdk_display_set_double_click_time
|
||||
gdk_display_set_pointer_hooks
|
||||
gdk_display_sync
|
||||
gdk_drag_abort
|
||||
gdk_drag_action_get_type
|
||||
@@ -156,6 +164,7 @@ EXPORTS
|
||||
gdk_event_send_client_message
|
||||
gdk_event_send_client_message_for_display
|
||||
gdk_event_send_clientmessage_toall
|
||||
gdk_event_set_screen
|
||||
gdk_event_type_get_type
|
||||
gdk_events_pending
|
||||
gdk_exit
|
||||
@@ -287,6 +296,9 @@ EXPORTS
|
||||
gdk_pixmap_create_from_xpm_d
|
||||
gdk_pixmap_foreign_new
|
||||
gdk_pixmap_get_type
|
||||
gdk_pixmap_foreign_new_for_display
|
||||
gdk_pixmap_lookup
|
||||
gdk_pixmap_lookup_for_display
|
||||
gdk_pixmap_new
|
||||
gdk_pointer_grab
|
||||
gdk_pointer_grab_info_libgtk_only
|
||||
@@ -350,6 +362,8 @@ EXPORTS
|
||||
gdk_screen_get_root_window
|
||||
gdk_screen_get_setting
|
||||
gdk_screen_get_system_colormap
|
||||
gdk_screen_get_system_visual
|
||||
gdk_screen_get_toplevel_windows
|
||||
gdk_screen_get_type
|
||||
gdk_screen_get_width
|
||||
gdk_screen_height
|
||||
@@ -521,4 +535,3 @@ EXPORTS
|
||||
gdk_window_withdraw
|
||||
gdk_wm_decoration_get_type
|
||||
gdk_wm_function_get_type
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <glib/gprintf.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkinternals.h"
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#include <locale.h>
|
||||
|
||||
#include "gdk.h"
|
||||
#include "gdkkeysyms.h"
|
||||
|
||||
/* Thanks to Markus G. Kuhn <mkuhn@acm.org> for the ksysym<->Unicode
|
||||
* mapping functions, from the xterm sources.
|
||||
@@ -823,6 +826,25 @@ static struct {
|
||||
/* End numeric keypad */
|
||||
};
|
||||
|
||||
static gunichar
|
||||
get_decimal_char (void)
|
||||
{
|
||||
struct lconv *locale_data;
|
||||
gunichar result = '.';
|
||||
gchar *utf8;
|
||||
|
||||
locale_data = localeconv ();
|
||||
utf8 = g_locale_to_utf8 (locale_data->decimal_point, -1, NULL, NULL, NULL);
|
||||
if (utf8)
|
||||
{
|
||||
if (g_utf8_strlen (utf8, -1) == 1)
|
||||
result = g_utf8_get_char (utf8);
|
||||
g_free (utf8);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_keyval_to_unicode:
|
||||
* @keyval: a GDK key symbol
|
||||
@@ -850,6 +872,11 @@ gdk_keyval_to_unicode (guint keyval)
|
||||
if ((keyval & 0xff000000) == 0x01000000)
|
||||
return keyval & 0x00ffffff;
|
||||
|
||||
/* Translation of KP_Decimal depends on locale.
|
||||
*/
|
||||
if (keyval == GDK_KP_Decimal)
|
||||
return get_decimal_char ();
|
||||
|
||||
/* binary search in table */
|
||||
while (max >= min) {
|
||||
mid = (min + max) / 2;
|
||||
|
||||
@@ -277,22 +277,6 @@ gdk_rgb_try_colormap (GdkRgbInfo *image_info, gboolean force,
|
||||
}
|
||||
#endif
|
||||
|
||||
if (colors_needed &&
|
||||
image_info->visual->type != GDK_VISUAL_STATIC_COLOR)
|
||||
{
|
||||
if (!gdk_colors_alloc (cmap, 0, NULL, 0, junk, colors_needed))
|
||||
{
|
||||
char tmp_str[80];
|
||||
|
||||
g_snprintf (tmp_str, 80,
|
||||
"%d %d %d colormap failed (in gdk_colors_alloc)\n",
|
||||
nr, ng, nb);
|
||||
return gdk_rgb_cmap_fail (tmp_str, cmap, pixels);
|
||||
}
|
||||
|
||||
gdk_colors_free (cmap, junk, colors_needed, 0);
|
||||
}
|
||||
|
||||
for (r = 0, i = 0; r < nr; r++)
|
||||
for (g = 0; g < ng; g++)
|
||||
for (b = 0; b < nb; b++, i++)
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
####
|
||||
#### Out of order! Use autoconfiscation.
|
||||
####
|
||||
|
||||
## Makefile for building the GDK DLL with gcc on Win32
|
||||
## Use: make -f makefile.mingw
|
||||
|
||||
## There is no install target, you have to decide where and
|
||||
## how to install for yourself.
|
||||
|
||||
TOP = ../..
|
||||
|
||||
include ../build/win32/make.mingw
|
||||
|
||||
# Possibly override versions from build/win32/module.defs
|
||||
GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@
|
||||
GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@
|
||||
|
||||
GDK_PIXBUF_LIBS = -L ../gdk-pixbuf -lgdk_pixbuf-$(GDK_PIXBUF_VER)
|
||||
|
||||
OPTIMIZE = -g
|
||||
|
||||
INCLUDES = -I . -I .. -I ../gdk-pixbuf
|
||||
DEPCFLAGS = $(GLIB_CFLAGS) $(PANGO_CFLAGS)
|
||||
DEFINES = -DG_ENABLE_DEBUG -DHAVE_CONFIG_H -DGDK_VERSION=\"$(GTK_VER)\" -DGDK_COMPILATION
|
||||
|
||||
all: \
|
||||
../config.h \
|
||||
gdkconfig.h \
|
||||
win32/libgdk-win32.a \
|
||||
win32/gdk-win32res.o \
|
||||
gdk-win32-$(GTK_VER).dll
|
||||
|
||||
gdk_OBJECTS = \
|
||||
gdk.o \
|
||||
gdkcolor.o \
|
||||
gdkcursor.o \
|
||||
gdkdraw.o \
|
||||
gdkevents.o \
|
||||
gdkfont.o \
|
||||
gdkgc.o \
|
||||
gdkglobals.o \
|
||||
gdkimage.o \
|
||||
gdkkeys.o \
|
||||
gdkkeyuni.o \
|
||||
gdkpango.o \
|
||||
gdkpixbuf-drawable.o \
|
||||
gdkpixbuf-render.o \
|
||||
gdkpixmap.o \
|
||||
gdkpolyreg-generic.o \
|
||||
gdkrgb.o \
|
||||
gdkrectangle.o \
|
||||
gdkregion-generic.o \
|
||||
gdkwindow.o
|
||||
|
||||
../config.h : ../config.h.win32
|
||||
cp $< $@
|
||||
|
||||
gdkconfig.h : gdkconfig.h.win32
|
||||
cp $< $@
|
||||
|
||||
win32/libgdk-win32.a : FRC
|
||||
cd win32 && $(MAKE) -f makefile.mingw libgdk-win32.a
|
||||
|
||||
win32/gdk-win32res.o : FRC
|
||||
cd win32 && $(MAKE) -f makefile.mingw gdk-win32res.o
|
||||
|
||||
gdk-win32-$(GTK_VER).dll : $(gdk_OBJECTS) gdk.def win32/libgdk-win32.a win32/gdk-win32res.o win32/libwntab32x.a
|
||||
$(GLIB)/build-dll gdk-win32 $(GTK_VER) gdk.def $(gdk_OBJECTS) win32/libgdk-win32.a win32/libwntab32x.a $(GDK_PIXBUF_LIBS) $(GLIB_LIBS) $(PANGOWIN32_LIBS) -lgdi32 -luser32 -limm32 -lshell32 -lole32 -luuid $(LDFLAGS) win32/gdk-win32res.o
|
||||
|
||||
win32/libwntab32x.a : FRC
|
||||
cd win32 && $(MAKE) -f makefile.mingw libwntab32x.a
|
||||
|
||||
# Hack to get an updated makefile.mingw automatically after updating
|
||||
# makefile.mingw.in. Only for developer use.
|
||||
makefile.mingw: makefile.mingw.in
|
||||
sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \
|
||||
-e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' \
|
||||
-e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \
|
||||
-e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,' <$< >$@
|
||||
|
||||
.PHONY: FRC
|
||||
@@ -40,7 +40,6 @@ SUBDIRS=rc
|
||||
|
||||
EXTRA_DIST = \
|
||||
bdfcursor.c \
|
||||
makefile.mingw \
|
||||
makefile.msc \
|
||||
libie55uuid.la \
|
||||
libwntab32x.la
|
||||
|
||||
@@ -36,8 +36,16 @@
|
||||
/* Do use SetCapture, it works now. Thanks to jpe@archaeopteryx.com */
|
||||
#define USE_SETCAPTURE 1
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib/gprintf.h>
|
||||
|
||||
#if defined (__GNUC__) && defined (HAVE_DIMM_H)
|
||||
/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */
|
||||
# define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA
|
||||
# define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW
|
||||
#endif
|
||||
|
||||
#include "gdk.h"
|
||||
#include "gdkprivate-win32.h"
|
||||
#include "gdkinput-win32.h"
|
||||
@@ -50,12 +58,6 @@
|
||||
|
||||
#include <objbase.h>
|
||||
|
||||
#if defined (__GNUC__) && defined (HAVE_DIMM_H)
|
||||
/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */
|
||||
# define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA
|
||||
# define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW
|
||||
#endif
|
||||
|
||||
#include <imm.h>
|
||||
|
||||
#if defined (__GNUC__) && defined (HAVE_DIMM_H)
|
||||
@@ -2996,6 +2998,9 @@ gdk_event_translate (GdkDisplay *display,
|
||||
#endif
|
||||
)
|
||||
{
|
||||
GdkWindowState withdrawn_bit =
|
||||
IsWindowVisible (msg->hwnd) ? GDK_WINDOW_STATE_WITHDRAWN : 0;
|
||||
|
||||
if (!(private->event_mask & GDK_STRUCTURE_MASK))
|
||||
break;
|
||||
|
||||
@@ -3017,12 +3022,12 @@ gdk_event_translate (GdkDisplay *display,
|
||||
gdk_synthesize_window_state (window,
|
||||
GDK_WINDOW_STATE_ICONIFIED |
|
||||
GDK_WINDOW_STATE_MAXIMIZED |
|
||||
GDK_WINDOW_STATE_WITHDRAWN,
|
||||
withdrawn_bit,
|
||||
0);
|
||||
else if (msg->wParam == SIZE_MAXIMIZED)
|
||||
gdk_synthesize_window_state (window,
|
||||
GDK_WINDOW_STATE_ICONIFIED |
|
||||
GDK_WINDOW_STATE_WITHDRAWN,
|
||||
withdrawn_bit,
|
||||
GDK_WINDOW_STATE_MAXIMIZED);
|
||||
|
||||
if (private->resize_count > 1)
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "gdkpixmap.h"
|
||||
#include "gdkdisplay.h"
|
||||
|
||||
#include "gdkprivate-win32.h"
|
||||
|
||||
static void gdk_pixmap_impl_win32_get_size (GdkDrawable *drawable,
|
||||
@@ -440,6 +442,16 @@ gdk_pixmap_create_from_data (GdkDrawable *drawable,
|
||||
return result;
|
||||
}
|
||||
|
||||
GdkPixmap *
|
||||
gdk_pixmap_foreign_new_for_display (GdkDisplay *display,
|
||||
GdkNativeWindow anid)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
g_return_val_if_fail (display == _gdk_display, NULL);
|
||||
|
||||
return gdk_pixmap_foreign_new (anid);
|
||||
}
|
||||
|
||||
GdkPixmap*
|
||||
gdk_pixmap_foreign_new (GdkNativeWindow anid)
|
||||
{
|
||||
@@ -479,3 +491,18 @@ gdk_pixmap_foreign_new (GdkNativeWindow anid)
|
||||
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
GdkPixmap*
|
||||
gdk_pixmap_lookup (GdkNativeWindow anid)
|
||||
{
|
||||
return (GdkPixmap*) gdk_win32_handle_table_lookup (anid);
|
||||
}
|
||||
|
||||
GdkPixmap*
|
||||
gdk_pixmap_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
g_return_val_if_fail (display == _gdk_display, NULL);
|
||||
|
||||
return gdk_pixmap_lookup (anid);
|
||||
}
|
||||
|
||||
@@ -867,11 +867,17 @@ show_window_internal (GdkWindow *window,
|
||||
ShowWindow (GDK_WINDOW_HWND (window), SW_MAXIMIZE);
|
||||
else if (private->state & GDK_WINDOW_STATE_ICONIFIED)
|
||||
ShowWindow (GDK_WINDOW_HWND (window), SW_RESTORE);
|
||||
else if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP)
|
||||
ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNOACTIVATE);
|
||||
else
|
||||
ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNORMAL);
|
||||
|
||||
if (raise)
|
||||
BringWindowToTop (GDK_WINDOW_HWND (window));
|
||||
if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP)
|
||||
SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOPMOST, 0, 0, 0, 0,
|
||||
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
|
||||
else
|
||||
BringWindowToTop (GDK_WINDOW_HWND (window));
|
||||
else if (old_active_window != GDK_WINDOW_HWND (window))
|
||||
SetActiveWindow (old_active_window);
|
||||
}
|
||||
@@ -959,6 +965,9 @@ gdk_window_move (GdkWindow *window,
|
||||
g_return_if_fail (window != NULL);
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_move: %p +%d+%d\n",
|
||||
GDK_WINDOW_HWND (window), x, y));
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
|
||||
|
||||
if (!GDK_WINDOW_DESTROYED (window))
|
||||
@@ -1001,6 +1010,9 @@ gdk_window_resize (GdkWindow *window,
|
||||
if (height < 1)
|
||||
height = 1;
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_resize: %p %dx%d\n",
|
||||
GDK_WINDOW_HWND (window), width, height));
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
|
||||
|
||||
if (!GDK_WINDOW_DESTROYED (window))
|
||||
@@ -2559,7 +2571,22 @@ void
|
||||
gdk_window_set_skip_taskbar_hint (GdkWindow *window,
|
||||
gboolean skips_taskbar)
|
||||
{
|
||||
LONG extended_style;
|
||||
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_set_skip_taskbar_hint: %p %s\n",
|
||||
GDK_WINDOW_HWND (window),
|
||||
skips_taskbar ? "TRUE" : "FALSE"));
|
||||
|
||||
extended_style = GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE);
|
||||
|
||||
if (skips_taskbar)
|
||||
extended_style |= WS_EX_TOOLWINDOW;
|
||||
else
|
||||
extended_style &= ~WS_EX_TOOLWINDOW;
|
||||
|
||||
SetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE, extended_style);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2579,6 +2606,8 @@ gdk_window_set_type_hint (GdkWindow *window,
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return;
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_set_type_hint: %p %d\n",
|
||||
GDK_WINDOW_HWND (window), hint));
|
||||
switch (hint)
|
||||
{
|
||||
case GDK_WINDOW_TYPE_HINT_DIALOG:
|
||||
@@ -2591,6 +2620,15 @@ gdk_window_set_type_hint (GdkWindow *window,
|
||||
GDK_DECOR_MAXIMIZE);
|
||||
break;
|
||||
case GDK_WINDOW_TYPE_HINT_TOOLBAR:
|
||||
gdk_window_set_skip_taskbar_hint (window, TRUE);
|
||||
break;
|
||||
case GDK_WINDOW_TYPE_HINT_UTILITY:
|
||||
break;
|
||||
case GDK_WINDOW_TYPE_HINT_SPLASHSCREEN:
|
||||
break;
|
||||
case GDK_WINDOW_TYPE_HINT_DOCK:
|
||||
break;
|
||||
case GDK_WINDOW_TYPE_HINT_DESKTOP:
|
||||
break;
|
||||
default:
|
||||
g_warning ("Unknown hint %d passed to gdk_window_set_type_hint", hint);
|
||||
@@ -2598,11 +2636,6 @@ gdk_window_set_type_hint (GdkWindow *window,
|
||||
case GDK_WINDOW_TYPE_HINT_NORMAL:
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* XXX ???
|
||||
*/
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_set_type_hint: %p\n",
|
||||
GDK_WINDOW_HWND (window)));
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
## Makefile for building the Win32 dependent GDK objects with gcc on Win32
|
||||
## Use: make -f makefile.mingw
|
||||
|
||||
TOP = ../../..
|
||||
|
||||
# Location of the Wintab toolkit. Downloadable from
|
||||
# http://www.pointing.com. We use the wntab32x.lib archive library
|
||||
# directly (copying it to libwntab32x.a).
|
||||
WTKIT = $(TOP)/wtkit126
|
||||
|
||||
include ../../build/win32/make.mingw
|
||||
|
||||
# Possibly override GTK+ version from build/win32/module.defs
|
||||
GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@
|
||||
|
||||
OPTIMIZE = -g -Wall
|
||||
|
||||
INCLUDES = -I ../.. -I .. -I $(WTKIT)/include
|
||||
DEPCFLAGS = $(GLIB_CFLAGS) $(PANGO_CFLAGS)
|
||||
DEFINES = -DG_ENABLE_DEBUG -DHAVE_CONFIG_H -DGDK_VERSION=\"$(GTK_VER)\" -DGDK_COMPILATION
|
||||
|
||||
all: \
|
||||
../../config.h \
|
||||
../gdkconfig.h \
|
||||
libgdk-win32.a \
|
||||
libwntab32x.a
|
||||
|
||||
gdk_win32_OBJECTS = \
|
||||
gdkcolor-win32.o \
|
||||
gdkcursor-win32.o \
|
||||
gdkdnd-win32.o \
|
||||
gdkdrawable-win32.o \
|
||||
gdkevents-win32.o \
|
||||
gdkfont-win32.o \
|
||||
gdkgc-win32.o \
|
||||
gdkgeometry-win32.o \
|
||||
gdkglobals-win32.o \
|
||||
gdkim-win32.o \
|
||||
gdkimage-win32.o \
|
||||
gdkinput.o \
|
||||
gdkinput-win32.o \
|
||||
gdkkeys-win32.o \
|
||||
gdkmain-win32.o \
|
||||
gdkpango-win32.o \
|
||||
gdkpixmap-win32.o \
|
||||
gdkproperty-win32.o \
|
||||
gdkselection-win32.o \
|
||||
gdkvisual-win32.o \
|
||||
gdkwin32id.o \
|
||||
gdkwindow-win32.o
|
||||
|
||||
../../config.h : ../../config.h.win32
|
||||
cp $< $@
|
||||
|
||||
../gdkconfig.h : ../gdkconfig.h.win32
|
||||
cp $< $@
|
||||
|
||||
gdk-win32res.o : rc/gdk.rc gdk-build.tmp
|
||||
m4 -DBUILDNUMBER=`cat gdk-build.tmp` <rc/gdk.rc >gdk-win32res.rc
|
||||
windres --include-dir rc gdk-win32res.rc gdk-win32res.o
|
||||
rm gdk-build.tmp gdk-win32res.rc
|
||||
|
||||
# The *.stamp files aren't distributed. Thus, this takes care of only
|
||||
# tml building libraries with nonzero build number.
|
||||
|
||||
ifeq ($(wildcard gdk-build.stamp),gdk-build.stamp)
|
||||
# Magic to bump the build number
|
||||
gdk-build.tmp :
|
||||
bash -c "read number && echo $$[number+1]" <gdk-build.stamp >gdk-build.tmp
|
||||
cp gdk-build.tmp gdk-build.stamp
|
||||
else
|
||||
# Use zero as build number.
|
||||
gdk-build.tmp :
|
||||
echo 0 >gdk-build.tmp
|
||||
endif
|
||||
|
||||
libgdk-win32.a : $(gdk_win32_OBJECTS)
|
||||
-rm -f $@
|
||||
$(AR) rv $@ $(gdk_win32_OBJECTS)
|
||||
|
||||
libwntab32x.a : $(WTKIT)/lib/i386/wntab32x.lib
|
||||
cp $< $@
|
||||
|
||||
# Hack to get an updated makefile.mingw automatically after updating
|
||||
# makefile.mingw.in. Only for developer use.
|
||||
makefile.mingw: makefile.mingw.in
|
||||
sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \
|
||||
-e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' <$< >$@
|
||||
@@ -7,5 +7,15 @@ if USE_WIN32
|
||||
noinst_DATA = gdk-win32res.lo
|
||||
endif
|
||||
|
||||
gdk-win32res.lo : gdk.rc gtk.ico
|
||||
noinst_PROGRAMS = foo
|
||||
|
||||
# Compile a dummy object file into the foo.lo libtool object so that
|
||||
# the ugly hack in lt-compile-resource knows what kind of libtool
|
||||
# object to produce. (It checks whether there are any .libs/*.o
|
||||
# files.)
|
||||
|
||||
gdk-win32res.lo : gdk.rc gtk.ico foo.lo
|
||||
$(top_srcdir)/build/win32/lt-compile-resource gdk.rc gdk-win32res.lo
|
||||
|
||||
foo.c:
|
||||
echo 'int main (int argc, char **argv) { return 0; }' >foo.c
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
@@ -610,6 +610,7 @@ translate_key_event (GdkDisplay *display,
|
||||
event->key.length, buf);
|
||||
}
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
return;
|
||||
}
|
||||
|
||||
/* Return the window this has to do with, if any, rather
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <config.h>
|
||||
#include <glib.h>
|
||||
#include "gdkscreen.h"
|
||||
|
||||
+15
-9
@@ -10,9 +10,9 @@ rm $ZIP
|
||||
zip -r $ZIP -@ <<EOF
|
||||
COPYING.LIB-2
|
||||
etc/gtk-2.0
|
||||
lib/libgdk_pixbuf-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
lib/libgdk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
lib/libgtk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
lib/libgdk_pixbuf-@GTK_API_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
lib/libgdk-win32-@GTK_API_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
lib/libgtk-win32-@GTK_API_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
EOF
|
||||
|
||||
zip $ZIP lib/gtk-2.0/@GTK_BINARY_VERSION@/loaders/*.dll lib/gtk-2.0/@GTK_BINARY_VERSION@/immodules/*.dll
|
||||
@@ -24,12 +24,17 @@ zip -r $ZIP lib/locale/*/LC_MESSAGES/gtk20.mo
|
||||
rm $DEVZIP
|
||||
zip -r $DEVZIP -@ <<EOF
|
||||
include/gtk-2.0
|
||||
lib/libgdk_pixbuf-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.dll.a
|
||||
lib/gdk_pixbuf-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.lib
|
||||
lib/libgdk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.dll.a
|
||||
lib/gdk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.lib
|
||||
lib/libgtk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.dll.a
|
||||
lib/gtk-win32-@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.lib
|
||||
bin/gdk-pixbuf-csource.exe
|
||||
bin/gdk-pixbuf-query-loaders.exe
|
||||
bin/gtk-query-immodules-2.0.exe
|
||||
bin/gtk-demo.exe
|
||||
man/man1/gdk-pixbuf-csource.1
|
||||
lib/libgdk_pixbuf-@GTK_API_VERSION@.dll.a
|
||||
lib/gdk_pixbuf-@GTK_API_VERSION@.lib
|
||||
lib/libgdk-win32-@GTK_API_VERSION@.dll.a
|
||||
lib/gdk-win32-@GTK_API_VERSION@.lib
|
||||
lib/libgtk-win32-@GTK_API_VERSION@.dll.a
|
||||
lib/gtk-win32-@GTK_API_VERSION@.lib
|
||||
lib/gtk-2.0/include
|
||||
lib/pkgconfig/gdk-pixbuf-2.0.pc
|
||||
lib/pkgconfig/gdk-2.0.pc
|
||||
@@ -37,5 +42,6 @@ lib/pkgconfig/gdk-win32-2.0.pc
|
||||
lib/pkgconfig/gtk+-2.0.pc
|
||||
lib/pkgconfig/gtk+-win32-2.0.pc
|
||||
share/aclocal/gtk-2.0.m4
|
||||
share/gtk-2.0
|
||||
EOF
|
||||
|
||||
|
||||
@@ -619,8 +619,6 @@ EXTRA_DIST += @STRIP_BEGIN@ \
|
||||
gtkrc.default \
|
||||
gtkrc.key.default \
|
||||
gtkrc.key.emacs \
|
||||
makefile.mingw \
|
||||
makefile.mingw.in \
|
||||
makefile.msc \
|
||||
makefile.msc.in \
|
||||
@STRIP_END@
|
||||
|
||||
+3
-4
@@ -46,9 +46,8 @@ get_char (const char **str)
|
||||
gunichar c = g_utf8_get_char (*str);
|
||||
*str = g_utf8_next_char (*str);
|
||||
|
||||
#if defined(G_OS_WIN32) || defined(G_WITH_CYGWIN)
|
||||
if (c <= 0xff)
|
||||
c = g_ascii_tolower (c);
|
||||
#ifdef G_PLATFORM_WIN32
|
||||
c = g_unichar_tolower (c);
|
||||
#endif
|
||||
|
||||
return c;
|
||||
@@ -256,7 +255,7 @@ _gtk_fnmatch (const char *pattern,
|
||||
return gtk_fnmatch_intern (pattern, string, TRUE);
|
||||
}
|
||||
|
||||
#define FNMATCH_TEST_CASES
|
||||
#undef FNMATCH_TEST_CASES
|
||||
#ifdef FNMATCH_TEST_CASES
|
||||
|
||||
#define TEST(pat, str, result) \
|
||||
|
||||
+57
-11
@@ -170,6 +170,8 @@ EXPORTS
|
||||
gtk_check_version
|
||||
gtk_clipboard_clear
|
||||
gtk_clipboard_get
|
||||
gtk_clipboard_get_display
|
||||
gtk_clipboard_get_for_display
|
||||
gtk_clipboard_get_owner
|
||||
gtk_clipboard_request_contents
|
||||
gtk_clipboard_request_text
|
||||
@@ -269,6 +271,7 @@ EXPORTS
|
||||
gtk_color_selection_palette_from_string
|
||||
gtk_color_selection_palette_to_string
|
||||
gtk_color_selection_set_change_palette_hook
|
||||
gtk_color_selection_set_change_palette_with_screen_hook
|
||||
gtk_color_selection_set_color
|
||||
gtk_color_selection_set_current_alpha
|
||||
gtk_color_selection_set_current_color
|
||||
@@ -626,6 +629,7 @@ EXPORTS
|
||||
gtk_icon_size_get_name
|
||||
gtk_icon_size_get_type
|
||||
gtk_icon_size_lookup
|
||||
gtk_icon_size_lookup_for_settings
|
||||
gtk_icon_size_register
|
||||
gtk_icon_size_register_alias
|
||||
gtk_icon_source_copy
|
||||
@@ -716,8 +720,11 @@ EXPORTS
|
||||
gtk_input_dialog_new
|
||||
gtk_input_remove
|
||||
gtk_interface_age
|
||||
gtk_invisible_get_screen
|
||||
gtk_invisible_get_type
|
||||
gtk_invisible_new
|
||||
gtk_invisible_new_for_screen
|
||||
gtk_invisible_set_screen
|
||||
gtk_item_deselect
|
||||
gtk_item_factories_path_delete
|
||||
gtk_item_factory_add_foreign
|
||||
@@ -823,14 +830,19 @@ EXPORTS
|
||||
gtk_list_store_insert
|
||||
gtk_list_store_insert_after
|
||||
gtk_list_store_insert_before
|
||||
gtk_list_store_iter_is_valid
|
||||
gtk_list_store_move_after
|
||||
gtk_list_store_move_before
|
||||
gtk_list_store_new
|
||||
gtk_list_store_newv
|
||||
gtk_list_store_prepend
|
||||
gtk_list_store_remove
|
||||
gtk_list_store_reorder
|
||||
gtk_list_store_set
|
||||
gtk_list_store_set_column_types
|
||||
gtk_list_store_set_valist
|
||||
gtk_list_store_set_value
|
||||
gtk_list_store_swap
|
||||
gtk_list_toggle_add_mode
|
||||
gtk_list_toggle_focus_row
|
||||
gtk_list_toggle_row
|
||||
@@ -916,6 +928,7 @@ EXPORTS
|
||||
gtk_menu_shell_get_type
|
||||
gtk_menu_shell_insert
|
||||
gtk_menu_shell_prepend
|
||||
gtk_menu_shell_select_first
|
||||
gtk_menu_shell_select_item
|
||||
gtk_message_dialog_get_type
|
||||
gtk_message_dialog_new
|
||||
@@ -934,6 +947,7 @@ EXPORTS
|
||||
gtk_notebook_get_current_page
|
||||
gtk_notebook_get_menu_label
|
||||
gtk_notebook_get_menu_label_text
|
||||
gtk_notebook_get_n_pages
|
||||
gtk_notebook_get_nth_page
|
||||
gtk_notebook_get_scrollable
|
||||
gtk_notebook_get_show_border
|
||||
@@ -1042,10 +1056,6 @@ EXPORTS
|
||||
gtk_pixmap_new
|
||||
gtk_pixmap_set
|
||||
gtk_pixmap_set_build_insensitive
|
||||
; gtk_plug_construct
|
||||
; gtk_plug_get_id
|
||||
; gtk_plug_get_type
|
||||
; gtk_plug_new
|
||||
gtk_policy_type_get_type
|
||||
gtk_position_type_get_type
|
||||
gtk_preview_draw_row
|
||||
@@ -1216,12 +1226,14 @@ EXPORTS
|
||||
gtk_selection_data_targets_include_text
|
||||
gtk_selection_mode_get_type
|
||||
gtk_selection_owner_set
|
||||
gtk_selection_owner_set_for_display
|
||||
gtk_selection_remove_all
|
||||
gtk_separator_get_type
|
||||
gtk_separator_menu_item_get_type
|
||||
gtk_separator_menu_item_new
|
||||
gtk_set_locale
|
||||
gtk_settings_get_default
|
||||
gtk_settings_get_for_screen
|
||||
gtk_settings_get_type
|
||||
gtk_settings_install_property
|
||||
gtk_settings_install_property_parser
|
||||
@@ -1250,11 +1262,6 @@ EXPORTS
|
||||
gtk_size_group_new
|
||||
gtk_size_group_remove_widget
|
||||
gtk_size_group_set_mode
|
||||
; gtk_socket_add_id
|
||||
; gtk_socket_get_id
|
||||
; gtk_socket_get_type
|
||||
; gtk_socket_new
|
||||
; gtk_socket_steal
|
||||
gtk_sort_type_get_type
|
||||
gtk_spin_button_configure
|
||||
gtk_spin_button_get_adjustment
|
||||
@@ -1715,6 +1722,7 @@ EXPORTS
|
||||
gtk_tree_model_get_iter_from_string
|
||||
gtk_tree_model_get_n_columns
|
||||
gtk_tree_model_get_path
|
||||
gtk_tree_model_get_string_from_iter
|
||||
gtk_tree_model_get_type
|
||||
gtk_tree_model_get_valist
|
||||
gtk_tree_model_get_value
|
||||
@@ -1737,6 +1745,7 @@ EXPORTS
|
||||
gtk_tree_model_sort_convert_path_to_child_path
|
||||
gtk_tree_model_sort_get_model
|
||||
gtk_tree_model_sort_get_type
|
||||
gtk_tree_model_sort_iter_is_valid
|
||||
gtk_tree_model_sort_new_with_model
|
||||
gtk_tree_model_sort_reset_default_sort_func
|
||||
gtk_tree_model_unref_node
|
||||
@@ -1753,6 +1762,7 @@ EXPORTS
|
||||
gtk_tree_path_is_descendant
|
||||
gtk_tree_path_new
|
||||
gtk_tree_path_new_first
|
||||
gtk_tree_path_new_from_indices
|
||||
gtk_tree_path_new_from_string
|
||||
gtk_tree_path_next
|
||||
gtk_tree_path_prepend_index
|
||||
@@ -1762,6 +1772,7 @@ EXPORTS
|
||||
gtk_tree_prepend
|
||||
gtk_tree_remove_item
|
||||
gtk_tree_remove_items
|
||||
gtk_tree_row_reference_copy
|
||||
gtk_tree_row_reference_deleted
|
||||
gtk_tree_row_reference_free
|
||||
gtk_tree_row_reference_get_path
|
||||
@@ -1772,8 +1783,10 @@ EXPORTS
|
||||
gtk_tree_row_reference_valid
|
||||
gtk_tree_select_child
|
||||
gtk_tree_select_item
|
||||
gtk_tree_selection_count_selected_rows
|
||||
gtk_tree_selection_get_mode
|
||||
gtk_tree_selection_get_selected
|
||||
gtk_tree_selection_get_selected_rows
|
||||
gtk_tree_selection_get_tree_view
|
||||
gtk_tree_selection_get_type
|
||||
gtk_tree_selection_get_user_data
|
||||
@@ -1789,6 +1802,7 @@ EXPORTS
|
||||
gtk_tree_selection_unselect_all
|
||||
gtk_tree_selection_unselect_iter
|
||||
gtk_tree_selection_unselect_path
|
||||
gtk_tree_selection_unselect_range
|
||||
gtk_tree_set_row_drag_data
|
||||
gtk_tree_set_selection_mode
|
||||
gtk_tree_set_view_lines
|
||||
@@ -1808,14 +1822,19 @@ EXPORTS
|
||||
gtk_tree_store_insert_before
|
||||
gtk_tree_store_is_ancestor
|
||||
gtk_tree_store_iter_depth
|
||||
gtk_tree_store_iter_is_valid
|
||||
gtk_tree_store_move_after
|
||||
gtk_tree_store_move_before
|
||||
gtk_tree_store_new
|
||||
gtk_tree_store_newv
|
||||
gtk_tree_store_prepend
|
||||
gtk_tree_store_remove
|
||||
gtk_tree_store_reorder
|
||||
gtk_tree_store_set
|
||||
gtk_tree_store_set_column_types
|
||||
gtk_tree_store_set_valist
|
||||
gtk_tree_store_set_value
|
||||
gtk_tree_store_swap
|
||||
gtk_tree_unselect_child
|
||||
gtk_tree_unselect_item
|
||||
gtk_tree_view_append_column
|
||||
@@ -1828,6 +1847,7 @@ EXPORTS
|
||||
gtk_tree_view_column_clear
|
||||
gtk_tree_view_column_clear_attributes
|
||||
gtk_tree_view_column_clicked
|
||||
gtk_tree_view_column_focus_cell
|
||||
gtk_tree_view_column_get_alignment
|
||||
gtk_tree_view_column_get_cell_renderers
|
||||
gtk_tree_view_column_get_clickable
|
||||
@@ -1875,6 +1895,7 @@ EXPORTS
|
||||
gtk_tree_view_enable_model_drag_source
|
||||
gtk_tree_view_expand_all
|
||||
gtk_tree_view_expand_row
|
||||
gtk_tree_view_expand_to_path
|
||||
gtk_tree_view_get_background_area
|
||||
gtk_tree_view_get_bin_window
|
||||
gtk_tree_view_get_cell_area
|
||||
@@ -1912,6 +1933,7 @@ EXPORTS
|
||||
gtk_tree_view_scroll_to_point
|
||||
gtk_tree_view_set_column_drag_function
|
||||
gtk_tree_view_set_cursor
|
||||
gtk_tree_view_set_cursor_on_cell
|
||||
gtk_tree_view_set_destroy_count_func
|
||||
gtk_tree_view_set_drag_dest_row
|
||||
gtk_tree_view_set_enable_search
|
||||
@@ -1972,8 +1994,10 @@ EXPORTS
|
||||
gtk_widget_add_events
|
||||
gtk_widget_child_focus
|
||||
gtk_widget_child_notify
|
||||
gtk_widget_class_find_style_property
|
||||
gtk_widget_class_install_style_property
|
||||
gtk_widget_class_install_style_property_parser
|
||||
gtk_widget_class_list_style_properties
|
||||
gtk_widget_class_path
|
||||
gtk_widget_create_pango_context
|
||||
gtk_widget_create_pango_layout
|
||||
@@ -1988,14 +2012,15 @@ EXPORTS
|
||||
gtk_widget_get_ancestor
|
||||
gtk_widget_get_child_requisition
|
||||
gtk_widget_get_child_visible
|
||||
gtk_widget_get_clipboard
|
||||
gtk_widget_get_colormap
|
||||
gtk_widget_get_composite_name
|
||||
gtk_widget_get_default_colormap
|
||||
gtk_widget_get_default_direction
|
||||
gtk_widget_get_default_style
|
||||
gtk_widget_get_default_visual
|
||||
gtk_widget_get_display
|
||||
gtk_widget_get_direction
|
||||
gtk_widget_get_display
|
||||
gtk_widget_get_events
|
||||
gtk_widget_get_extension_events
|
||||
gtk_widget_get_modifier_style
|
||||
@@ -2004,6 +2029,8 @@ EXPORTS
|
||||
gtk_widget_get_parent
|
||||
gtk_widget_get_parent_window
|
||||
gtk_widget_get_pointer
|
||||
gtk_widget_get_root_window
|
||||
gtk_widget_get_screen
|
||||
gtk_widget_get_settings
|
||||
gtk_widget_get_size_request
|
||||
gtk_widget_get_style
|
||||
@@ -2012,6 +2039,7 @@ EXPORTS
|
||||
gtk_widget_get_visual
|
||||
gtk_widget_grab_default
|
||||
gtk_widget_grab_focus
|
||||
gtk_widget_has_screen
|
||||
gtk_widget_help_type_get_type
|
||||
gtk_widget_hide
|
||||
gtk_widget_hide_all
|
||||
@@ -2064,7 +2092,6 @@ EXPORTS
|
||||
gtk_widget_set_parent
|
||||
gtk_widget_set_parent_window
|
||||
gtk_widget_set_redraw_on_allocate
|
||||
gtk_widget_get_screen
|
||||
gtk_widget_set_scroll_adjustments
|
||||
gtk_widget_set_sensitive
|
||||
gtk_widget_set_size_request
|
||||
@@ -2095,6 +2122,7 @@ EXPORTS
|
||||
gtk_window_begin_move_drag
|
||||
gtk_window_begin_resize_drag
|
||||
gtk_window_deiconify
|
||||
gtk_window_fullscreen
|
||||
gtk_window_get_decorated
|
||||
gtk_window_get_default_icon_list
|
||||
gtk_window_get_default_size
|
||||
@@ -2112,6 +2140,7 @@ EXPORTS
|
||||
gtk_window_get_role
|
||||
gtk_window_get_screen
|
||||
gtk_window_get_size
|
||||
gtk_window_get_skip_pager_hint
|
||||
gtk_window_get_title
|
||||
gtk_window_get_transient_for
|
||||
gtk_window_get_type
|
||||
@@ -2134,8 +2163,10 @@ EXPORTS
|
||||
gtk_window_remove_mnemonic
|
||||
gtk_window_reshow_with_initial_size
|
||||
gtk_window_resize
|
||||
gtk_window_set_auto_startup_notification
|
||||
gtk_window_set_decorated
|
||||
gtk_window_set_default
|
||||
gtk_window_set_default_icon_from_file
|
||||
gtk_window_set_default_icon_list
|
||||
gtk_window_set_default_size
|
||||
gtk_window_set_destroy_with_parent
|
||||
@@ -2145,6 +2176,7 @@ EXPORTS
|
||||
gtk_window_set_gravity
|
||||
gtk_window_set_has_frame
|
||||
gtk_window_set_icon
|
||||
gtk_window_set_icon_from_file
|
||||
gtk_window_set_icon_list
|
||||
gtk_window_set_mnemonic_modifier
|
||||
gtk_window_set_modal
|
||||
@@ -2153,12 +2185,26 @@ EXPORTS
|
||||
gtk_window_set_resizable
|
||||
gtk_window_set_role
|
||||
gtk_window_set_screen
|
||||
gtk_window_set_skip_pager_hint
|
||||
gtk_window_set_skip_taskbar_hint
|
||||
gtk_window_set_title
|
||||
gtk_window_set_transient_for
|
||||
gtk_window_set_type_hint
|
||||
gtk_window_set_wmclass
|
||||
gtk_window_stick
|
||||
gtk_window_type_get_type
|
||||
gtk_window_unfullscreen
|
||||
gtk_window_unmaximize
|
||||
gtk_window_unstick
|
||||
gtk_wrap_mode_get_type
|
||||
; gtk_plug_construct
|
||||
; gtk_plug_construct_for_display
|
||||
; gtk_plug_get_id
|
||||
; gtk_plug_get_type
|
||||
; gtk_plug_new
|
||||
; gtk_plug_new_for_display
|
||||
; gtk_socket_add_id
|
||||
; gtk_socket_get_id
|
||||
; gtk_socket_get_type
|
||||
; gtk_socket_new
|
||||
; gtk_socket_steal
|
||||
|
||||
@@ -446,7 +446,8 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer *cell,
|
||||
pix_rect.width -= cell->xpad * 2;
|
||||
pix_rect.height -= cell->ypad * 2;
|
||||
|
||||
if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect))
|
||||
if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect) &&
|
||||
gdk_rectangle_intersect (expose_area, &draw_rect, &draw_rect))
|
||||
gdk_draw_pixbuf (window,
|
||||
widget->style->black_gc,
|
||||
pixbuf,
|
||||
|
||||
+8
-9
@@ -607,12 +607,11 @@ palette_paint (GtkWidget *drawing_area,
|
||||
{
|
||||
if (drawing_area->window == NULL)
|
||||
return;
|
||||
|
||||
gdk_window_clear_area (drawing_area->window,
|
||||
area->x,
|
||||
area->y,
|
||||
area->width,
|
||||
area->height);
|
||||
|
||||
gdk_draw_rectangle (drawing_area->window,
|
||||
drawing_area->style->bg_gc[GTK_STATE_NORMAL],
|
||||
TRUE,
|
||||
area->x, area->y, area->width, area->height);
|
||||
|
||||
if (GTK_WIDGET_HAS_FOCUS (drawing_area))
|
||||
{
|
||||
@@ -1375,9 +1374,9 @@ hex_changed (GtkWidget *hex_entry,
|
||||
text = gtk_editable_get_chars (GTK_EDITABLE (priv->hex_entry), 0, -1);
|
||||
if (gdk_color_parse (text, &color))
|
||||
{
|
||||
priv->color[COLORSEL_RED] = CLAMP (color.red/65280.0, 0.0, 1.0);
|
||||
priv->color[COLORSEL_GREEN] = CLAMP (color.green/65280.0, 0.0, 1.0);
|
||||
priv->color[COLORSEL_BLUE] = CLAMP (color.blue/65280.0, 0.0, 1.0);
|
||||
priv->color[COLORSEL_RED] = CLAMP (color.red/65535.0, 0.0, 1.0);
|
||||
priv->color[COLORSEL_GREEN] = CLAMP (color.green/65535.0, 0.0, 1.0);
|
||||
priv->color[COLORSEL_BLUE] = CLAMP (color.blue/65535.0, 0.0, 1.0);
|
||||
gtk_rgb_to_hsv (priv->color[COLORSEL_RED],
|
||||
priv->color[COLORSEL_GREEN],
|
||||
priv->color[COLORSEL_BLUE],
|
||||
|
||||
+86
-37
@@ -42,15 +42,14 @@
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
#include <glib.h> /* Include early to get G_OS_WIN32 and
|
||||
* G_WITH_CYGWIN */
|
||||
#include <glib.h> /* Include early to get G_OS_WIN32 etc */
|
||||
|
||||
#if defined(G_OS_WIN32) || defined(G_WITH_CYGWIN)
|
||||
#if defined(G_PLATFORM_WIN32)
|
||||
#include <ctype.h>
|
||||
#define STRICT
|
||||
#include <windows.h>
|
||||
#undef STRICT
|
||||
#endif /* G_OS_WIN32 || G_WITH_CYGWIN */
|
||||
#endif /* G_PLATFORM_WIN32 */
|
||||
#ifdef G_OS_WIN32
|
||||
#include <winsock.h> /* For gethostname */
|
||||
#endif
|
||||
@@ -62,6 +61,7 @@
|
||||
#include "gtkfilesel.h"
|
||||
#include "gtkhbox.h"
|
||||
#include "gtkhbbox.h"
|
||||
#include "gtkintl.h"
|
||||
#include "gtklabel.h"
|
||||
#include "gtkliststore.h"
|
||||
#include "gtkmain.h"
|
||||
@@ -76,7 +76,6 @@
|
||||
#include "gtkoptionmenu.h"
|
||||
#include "gtkdialog.h"
|
||||
#include "gtkmessagedialog.h"
|
||||
#include "gtkintl.h"
|
||||
#include "gtkdnd.h"
|
||||
#include "gtkeventbox.h"
|
||||
|
||||
@@ -150,9 +149,11 @@ typedef struct _PossibleCompletion PossibleCompletion;
|
||||
*/
|
||||
struct _CompletionDirSent
|
||||
{
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
ino_t inode;
|
||||
time_t mtime;
|
||||
dev_t device;
|
||||
#endif
|
||||
|
||||
gint entry_count;
|
||||
struct _CompletionDirEntry *entries;
|
||||
@@ -315,7 +316,7 @@ static const gchar* cmpl_completion_fullname (const gchar*, CompletionSta
|
||||
static CompletionDir* open_ref_dir (gchar* text_to_complete,
|
||||
gchar** remaining_text,
|
||||
CompletionState* cmpl_state);
|
||||
#if !defined(G_OS_WIN32) && !defined(G_WITH_CYGWIN)
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
static gboolean check_dir (gchar *dir_name,
|
||||
struct stat *result,
|
||||
gboolean *stat_subdirs);
|
||||
@@ -334,7 +335,7 @@ static CompletionDirSent* open_new_dir (gchar* dir_name,
|
||||
static gint correct_dir_fullname (CompletionDir* cmpl_dir);
|
||||
static gint correct_parent (CompletionDir* cmpl_dir,
|
||||
struct stat *sbuf);
|
||||
#ifndef G_OS_WIN32
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
static gchar* find_parent_dir_fullname (gchar* dirname);
|
||||
#endif
|
||||
static CompletionDir* attach_dir (CompletionDirSent* sent,
|
||||
@@ -413,12 +414,50 @@ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
|
||||
|
||||
static void free_selected_names (GPtrArray *names);
|
||||
|
||||
#if !defined(G_OS_WIN32) && !defined(G_WITH_CYGWIN)
|
||||
#define compare_filenames(a, b) strcmp(a, b)
|
||||
#else
|
||||
#define compare_filenames(a, b) g_ascii_strcasecmp(a, b)
|
||||
#endif
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
|
||||
#define compare_utf8_filenames(a, b) strcmp(a, b)
|
||||
#define compare_sys_filenames(a, b) strcmp(a, b)
|
||||
|
||||
#else
|
||||
|
||||
static gint
|
||||
compare_utf8_filenames (const gchar *a,
|
||||
const gchar *b)
|
||||
{
|
||||
gchar *a_folded, *b_folded;
|
||||
gint retval;
|
||||
|
||||
a_folded = g_utf8_strdown (a, -1);
|
||||
b_folded = g_utf8_strdown (b, -1);
|
||||
|
||||
retval = strcmp (a_folded, b_folded);
|
||||
|
||||
g_free (a_folded);
|
||||
g_free (b_folded);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static gint
|
||||
compare_sys_filenames (const gchar *a,
|
||||
const gchar *b)
|
||||
{
|
||||
gchar *a_utf8, *b_utf8;
|
||||
gint retval;
|
||||
|
||||
a_utf8 = g_filename_to_utf8 (a, -1, NULL, NULL, NULL);
|
||||
b_utf8 = g_filename_to_utf8 (b, -1, NULL, NULL, NULL);
|
||||
|
||||
retval = compare_utf8_filenames (a_utf8, b_utf8);
|
||||
|
||||
g_free (a_utf8);
|
||||
g_free (b_utf8);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static GtkWindowClass *parent_class = NULL;
|
||||
|
||||
@@ -429,7 +468,7 @@ static gint cmpl_errno;
|
||||
/*
|
||||
* Take the path currently in the file selection
|
||||
* entry field and translate as necessary from
|
||||
* a WIN32 style to CYGWIN32 style path. For
|
||||
* a Win32 style to Cygwin style path. For
|
||||
* instance translate:
|
||||
* x:\somepath\file.jpg
|
||||
* to:
|
||||
@@ -2002,7 +2041,7 @@ gtk_file_selection_dir_activate (GtkTreeView *tree_view,
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
#if defined(G_OS_WIN32) || defined(G_WITH_CYGWIN)
|
||||
#ifdef G_PLATFORM_WIN32
|
||||
|
||||
static void
|
||||
win32_gtk_add_drives_to_dir_list (GtkListStore *model)
|
||||
@@ -2121,7 +2160,7 @@ gtk_file_selection_populate (GtkFileSelection *fs,
|
||||
poss = cmpl_next_completion (cmpl_state);
|
||||
}
|
||||
|
||||
#if defined(G_OS_WIN32) || defined(G_WITH_CYGWIN)
|
||||
#ifdef G_PLATFORM_WIN32
|
||||
/* For Windows, add drives as potential selections */
|
||||
win32_gtk_add_drives_to_dir_list (dir_model);
|
||||
#endif
|
||||
@@ -2324,8 +2363,8 @@ gtk_file_selection_file_changed (GtkTreeSelection *selection,
|
||||
/* A common case is selecting a range of files from top to bottom,
|
||||
* so quickly check for that to avoid looping over the entire list
|
||||
*/
|
||||
if (compare_filenames (g_ptr_array_index (old_names, old_names->len - 1),
|
||||
g_ptr_array_index (new_names, new_names->len - 1)) != 0)
|
||||
if (compare_utf8_filenames (g_ptr_array_index (old_names, old_names->len - 1),
|
||||
g_ptr_array_index (new_names, new_names->len - 1)) != 0)
|
||||
index = new_names->len - 1;
|
||||
else
|
||||
{
|
||||
@@ -2336,8 +2375,8 @@ gtk_file_selection_file_changed (GtkTreeSelection *selection,
|
||||
*/
|
||||
while (i < old_names->len && j < new_names->len)
|
||||
{
|
||||
cmp = compare_filenames (g_ptr_array_index (old_names, i),
|
||||
g_ptr_array_index (new_names, j));
|
||||
cmp = compare_utf8_filenames (g_ptr_array_index (old_names, i),
|
||||
g_ptr_array_index (new_names, j));
|
||||
if (cmp < 0)
|
||||
{
|
||||
i++;
|
||||
@@ -2366,8 +2405,8 @@ gtk_file_selection_file_changed (GtkTreeSelection *selection,
|
||||
* So search up from there.
|
||||
*/
|
||||
if (fs->last_selected &&
|
||||
compare_filenames (fs->last_selected,
|
||||
g_ptr_array_index (new_names, 0)) == 0)
|
||||
compare_utf8_filenames (fs->last_selected,
|
||||
g_ptr_array_index (new_names, 0)) == 0)
|
||||
index = new_names->len - 1;
|
||||
else
|
||||
index = 0;
|
||||
@@ -2401,7 +2440,7 @@ maybe_clear_entry:
|
||||
|
||||
entry = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
|
||||
if ((entry != NULL) && (fs->last_selected != NULL) &&
|
||||
(compare_filenames (entry, fs->last_selected) == 0))
|
||||
(compare_utf8_filenames (entry, fs->last_selected) == 0))
|
||||
gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
|
||||
}
|
||||
|
||||
@@ -2464,7 +2503,7 @@ gtk_file_selection_get_selections (GtkFileSelection *filesel)
|
||||
|
||||
selections[count++] = current;
|
||||
|
||||
if (unselected_entry && compare_filenames (current, filename) == 0)
|
||||
if (unselected_entry && compare_sys_filenames (current, filename) == 0)
|
||||
unselected_entry = FALSE;
|
||||
}
|
||||
|
||||
@@ -2736,7 +2775,9 @@ cmpl_completion_matches (gchar *text_to_complete,
|
||||
gchar **remaining_text,
|
||||
CompletionState *cmpl_state)
|
||||
{
|
||||
#ifdef HAVE_PWD_H
|
||||
gchar* first_slash;
|
||||
#endif
|
||||
PossibleCompletion *poss;
|
||||
|
||||
prune_memory_usage (cmpl_state);
|
||||
@@ -2878,16 +2919,15 @@ open_ref_dir (gchar *text_to_complete,
|
||||
p = strrchr (tmp, G_DIR_SEPARATOR);
|
||||
if (p)
|
||||
{
|
||||
if (p == tmp)
|
||||
if (p + 1 == g_path_skip_root (tmp))
|
||||
p++;
|
||||
|
||||
*p = '\0';
|
||||
|
||||
new_dir = open_dir (tmp, cmpl_state);
|
||||
|
||||
if (new_dir)
|
||||
*remaining_text = text_to_complete +
|
||||
((p == tmp + 1) ? (p - tmp) : (p + 1 - tmp));
|
||||
((p == g_path_skip_root (tmp)) ? (p - tmp) : (p + 1 - tmp));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3023,10 +3063,11 @@ open_new_dir (gchar *dir_name,
|
||||
gchar *sys_dir_name;
|
||||
|
||||
sent = g_new (CompletionDirSent, 1);
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
sent->mtime = sbuf->st_mtime;
|
||||
sent->inode = sbuf->st_ino;
|
||||
sent->device = sbuf->st_dev;
|
||||
|
||||
#endif
|
||||
path = g_string_sized_new (2*MAXPATHLEN + 10);
|
||||
|
||||
sys_dir_name = g_filename_from_utf8 (dir_name, -1, NULL, NULL, NULL);
|
||||
@@ -3046,7 +3087,6 @@ open_new_dir (gchar *dir_name,
|
||||
|
||||
while ((dirent = g_dir_read_name (directory)) != NULL)
|
||||
entry_count++;
|
||||
|
||||
entry_count += 2; /* For ".",".." */
|
||||
|
||||
sent->entries = g_new (CompletionDirEntry, entry_count);
|
||||
@@ -3119,7 +3159,7 @@ open_new_dir (gchar *dir_name,
|
||||
return sent;
|
||||
}
|
||||
|
||||
#if !defined(G_OS_WIN32) && !defined(G_WITH_CYGWIN)
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
|
||||
static gboolean
|
||||
check_dir (gchar *dir_name,
|
||||
@@ -3192,12 +3232,14 @@ static CompletionDir*
|
||||
open_dir (gchar *dir_name,
|
||||
CompletionState *cmpl_state)
|
||||
{
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
struct stat sbuf;
|
||||
gboolean stat_subdirs;
|
||||
CompletionDirSent *sent;
|
||||
GList* cdsl;
|
||||
#endif
|
||||
CompletionDirSent *sent;
|
||||
|
||||
#if !defined(G_OS_WIN32) && !defined(G_WITH_CYGWIN)
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
if (!check_dir (dir_name, &sbuf, &stat_subdirs))
|
||||
return NULL;
|
||||
|
||||
@@ -3214,11 +3256,11 @@ open_dir (gchar *dir_name,
|
||||
|
||||
cdsl = cdsl->next;
|
||||
}
|
||||
#else
|
||||
stat_subdirs = TRUE;
|
||||
#endif
|
||||
|
||||
sent = open_new_dir (dir_name, &sbuf, stat_subdirs);
|
||||
#else
|
||||
sent = open_new_dir (dir_name, NULL, TRUE);
|
||||
#endif
|
||||
|
||||
if (sent)
|
||||
{
|
||||
@@ -3362,7 +3404,9 @@ correct_parent (CompletionDir *cmpl_dir,
|
||||
struct stat parbuf;
|
||||
gchar *last_slash;
|
||||
gchar *first_slash;
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
gchar *new_name;
|
||||
#endif
|
||||
gchar *sys_filename;
|
||||
gchar c = 0;
|
||||
|
||||
@@ -3402,7 +3446,7 @@ correct_parent (CompletionDir *cmpl_dir,
|
||||
}
|
||||
g_free (sys_filename);
|
||||
|
||||
#ifndef G_OS_WIN32 /* No inode numbers on Win32 */
|
||||
#ifndef G_PLATFORM_WIN32 /* No inode numbers on Win32 */
|
||||
if (parbuf.st_ino == sbuf->st_ino && parbuf.st_dev == sbuf->st_dev)
|
||||
/* it wasn't a link */
|
||||
return TRUE;
|
||||
@@ -3427,7 +3471,7 @@ correct_parent (CompletionDir *cmpl_dir,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifndef G_OS_WIN32
|
||||
#ifndef G_PLATFORM_WIN32
|
||||
|
||||
static gchar*
|
||||
find_parent_dir_fullname (gchar* dirname)
|
||||
@@ -3539,7 +3583,12 @@ attempt_homedir_completion (gchar *text_to_complete,
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(G_OS_WIN32) || defined(G_WITH_CYGWIN)
|
||||
#ifdef G_PLATFORM_WIN32
|
||||
/* FIXME: determine whether we should casefold all Unicode letters
|
||||
* here, too (and in in first_diff_index() walk through the strings with
|
||||
* g_utf8_next_char()), or if this folding isn't actually needed at
|
||||
* all.
|
||||
*/
|
||||
#define FOLD(c) (tolower(c))
|
||||
#else
|
||||
#define FOLD(c) (c)
|
||||
|
||||
@@ -50,8 +50,10 @@ typedef struct _GtkFileSelectionClass GtkFileSelectionClass;
|
||||
|
||||
struct _GtkFileSelection
|
||||
{
|
||||
/*< private >*/
|
||||
GtkDialog parent_instance;
|
||||
|
||||
/*< public >*/
|
||||
GtkWidget *dir_list;
|
||||
GtkWidget *file_list;
|
||||
GtkWidget *selection_entry;
|
||||
@@ -75,6 +77,7 @@ struct _GtkFileSelection
|
||||
GtkWidget *button_area;
|
||||
GtkWidget *action_area;
|
||||
|
||||
/*< private >*/
|
||||
GPtrArray *selected_names;
|
||||
gchar *last_selected;
|
||||
};
|
||||
|
||||
-2454
File diff suppressed because it is too large
Load Diff
@@ -1,151 +0,0 @@
|
||||
/* eggiconlist.h
|
||||
* Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
#ifndef __EGG_ICON_LIST_H__
|
||||
#define __EGG_ICON_LIST_H__
|
||||
|
||||
#include <gtk/gtkcontainer.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define EGG_TYPE_ICON_LIST (egg_icon_list_get_type ())
|
||||
#define EGG_ICON_LIST(obj) (GTK_CHECK_CAST ((obj), EGG_TYPE_ICON_LIST, EggIconList))
|
||||
#define EGG_ICON_LIST_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EGG_TYPE_ICON_LIST, EggIconListClass))
|
||||
#define EGG_IS_ICON_LIST(obj) (GTK_CHECK_TYPE ((obj), EGG_TYPE_ICON_LIST))
|
||||
#define EGG_IS_ICON_LIST_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), EGG_TYPE_ICON_LIST))
|
||||
#define EGG_ICON_LIST_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), EGG_TYPE_ICON_LIST, EggIconListClass))
|
||||
|
||||
#define EGG_TYPE_ICON_LIST_ITEM (egg_icon_list_item_get_type ())
|
||||
|
||||
typedef struct _EggIconList EggIconList;
|
||||
typedef struct _EggIconListClass EggIconListClass;
|
||||
typedef struct _EggIconListPrivate EggIconListPrivate;
|
||||
typedef struct _EggIconListItem EggIconListItem;
|
||||
|
||||
typedef void (* EggIconListForeachFunc) (EggIconList *icon_list,
|
||||
EggIconListItem *item,
|
||||
gpointer data);
|
||||
typedef gint (* EggIconListItemCompareFunc) (EggIconList *icon_list,
|
||||
EggIconListItem *a,
|
||||
EggIconListItem *b,
|
||||
gpointer user_data);
|
||||
|
||||
struct _EggIconList
|
||||
{
|
||||
GtkContainer parent;
|
||||
|
||||
EggIconListPrivate *priv;
|
||||
};
|
||||
|
||||
struct _EggIconListClass
|
||||
{
|
||||
GtkContainerClass parent_class;
|
||||
|
||||
void (* set_scroll_adjustments) (EggIconList *icon_list,
|
||||
GtkAdjustment *hadjustment,
|
||||
GtkAdjustment *vadjustment);
|
||||
|
||||
void (* item_activated) (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void (* selection_changed) (EggIconList *icon_list);
|
||||
void (* item_added) (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void (* item_removed) (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void (* item_changed) (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
/* Key binding signals */
|
||||
void (* select_all) (EggIconList *icon_list);
|
||||
void (* unselect_all) (EggIconList *icon_list);
|
||||
void (* select_cursor_item) (EggIconList *icon_list);
|
||||
void (* toggle_cursor_item) (EggIconList *icon_list);
|
||||
};
|
||||
|
||||
GType egg_icon_list_get_type (void);
|
||||
GType egg_icon_list_item_get_type (void);
|
||||
GtkWidget *egg_icon_list_new (void);
|
||||
|
||||
EggIconListItem * egg_icon_list_item_new (GdkPixbuf *icon,
|
||||
const gchar *label);
|
||||
void egg_icon_list_item_ref (EggIconListItem *item);
|
||||
void egg_icon_list_item_unref (EggIconListItem *item);
|
||||
void egg_icon_list_item_set_data (EggIconListItem *item,
|
||||
gpointer data);
|
||||
void egg_icon_list_item_set_data_full (EggIconListItem *item,
|
||||
gpointer data,
|
||||
GDestroyNotify destroy_notify);
|
||||
gpointer egg_icon_list_item_get_data (EggIconListItem *item);
|
||||
void egg_icon_list_item_set_label (EggIconListItem *item,
|
||||
const char *label);
|
||||
G_CONST_RETURN gchar *egg_icon_list_item_get_label (EggIconListItem *item);
|
||||
void egg_icon_list_item_set_icon (EggIconListItem *item,
|
||||
GdkPixbuf *icon);
|
||||
GdkPixbuf * egg_icon_list_item_get_icon (EggIconListItem *item);
|
||||
void egg_icon_list_append_item (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_prepend_item (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_insert_item_before (EggIconList *icon_list,
|
||||
EggIconListItem *sibling,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_insert_item_after (EggIconList *icon_list,
|
||||
EggIconListItem *sibling,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_remove_item (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_clear (EggIconList *icon_list);
|
||||
EggIconListItem * egg_icon_list_get_item_at_pos (EggIconList *icon_list,
|
||||
gint x,
|
||||
gint y);
|
||||
gint egg_icon_list_get_item_count (EggIconList *icon_list);
|
||||
void egg_icon_list_foreach (EggIconList *icon_list,
|
||||
EggIconListForeachFunc func,
|
||||
gpointer data);
|
||||
GList * egg_icon_list_get_selected (EggIconList *icon_list);
|
||||
void egg_icon_list_selected_foreach (EggIconList *icon_list,
|
||||
EggIconListForeachFunc func,
|
||||
gpointer data);
|
||||
void egg_icon_list_set_selection_mode (EggIconList *icon_list,
|
||||
GtkSelectionMode mode);
|
||||
GtkSelectionMode egg_icon_list_get_selection_mode (EggIconList *icon_list);
|
||||
void egg_icon_list_select_item (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
void egg_icon_list_unselect_item (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
gboolean egg_icon_list_item_is_selected (EggIconListItem *item);
|
||||
void egg_icon_list_select_all (EggIconList *icon_list);
|
||||
void egg_icon_list_unselect_all (EggIconList *icon_list);
|
||||
void egg_icon_list_set_sorted (EggIconList *icon_list,
|
||||
gboolean sorted);
|
||||
gboolean egg_icon_list_get_sorted (EggIconList *icon_list);
|
||||
void egg_icon_list_set_sort_func (EggIconList *icon_list,
|
||||
EggIconListItemCompareFunc func,
|
||||
gpointer data,
|
||||
GDestroyNotify destroy_notify);
|
||||
void egg_icon_list_set_sort_order (EggIconList *icon_list,
|
||||
GtkSortType order);
|
||||
GtkSortType egg_icon_list_get_sort_order (EggIconList *icon_list);
|
||||
void egg_icon_list_item_activated (EggIconList *icon_list,
|
||||
EggIconListItem *item);
|
||||
|
||||
/* For accessibility */
|
||||
GList *egg_icon_list_get_items (EggIconList *icon_list);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __EGG_ICON_LIST_H__ */
|
||||
+37
-10
@@ -74,6 +74,8 @@ static void gtk_list_store_set_column_type (GtkListStore *list_store,
|
||||
|
||||
|
||||
/* Drag and Drop */
|
||||
static gboolean real_gtk_list_store_row_draggable (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path);
|
||||
static gboolean gtk_list_store_drag_data_delete (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path);
|
||||
static gboolean gtk_list_store_drag_data_get (GtkTreeDragSource *drag_source,
|
||||
@@ -228,6 +230,7 @@ gtk_list_store_tree_model_init (GtkTreeModelIface *iface)
|
||||
static void
|
||||
gtk_list_store_drag_source_init (GtkTreeDragSourceIface *iface)
|
||||
{
|
||||
iface->row_draggable = real_gtk_list_store_row_draggable;
|
||||
iface->drag_data_delete = gtk_list_store_drag_data_delete;
|
||||
iface->drag_data_get = gtk_list_store_drag_data_get;
|
||||
}
|
||||
@@ -1400,6 +1403,12 @@ gtk_list_store_iter_is_valid (GtkListStore *list_store,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean real_gtk_list_store_row_draggable (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_list_store_drag_data_delete (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path)
|
||||
@@ -1585,7 +1594,7 @@ gtk_list_store_row_drop_possible (GtkTreeDragDest *drag_dest,
|
||||
&src_model,
|
||||
&src_path))
|
||||
goto out;
|
||||
|
||||
|
||||
if (src_model != GTK_TREE_MODEL (drag_dest))
|
||||
goto out;
|
||||
|
||||
@@ -1761,6 +1770,12 @@ gtk_list_store_swap (GtkListStore *store,
|
||||
G_SLIST (a->user_data)->next = prev_b;
|
||||
G_SLIST (b->user_data)->next = prev_a;
|
||||
|
||||
/* update tail if needed */
|
||||
if (! G_SLIST (a->user_data)->next)
|
||||
store->tail = G_SLIST (a->user_data);
|
||||
else if (! G_SLIST (b->user_data)->next)
|
||||
store->tail = G_SLIST (b->user_data);
|
||||
|
||||
/* emit signal */
|
||||
order = g_new (gint, store->length);
|
||||
for (j = 0; j < store->length; j++)
|
||||
@@ -1867,7 +1882,11 @@ gtk_list_store_move (GtkListStore *store,
|
||||
if (!prev)
|
||||
store->root = G_SLIST (iter->user_data)->next;
|
||||
else
|
||||
prev->next = G_SLIST (iter->user_data)->next;
|
||||
{
|
||||
prev->next = G_SLIST (iter->user_data)->next;
|
||||
if (!prev->next)
|
||||
store->tail = prev;
|
||||
}
|
||||
|
||||
/* and reinsert it */
|
||||
if (a)
|
||||
@@ -1888,9 +1907,12 @@ gtk_list_store_move (GtkListStore *store,
|
||||
{
|
||||
G_SLIST (store->tail)->next = G_SLIST (iter->user_data);
|
||||
G_SLIST (iter->user_data)->next = NULL;
|
||||
store->tail = iter->user_data;
|
||||
}
|
||||
|
||||
/* update tail if needed */
|
||||
if (!G_SLIST (iter->user_data)->next)
|
||||
store->tail = G_SLIST (iter->user_data);
|
||||
|
||||
/* emit signal */
|
||||
if (position)
|
||||
new_pos = gtk_tree_path_get_indices (pos_path)[0];
|
||||
@@ -1901,12 +1923,12 @@ gtk_list_store_move (GtkListStore *store,
|
||||
|
||||
if (new_pos > old_pos)
|
||||
{
|
||||
if (before)
|
||||
if (before && position)
|
||||
new_pos--;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!before)
|
||||
if (!before && position)
|
||||
new_pos++;
|
||||
}
|
||||
|
||||
@@ -2291,7 +2313,7 @@ gtk_list_store_get_sort_column_id (GtkTreeSortable *sortable,
|
||||
|
||||
g_return_val_if_fail (GTK_IS_LIST_STORE (sortable), FALSE);
|
||||
|
||||
if (list_store->sort_column_id == -1)
|
||||
if (list_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
return FALSE;
|
||||
|
||||
if (sort_column_id)
|
||||
@@ -2314,7 +2336,7 @@ gtk_list_store_set_sort_column_id (GtkTreeSortable *sortable,
|
||||
(list_store->order == order))
|
||||
return;
|
||||
|
||||
if (sort_column_id != -1)
|
||||
if (sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
{
|
||||
GtkTreeDataSortHeader *header = NULL;
|
||||
|
||||
@@ -2333,9 +2355,9 @@ gtk_list_store_set_sort_column_id (GtkTreeSortable *sortable,
|
||||
list_store->sort_column_id = sort_column_id;
|
||||
list_store->order = order;
|
||||
|
||||
gtk_list_store_sort (list_store);
|
||||
|
||||
gtk_tree_sortable_sort_column_changed (sortable);
|
||||
|
||||
gtk_list_store_sort (list_store);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2382,8 +2404,10 @@ gtk_list_store_set_sort_func (GtkTreeSortable *sortable,
|
||||
header->func = func;
|
||||
header->data = data;
|
||||
header->destroy = destroy;
|
||||
}
|
||||
|
||||
if (list_store->sort_column_id == sort_column_id)
|
||||
gtk_list_store_sort (list_store);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_list_store_set_default_sort_func (GtkTreeSortable *sortable,
|
||||
@@ -2406,6 +2430,9 @@ gtk_list_store_set_default_sort_func (GtkTreeSortable *sortable,
|
||||
list_store->default_sort_func = func;
|
||||
list_store->default_sort_data = data;
|
||||
list_store->default_sort_destroy = destroy;
|
||||
|
||||
if (list_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
gtk_list_store_sort (list_store);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
||||
+3
-2
@@ -48,6 +48,9 @@
|
||||
|
||||
#include <pango/pango-utils.h> /* For pango_split_file_list */
|
||||
|
||||
#include "config.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
#include "gtkaccelmap.h"
|
||||
#include "gtkbox.h"
|
||||
#include "gtkdnd.h"
|
||||
@@ -59,9 +62,7 @@
|
||||
#include "gtkwidget.h"
|
||||
#include "gtkwindow.h"
|
||||
#include "gtkprivate.h"
|
||||
#include "config.h"
|
||||
#include "gtkdebug.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
/* Private type definitions
|
||||
*/
|
||||
|
||||
+6
-6
@@ -801,13 +801,13 @@ static gboolean
|
||||
gtk_menu_item_mnemonic_activate (GtkWidget *widget,
|
||||
gboolean group_cycling)
|
||||
{
|
||||
if (group_cycling)
|
||||
if (group_cycling &&
|
||||
widget->parent &&
|
||||
GTK_IS_MENU_SHELL (widget->parent) &&
|
||||
GTK_MENU_SHELL (widget->parent)->active)
|
||||
{
|
||||
if (widget->parent &&
|
||||
GTK_IS_MENU_SHELL (widget->parent))
|
||||
gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent),
|
||||
widget);
|
||||
|
||||
gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent),
|
||||
widget);
|
||||
}
|
||||
else
|
||||
g_signal_emit (widget, menu_item_signals[ACTIVATE_ITEM], 0);
|
||||
|
||||
@@ -1070,6 +1070,20 @@ gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell,
|
||||
gtk_menu_shell_select_submenu_first (parent_menu_shell);
|
||||
}
|
||||
}
|
||||
/* If there is no parent and the submenu is in the opposite direction
|
||||
* to the menu, then make the PARENT direction wrap around to
|
||||
* the bottom of the submenu.
|
||||
*/
|
||||
else if (menu_shell->active_menu_item &&
|
||||
_gtk_menu_item_is_selectable (menu_shell->active_menu_item) &&
|
||||
GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu)
|
||||
{
|
||||
GtkMenuShell *submenu = GTK_MENU_SHELL (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu);
|
||||
|
||||
if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement !=
|
||||
GTK_MENU_SHELL_GET_CLASS (submenu)->submenu_placement)
|
||||
_gtk_menu_shell_select_last (submenu, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
case GTK_MENU_DIR_CHILD:
|
||||
|
||||
+35
-11
@@ -1309,9 +1309,14 @@ gtk_notebook_size_allocate (GtkWidget *widget,
|
||||
GdkRectangle position;
|
||||
|
||||
if (gtk_notebook_get_event_window_position (notebook, &position))
|
||||
gdk_window_move_resize (notebook->event_window,
|
||||
position.x, position.y,
|
||||
position.width, position.height);
|
||||
{
|
||||
gdk_window_move_resize (notebook->event_window,
|
||||
position.x, position.y,
|
||||
position.width, position.height);
|
||||
gdk_window_show_unraised (notebook->event_window);
|
||||
}
|
||||
else
|
||||
gdk_window_hide (notebook->event_window);
|
||||
}
|
||||
|
||||
if (notebook->children)
|
||||
@@ -2355,6 +2360,7 @@ gtk_notebook_remove_tab_label (GtkNotebook *notebook,
|
||||
page->mnemonic_activate_signal);
|
||||
page->mnemonic_activate_signal = 0;
|
||||
|
||||
gtk_widget_set_state (page->tab_label, GTK_STATE_NORMAL);
|
||||
gtk_widget_unparent (page->tab_label);
|
||||
}
|
||||
}
|
||||
@@ -2413,10 +2419,6 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
|
||||
|
||||
g_free (page);
|
||||
|
||||
if (!notebook->children && notebook->show_tabs &&
|
||||
GTK_WIDGET_MAPPED (notebook))
|
||||
gdk_window_hide (notebook->event_window);
|
||||
|
||||
gtk_notebook_update_labels (notebook);
|
||||
if (need_resize)
|
||||
gtk_widget_queue_resize (GTK_WIDGET (notebook));
|
||||
@@ -3510,6 +3512,25 @@ gtk_notebook_calc_tabs (GtkNotebook *notebook,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_notebook_update_tab_states (GtkNotebook *notebook)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = notebook->children; list != NULL; list = list->next)
|
||||
{
|
||||
GtkNotebookPage *page = list->data;
|
||||
|
||||
if (page->tab_label)
|
||||
{
|
||||
if (page == notebook->cur_page)
|
||||
gtk_widget_set_state (page->tab_label, GTK_STATE_NORMAL);
|
||||
else
|
||||
gtk_widget_set_state (page->tab_label, GTK_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Private GtkNotebook Page Switch Methods:
|
||||
*
|
||||
* gtk_notebook_real_switch_page
|
||||
@@ -3551,6 +3572,7 @@ gtk_notebook_real_switch_page (GtkNotebook *notebook,
|
||||
gtk_widget_grab_focus (GTK_WIDGET (notebook));
|
||||
}
|
||||
|
||||
gtk_notebook_update_tab_states (notebook);
|
||||
gtk_widget_queue_resize (GTK_WIDGET (notebook));
|
||||
g_object_notify (G_OBJECT (notebook), "page");
|
||||
}
|
||||
@@ -4091,6 +4113,8 @@ gtk_notebook_insert_page_menu (GtkNotebook *notebook,
|
||||
gtk_notebook_switch_focus_tab (notebook, NULL);
|
||||
}
|
||||
|
||||
gtk_notebook_update_tab_states (notebook);
|
||||
|
||||
if (tab_label)
|
||||
page->mnemonic_activate_signal =
|
||||
g_signal_connect (tab_label,
|
||||
@@ -4098,9 +4122,6 @@ gtk_notebook_insert_page_menu (GtkNotebook *notebook,
|
||||
G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page),
|
||||
notebook);
|
||||
|
||||
if (notebook->show_tabs && GTK_WIDGET_MAPPED (notebook))
|
||||
gdk_window_show_unraised (notebook->event_window);
|
||||
|
||||
gtk_widget_child_notify (child, "tab_expand");
|
||||
gtk_widget_child_notify (child, "tab_fill");
|
||||
gtk_widget_child_notify (child, "tab_pack");
|
||||
@@ -4782,6 +4803,8 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook,
|
||||
gtk_widget_show (page->tab_label);
|
||||
gtk_widget_queue_resize (GTK_WIDGET (notebook));
|
||||
}
|
||||
|
||||
gtk_notebook_update_tab_states (notebook);
|
||||
gtk_widget_child_notify (child, "tab_label");
|
||||
}
|
||||
|
||||
@@ -4987,7 +5010,8 @@ gtk_notebook_child_reordered (GtkNotebook *notebook,
|
||||
gtk_container_remove (GTK_CONTAINER (notebook->menu), menu_item);
|
||||
gtk_notebook_menu_item_create (notebook, g_list_find (notebook->children, page));
|
||||
}
|
||||
|
||||
|
||||
gtk_notebook_update_tab_states (notebook);
|
||||
gtk_notebook_update_labels (notebook);
|
||||
}
|
||||
|
||||
|
||||
+18
-10
@@ -74,6 +74,7 @@ static void gtk_settings_notify (GObject *object,
|
||||
static guint settings_install_property_parser (GtkSettingsClass *class,
|
||||
GParamSpec *pspec,
|
||||
GtkRcPropertyParser parser);
|
||||
static void settings_update_double_click_time (GtkSettings *settings);
|
||||
|
||||
|
||||
/* --- variables --- */
|
||||
@@ -289,6 +290,7 @@ gtk_settings_get_for_screen (GdkScreen *screen)
|
||||
settings->screen = screen;
|
||||
g_object_set_data (G_OBJECT (screen), "gtk-settings", settings);
|
||||
gtk_rc_reparse_all_for_settings (settings, TRUE);
|
||||
settings_update_double_click_time (settings);
|
||||
}
|
||||
|
||||
return settings;
|
||||
@@ -402,7 +404,6 @@ gtk_settings_notify (GObject *object,
|
||||
{
|
||||
GtkSettings *settings = GTK_SETTINGS (object);
|
||||
guint property_id = pspec->param_id;
|
||||
gint double_click_time;
|
||||
|
||||
if (settings->screen == NULL) /* initialization */
|
||||
return;
|
||||
@@ -410,15 +411,8 @@ gtk_settings_notify (GObject *object,
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_DOUBLE_CLICK_TIME:
|
||||
{
|
||||
GdkDisplay *display;
|
||||
|
||||
g_object_get (object, pspec->name, &double_click_time, NULL);
|
||||
display = gdk_screen_get_display (settings->screen);
|
||||
if (settings->screen == gdk_display_get_screen (display, 0))
|
||||
gdk_display_set_double_click_time (display, double_click_time);
|
||||
break;
|
||||
}
|
||||
settings_update_double_click_time (settings);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1080,3 +1074,17 @@ _gtk_settings_reset_rc_values (GtkSettings *settings)
|
||||
g_free (pspecs);
|
||||
}
|
||||
|
||||
static void
|
||||
settings_update_double_click_time (GtkSettings *settings)
|
||||
{
|
||||
if (gdk_screen_get_number (settings->screen) == 0)
|
||||
{
|
||||
GdkDisplay *display = gdk_screen_get_display (settings->screen);
|
||||
gint double_click_time;
|
||||
|
||||
g_object_get (G_OBJECT (settings), "gtk-double-click-time",
|
||||
&double_click_time, NULL);
|
||||
|
||||
gdk_display_set_double_click_time (display, double_click_time);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1229,7 +1229,7 @@ gtk_socket_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
|
||||
socket = GTK_SOCKET (data);
|
||||
widget = GTK_WIDGET (socket);
|
||||
xevent = (XEvent *)gdk_xevent;
|
||||
display = gdk_drawable_get_display (event->any.window);
|
||||
display = gtk_widget_get_display (widget);
|
||||
|
||||
return_val = GDK_FILTER_CONTINUE;
|
||||
|
||||
|
||||
+2
-2
@@ -4694,8 +4694,8 @@ apply_affine_on_point (double affine[6], GdkPoint *point)
|
||||
x = point->x * affine[0] + point->y * affine[2] + affine[4];
|
||||
y = point->x * affine[1] + point->y * affine[3] + affine[5];
|
||||
|
||||
point->x = x;
|
||||
point->y = y;
|
||||
point->x = floor (x);
|
||||
point->y = floor (y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -5083,7 +5083,10 @@ _gtk_text_btree_get_iter_at_first_toggle (GtkTextBTree *tree,
|
||||
else
|
||||
{
|
||||
iter_init_from_byte_offset (iter, tree, line, 0);
|
||||
|
||||
if (!gtk_text_iter_toggles_tag (iter, tag))
|
||||
gtk_text_iter_forward_to_tag_toggle (iter, tag);
|
||||
|
||||
check_invariants (iter);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+3
-2
@@ -812,6 +812,7 @@ gtk_text_layout_validate_yrange (GtkTextLayout *layout,
|
||||
/* Validate backwards from the anchor line to y0
|
||||
*/
|
||||
line = _gtk_text_iter_get_text_line (anchor);
|
||||
line = _gtk_text_line_previous (line);
|
||||
seen = 0;
|
||||
while (line && seen < -y0)
|
||||
{
|
||||
@@ -827,11 +828,11 @@ gtk_text_layout_validate_yrange (GtkTextLayout *layout,
|
||||
delta_height += line_data->height - old_height;
|
||||
|
||||
first_line = line;
|
||||
first_line_y = -seen;
|
||||
first_line_y = -seen - line_data->height;
|
||||
if (!last_line)
|
||||
{
|
||||
last_line = line;
|
||||
last_line_y = -seen + line_data->height;
|
||||
last_line_y = -seen;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+54
-37
@@ -2830,8 +2830,6 @@ gtk_text_view_size_allocate (GtkWidget *widget,
|
||||
GtkTextView *text_view;
|
||||
GtkTextIter first_para;
|
||||
gint y;
|
||||
GtkAdjustment *vadj;
|
||||
gboolean yoffset_changed = FALSE;
|
||||
gint width, height;
|
||||
GdkRectangle text_rect;
|
||||
GdkRectangle left_rect;
|
||||
@@ -2957,6 +2955,29 @@ gtk_text_view_size_allocate (GtkWidget *widget,
|
||||
/* Note that this will do some layout validation */
|
||||
gtk_text_view_allocate_children (text_view);
|
||||
|
||||
/* Ensure h/v adj exist */
|
||||
get_hadjustment (text_view);
|
||||
get_vadjustment (text_view);
|
||||
|
||||
text_view->hadjustment->page_size = SCREEN_WIDTH (text_view);
|
||||
text_view->hadjustment->page_increment = SCREEN_WIDTH (text_view) * 0.9;
|
||||
text_view->hadjustment->step_increment = SCREEN_WIDTH (text_view) * 0.1;
|
||||
text_view->hadjustment->lower = 0;
|
||||
text_view->hadjustment->upper = MAX (SCREEN_WIDTH (text_view),
|
||||
text_view->width);
|
||||
|
||||
if (text_view->hadjustment->value > text_view->hadjustment->upper - text_view->hadjustment->page_size)
|
||||
gtk_adjustment_set_value (text_view->hadjustment, MAX (0, text_view->hadjustment->upper - text_view->hadjustment->page_size));
|
||||
|
||||
gtk_adjustment_changed (text_view->hadjustment);
|
||||
|
||||
text_view->vadjustment->page_size = SCREEN_HEIGHT (text_view);
|
||||
text_view->vadjustment->page_increment = SCREEN_HEIGHT (text_view) * 0.9;
|
||||
text_view->vadjustment->step_increment = SCREEN_HEIGHT (text_view) * 0.1;
|
||||
text_view->vadjustment->lower = 0;
|
||||
text_view->vadjustment->upper = MAX (SCREEN_HEIGHT (text_view),
|
||||
text_view->height);
|
||||
|
||||
/* Now adjust the value of the adjustment to keep the cursor at the
|
||||
* same place in the buffer
|
||||
*/
|
||||
@@ -2965,42 +2986,14 @@ gtk_text_view_size_allocate (GtkWidget *widget,
|
||||
|
||||
y += text_view->first_para_pixels;
|
||||
|
||||
/* Ensure h/v adj exist */
|
||||
get_hadjustment (text_view);
|
||||
get_vadjustment (text_view);
|
||||
|
||||
vadj = text_view->vadjustment;
|
||||
if (y > vadj->upper - vadj->page_size)
|
||||
y = MAX (0, vadj->upper - vadj->page_size);
|
||||
if (y > text_view->vadjustment->upper - text_view->vadjustment->page_size)
|
||||
y = MAX (0, text_view->vadjustment->upper - text_view->vadjustment->page_size);
|
||||
|
||||
if (y != text_view->yoffset)
|
||||
{
|
||||
vadj->value = y;
|
||||
yoffset_changed = TRUE;
|
||||
}
|
||||
gtk_adjustment_set_value (text_view->vadjustment, y);
|
||||
|
||||
text_view->hadjustment->page_size = SCREEN_WIDTH (text_view);
|
||||
text_view->hadjustment->page_increment = SCREEN_WIDTH (text_view) * 0.9;
|
||||
text_view->hadjustment->step_increment = SCREEN_WIDTH (text_view) * 0.1;
|
||||
text_view->hadjustment->lower = 0;
|
||||
text_view->hadjustment->upper = MAX (SCREEN_WIDTH (text_view),
|
||||
text_view->width);
|
||||
gtk_adjustment_changed (text_view->hadjustment);
|
||||
|
||||
if (text_view->hadjustment->value > text_view->hadjustment->upper - text_view->hadjustment->page_size)
|
||||
gtk_adjustment_set_value (text_view->hadjustment, MAX (0, text_view->hadjustment->upper - text_view->hadjustment->page_size));
|
||||
|
||||
text_view->vadjustment->page_size = SCREEN_HEIGHT (text_view);
|
||||
text_view->vadjustment->page_increment = SCREEN_HEIGHT (text_view) * 0.9;
|
||||
text_view->vadjustment->step_increment = SCREEN_HEIGHT (text_view) * 0.1;
|
||||
text_view->vadjustment->lower = 0;
|
||||
text_view->vadjustment->upper = MAX (SCREEN_HEIGHT (text_view),
|
||||
text_view->height);
|
||||
gtk_adjustment_changed (text_view->vadjustment);
|
||||
|
||||
if (yoffset_changed)
|
||||
gtk_adjustment_value_changed (vadj);
|
||||
|
||||
/* The GTK resize loop processes all the pending exposes right
|
||||
* after doing the resize stuff, so the idle sizer won't have a
|
||||
* chance to run. So we do the work here.
|
||||
@@ -4560,6 +4553,32 @@ gtk_text_view_move_cursor_internal (GtkTextView *text_view,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!text_view->cursor_visible)
|
||||
{
|
||||
GtkAdjustment *adj;
|
||||
|
||||
switch (step)
|
||||
{
|
||||
case GTK_MOVEMENT_LOGICAL_POSITIONS:
|
||||
case GTK_MOVEMENT_VISUAL_POSITIONS:
|
||||
case GTK_MOVEMENT_WORDS:
|
||||
adj = get_hadjustment (text_view);
|
||||
break;
|
||||
case GTK_MOVEMENT_DISPLAY_LINES:
|
||||
case GTK_MOVEMENT_DISPLAY_LINE_ENDS:
|
||||
case GTK_MOVEMENT_PARAGRAPHS:
|
||||
adj = get_vadjustment (text_view);
|
||||
break;
|
||||
}
|
||||
|
||||
if (count > 0)
|
||||
set_adjustment_clamped (adj, adj->value + adj->step_increment);
|
||||
else
|
||||
set_adjustment_clamped (adj, adj->value - adj->step_increment);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &insert,
|
||||
gtk_text_buffer_get_mark (get_buffer (text_view),
|
||||
"insert"));
|
||||
@@ -4609,6 +4628,8 @@ gtk_text_view_move_cursor_internal (GtkTextView *text_view,
|
||||
gtk_text_iter_forward_to_line_end (&newplace);
|
||||
--count;
|
||||
}
|
||||
gtk_text_iter_forward_lines (&newplace, count);
|
||||
gtk_text_iter_forward_to_line_end (&newplace);
|
||||
}
|
||||
else if (count < 0)
|
||||
{
|
||||
@@ -4617,10 +4638,6 @@ gtk_text_view_move_cursor_internal (GtkTextView *text_view,
|
||||
gtk_text_iter_set_line_offset (&newplace, 0);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
if (count != 0)
|
||||
{
|
||||
gtk_text_iter_forward_lines (&newplace, count);
|
||||
gtk_text_iter_set_line_offset (&newplace, 0);
|
||||
}
|
||||
|
||||
+98
-126
@@ -97,6 +97,7 @@ static gboolean gtk_toolbar_focus (GtkWidget *widget,
|
||||
static void gtk_toolbar_screen_changed (GtkWidget *widget,
|
||||
GdkScreen *previous_screen);
|
||||
static void gtk_toolbar_show_all (GtkWidget *widget);
|
||||
static void gtk_toolbar_hide_all (GtkWidget *widget);
|
||||
static void gtk_toolbar_add (GtkContainer *container,
|
||||
GtkWidget *widget);
|
||||
static void gtk_toolbar_remove (GtkContainer *container,
|
||||
@@ -194,6 +195,7 @@ gtk_toolbar_class_init (GtkToolbarClass *class)
|
||||
widget_class->size_allocate = gtk_toolbar_size_allocate;
|
||||
widget_class->style_set = gtk_toolbar_style_set;
|
||||
widget_class->show_all = gtk_toolbar_show_all;
|
||||
widget_class->hide_all = gtk_toolbar_hide_all;
|
||||
widget_class->focus = gtk_toolbar_focus;
|
||||
widget_class->screen_changed = gtk_toolbar_screen_changed;
|
||||
|
||||
@@ -848,6 +850,26 @@ gtk_toolbar_show_all (GtkWidget *widget)
|
||||
gtk_widget_show (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
child_hide_all (GtkWidget *widget)
|
||||
{
|
||||
/* Don't hide our own children, since that would also hide
|
||||
* widgets that won't be shown again by gtk_toolbar_show_all().
|
||||
*/
|
||||
if (!g_object_get_data (G_OBJECT (widget),
|
||||
"gtk-toolbar-is-child"))
|
||||
gtk_widget_hide_all (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_toolbar_hide_all (GtkWidget *widget)
|
||||
{
|
||||
gtk_container_foreach (GTK_CONTAINER (widget),
|
||||
(GtkCallback) child_hide_all,
|
||||
NULL);
|
||||
gtk_widget_hide (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_toolbar_add (GtkContainer *container,
|
||||
GtkWidget *widget)
|
||||
@@ -1394,6 +1416,44 @@ gtk_toolbar_insert_element (GtkToolbar *toolbar,
|
||||
position);
|
||||
}
|
||||
|
||||
static void
|
||||
set_child_packing_and_visibility(GtkToolbar *toolbar,
|
||||
GtkToolbarChild *child)
|
||||
{
|
||||
GtkWidget *box;
|
||||
gboolean expand;
|
||||
|
||||
box = gtk_bin_get_child (GTK_BIN (child->widget));
|
||||
|
||||
g_return_if_fail (GTK_IS_BOX (box));
|
||||
|
||||
if (child->label)
|
||||
{
|
||||
expand = (toolbar->style != GTK_TOOLBAR_BOTH);
|
||||
|
||||
gtk_box_set_child_packing (GTK_BOX (box), child->label,
|
||||
expand, expand, 0, GTK_PACK_END);
|
||||
|
||||
if (toolbar->style != GTK_TOOLBAR_ICONS)
|
||||
gtk_widget_show (child->label);
|
||||
else
|
||||
gtk_widget_hide (child->label);
|
||||
}
|
||||
|
||||
if (child->icon)
|
||||
{
|
||||
expand = (toolbar->style != GTK_TOOLBAR_BOTH_HORIZ);
|
||||
|
||||
gtk_box_set_child_packing (GTK_BOX (box), child->icon,
|
||||
expand, expand, 0, GTK_PACK_END);
|
||||
|
||||
if (toolbar->style != GTK_TOOLBAR_TEXT)
|
||||
gtk_widget_show (child->icon);
|
||||
else
|
||||
gtk_widget_hide (child->icon);
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
gtk_toolbar_internal_insert_element (GtkToolbar *toolbar,
|
||||
GtkToolbarChildType type,
|
||||
@@ -1478,26 +1538,22 @@ gtk_toolbar_internal_insert_element (GtkToolbar *toolbar,
|
||||
if (text)
|
||||
{
|
||||
child->label = gtk_label_new (text);
|
||||
gtk_box_pack_end (GTK_BOX (box), child->label, FALSE, FALSE, 0);
|
||||
if (toolbar->style != GTK_TOOLBAR_ICONS)
|
||||
gtk_widget_show (child->label);
|
||||
gtk_container_add (GTK_CONTAINER (box), child->label);
|
||||
}
|
||||
|
||||
if (icon)
|
||||
{
|
||||
child->icon = GTK_WIDGET (icon);
|
||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
||||
if (toolbar->style != GTK_TOOLBAR_TEXT)
|
||||
gtk_widget_show (child->icon);
|
||||
gtk_container_add (GTK_CONTAINER (box), child->icon);
|
||||
}
|
||||
|
||||
if (type != GTK_TOOLBAR_CHILD_WIDGET)
|
||||
{
|
||||
/* Mark child as ours */
|
||||
g_object_set_data (G_OBJECT (child->widget),
|
||||
"gtk-toolbar-is-child",
|
||||
GINT_TO_POINTER (TRUE));
|
||||
}
|
||||
set_child_packing_and_visibility (toolbar, child);
|
||||
|
||||
/* Mark child as ours */
|
||||
g_object_set_data (G_OBJECT (child->widget),
|
||||
"gtk-toolbar-is-child",
|
||||
GINT_TO_POINTER (TRUE));
|
||||
|
||||
gtk_widget_show (child->widget);
|
||||
break;
|
||||
|
||||
@@ -1669,23 +1725,13 @@ gtk_real_toolbar_orientation_changed (GtkToolbar *toolbar,
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_first_child (GtkContainer *container)
|
||||
{
|
||||
GList *children = gtk_container_get_children (container);
|
||||
GtkWidget *result = children ? children->data : NULL;
|
||||
g_list_free (children);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_real_toolbar_style_changed (GtkToolbar *toolbar,
|
||||
GtkToolbarStyle style)
|
||||
{
|
||||
GList *children;
|
||||
GtkToolbarChild *child;
|
||||
GtkWidget* box = NULL;
|
||||
GtkWidget* box;
|
||||
|
||||
g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
|
||||
|
||||
@@ -1700,118 +1746,44 @@ gtk_real_toolbar_style_changed (GtkToolbar *toolbar,
|
||||
if (child->type == GTK_TOOLBAR_CHILD_BUTTON ||
|
||||
child->type == GTK_TOOLBAR_CHILD_RADIOBUTTON ||
|
||||
child->type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
|
||||
switch (style)
|
||||
{
|
||||
case GTK_TOOLBAR_ICONS:
|
||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
||||
gtk_widget_show (child->icon);
|
||||
{
|
||||
box = gtk_bin_get_child (GTK_BIN (child->widget));
|
||||
|
||||
if (child->label && GTK_WIDGET_VISIBLE (child->label))
|
||||
gtk_widget_hide (child->label);
|
||||
if (style == GTK_TOOLBAR_BOTH && GTK_IS_HBOX (box))
|
||||
{
|
||||
GtkWidget *vbox;
|
||||
|
||||
break;
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
|
||||
case GTK_TOOLBAR_TEXT:
|
||||
if (child->icon && GTK_WIDGET_VISIBLE (child->icon))
|
||||
gtk_widget_hide (child->icon);
|
||||
|
||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
||||
gtk_widget_show (child->label);
|
||||
if (child->label)
|
||||
gtk_widget_reparent (child->label, vbox);
|
||||
if (child->icon)
|
||||
gtk_widget_reparent (child->icon, vbox);
|
||||
|
||||
break;
|
||||
gtk_widget_destroy (box);
|
||||
gtk_container_add (GTK_CONTAINER (child->widget), vbox);
|
||||
|
||||
case GTK_TOOLBAR_BOTH:
|
||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
||||
gtk_widget_show (child->icon);
|
||||
gtk_widget_show (vbox);
|
||||
}
|
||||
else if (style == GTK_TOOLBAR_BOTH_HORIZ && GTK_IS_VBOX (box))
|
||||
{
|
||||
GtkWidget *hbox;
|
||||
|
||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
||||
gtk_widget_show (child->label);
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
|
||||
box = get_first_child (GTK_CONTAINER (child->widget));
|
||||
if (child->label)
|
||||
gtk_widget_reparent (child->label, hbox);
|
||||
if (child->icon)
|
||||
gtk_widget_reparent (child->icon, hbox);
|
||||
|
||||
if (GTK_IS_HBOX (box))
|
||||
{
|
||||
if (child->icon)
|
||||
{
|
||||
g_object_ref (child->icon);
|
||||
gtk_container_remove (GTK_CONTAINER (box),
|
||||
child->icon);
|
||||
}
|
||||
if (child->label)
|
||||
{
|
||||
g_object_ref (child->label);
|
||||
gtk_container_remove (GTK_CONTAINER (box),
|
||||
child->label);
|
||||
}
|
||||
gtk_container_remove (GTK_CONTAINER (child->widget),
|
||||
box);
|
||||
|
||||
box = gtk_vbox_new (FALSE, 0);
|
||||
gtk_widget_show (box);
|
||||
|
||||
if (child->label)
|
||||
{
|
||||
gtk_box_pack_end (GTK_BOX (box), child->label, FALSE, FALSE, 0);
|
||||
g_object_unref (child->label);
|
||||
}
|
||||
if (child->icon)
|
||||
{
|
||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
||||
g_object_unref (child->icon);
|
||||
}
|
||||
gtk_container_add (GTK_CONTAINER (child->widget),
|
||||
box);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case GTK_TOOLBAR_BOTH_HORIZ:
|
||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
||||
gtk_widget_show (child->icon);
|
||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
||||
gtk_widget_show (child->label);
|
||||
gtk_widget_destroy (box);
|
||||
gtk_container_add (GTK_CONTAINER (child->widget), hbox);
|
||||
|
||||
box = get_first_child (GTK_CONTAINER (child->widget));
|
||||
|
||||
if (GTK_IS_VBOX (box))
|
||||
{
|
||||
if (child->icon)
|
||||
{
|
||||
g_object_ref (child->icon);
|
||||
gtk_container_remove (GTK_CONTAINER (box),
|
||||
child->icon);
|
||||
}
|
||||
if (child->label)
|
||||
{
|
||||
g_object_ref (child->label);
|
||||
gtk_container_remove (GTK_CONTAINER (box),
|
||||
child->label);
|
||||
}
|
||||
gtk_container_remove (GTK_CONTAINER (child->widget),
|
||||
box);
|
||||
gtk_widget_show (hbox);
|
||||
}
|
||||
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
gtk_widget_show (box);
|
||||
|
||||
if (child->label)
|
||||
{
|
||||
gtk_box_pack_end (GTK_BOX (box), child->label, TRUE, TRUE, 0);
|
||||
g_object_unref (child->label);
|
||||
}
|
||||
if (child->icon)
|
||||
{
|
||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
||||
g_object_unref (child->icon);
|
||||
}
|
||||
gtk_container_add (GTK_CONTAINER (child->widget), box);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
set_child_packing_and_visibility (toolbar, child);
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (toolbar));
|
||||
|
||||
@@ -97,6 +97,9 @@ gtk_tree_drag_source_row_draggable (GtkTreeDragSource *drag_source,
|
||||
return (* iface->row_draggable) (drag_source, path);
|
||||
else
|
||||
return TRUE;
|
||||
/* Returning TRUE if row_draggable is not implemented is a fallback.
|
||||
Interface implementations such as GtkTreeStore and GtkListStore really should
|
||||
implement row_draggable. */
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1318,9 +1318,9 @@ gtk_tree_model_sort_set_sort_column_id (GtkTreeSortable *sortable,
|
||||
tree_model_sort->sort_column_id = sort_column_id;
|
||||
tree_model_sort->order = order;
|
||||
|
||||
gtk_tree_model_sort_sort (tree_model_sort);
|
||||
|
||||
gtk_tree_sortable_sort_column_changed (sortable);
|
||||
|
||||
gtk_tree_model_sort_sort (tree_model_sort);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1368,6 +1368,9 @@ gtk_tree_model_sort_set_sort_func (GtkTreeSortable *sortable,
|
||||
header->func = func;
|
||||
header->data = data;
|
||||
header->destroy = destroy;
|
||||
|
||||
if (tree_model_sort->sort_column_id == sort_column_id)
|
||||
gtk_tree_model_sort_sort (tree_model_sort);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1391,6 +1394,9 @@ gtk_tree_model_sort_set_default_sort_func (GtkTreeSortable *sortable,
|
||||
tree_model_sort->default_sort_func = func;
|
||||
tree_model_sort->default_sort_data = data;
|
||||
tree_model_sort->default_sort_destroy = destroy;
|
||||
|
||||
if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
gtk_tree_model_sort_sort (tree_model_sort);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
||||
@@ -1165,7 +1165,7 @@ gtk_tree_selection_real_modify_range (GtkTreeSelection *selection,
|
||||
start_path,
|
||||
&end_tree,
|
||||
&end_node);
|
||||
anchor_path = end_path;
|
||||
anchor_path = start_path;
|
||||
break;
|
||||
case 0:
|
||||
_gtk_tree_view_find_node (selection->tree_view,
|
||||
|
||||
+34
-15
@@ -74,6 +74,8 @@ static void gtk_tree_store_set_column_type (GtkTreeStore *tree_store,
|
||||
|
||||
|
||||
/* DND interfaces */
|
||||
static gboolean real_gtk_tree_store_row_draggable (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path);
|
||||
static gboolean gtk_tree_store_drag_data_delete (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path);
|
||||
static gboolean gtk_tree_store_drag_data_get (GtkTreeDragSource *drag_source,
|
||||
@@ -231,6 +233,7 @@ gtk_tree_store_tree_model_init (GtkTreeModelIface *iface)
|
||||
static void
|
||||
gtk_tree_store_drag_source_init (GtkTreeDragSourceIface *iface)
|
||||
{
|
||||
iface->row_draggable = real_gtk_tree_store_row_draggable;
|
||||
iface->drag_data_delete = gtk_tree_store_drag_data_delete;
|
||||
iface->drag_data_get = gtk_tree_store_drag_data_get;
|
||||
}
|
||||
@@ -1561,6 +1564,12 @@ gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store,
|
||||
/* DND */
|
||||
|
||||
|
||||
static gboolean real_gtk_tree_store_row_draggable (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_tree_store_drag_data_delete (GtkTreeDragSource *drag_source,
|
||||
GtkTreePath *path)
|
||||
@@ -2104,7 +2113,7 @@ gtk_tree_store_swap (GtkTreeStore *tree_store,
|
||||
g_free (order);
|
||||
}
|
||||
|
||||
/* WARNING: this function is *incredibly* fragily. Please smashtest after
|
||||
/* WARNING: this function is *incredibly* fragile. Please smashtest after
|
||||
* making changes here.
|
||||
* -Kris
|
||||
*/
|
||||
@@ -2328,6 +2337,8 @@ gtk_tree_store_move (GtkTreeStore *tree_store,
|
||||
/* after with sibling = NULL prepends */
|
||||
g_node_insert_after (parent, NULL, node);
|
||||
}
|
||||
|
||||
handle_b = FALSE;
|
||||
}
|
||||
|
||||
if (handle_b)
|
||||
@@ -2394,13 +2405,13 @@ gtk_tree_store_move (GtkTreeStore *tree_store,
|
||||
order[i] = i;
|
||||
}
|
||||
|
||||
path = gtk_tree_path_new ();
|
||||
gtk_tree_model_rows_reordered (GTK_TREE_MODEL (tree_store),
|
||||
path, NULL, order);
|
||||
if (depth)
|
||||
path = gtk_tree_model_get_path (GTK_TREE_MODEL (tree_store), &parent_iter);
|
||||
else
|
||||
path = gtk_tree_path_new ();
|
||||
|
||||
for (i = 0; i < length; i++)
|
||||
g_print ("%2d ", order[i]);
|
||||
g_print ("\n");
|
||||
gtk_tree_model_rows_reordered (GTK_TREE_MODEL (tree_store),
|
||||
path, &parent_iter, order);
|
||||
|
||||
gtk_tree_path_free (path);
|
||||
if (position)
|
||||
@@ -2527,7 +2538,12 @@ gtk_tree_store_sort_helper (GtkTreeStore *tree_store,
|
||||
|
||||
node = parent->children;
|
||||
if (node == NULL || node->next == NULL)
|
||||
return;
|
||||
{
|
||||
if (recurse && node && node->children)
|
||||
gtk_tree_store_sort_helper (tree_store, node, TRUE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
g_assert (GTK_TREE_STORE_IS_SORTED (tree_store));
|
||||
|
||||
@@ -2806,7 +2822,7 @@ gtk_tree_store_get_sort_column_id (GtkTreeSortable *sortable,
|
||||
|
||||
g_return_val_if_fail (GTK_IS_TREE_STORE (sortable), FALSE);
|
||||
|
||||
if (tree_store->sort_column_id == -1)
|
||||
if (tree_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
return FALSE;
|
||||
|
||||
if (sort_column_id)
|
||||
@@ -2831,7 +2847,7 @@ gtk_tree_store_set_sort_column_id (GtkTreeSortable *sortable,
|
||||
(tree_store->order == order))
|
||||
return;
|
||||
|
||||
if (sort_column_id != -1)
|
||||
if (sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
{
|
||||
GtkTreeDataSortHeader *header = NULL;
|
||||
|
||||
@@ -2849,9 +2865,9 @@ gtk_tree_store_set_sort_column_id (GtkTreeSortable *sortable,
|
||||
tree_store->sort_column_id = sort_column_id;
|
||||
tree_store->order = order;
|
||||
|
||||
gtk_tree_store_sort (tree_store);
|
||||
|
||||
gtk_tree_sortable_sort_column_changed (sortable);
|
||||
|
||||
gtk_tree_store_sort (tree_store);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2898,6 +2914,9 @@ gtk_tree_store_set_sort_func (GtkTreeSortable *sortable,
|
||||
header->func = func;
|
||||
header->data = data;
|
||||
header->destroy = destroy;
|
||||
|
||||
if (tree_store->sort_column_id == sort_column_id)
|
||||
gtk_tree_store_sort (tree_store);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2921,6 +2940,9 @@ gtk_tree_store_set_default_sort_func (GtkTreeSortable *sortable,
|
||||
tree_store->default_sort_func = func;
|
||||
tree_store->default_sort_data = data;
|
||||
tree_store->default_sort_destroy = destroy;
|
||||
|
||||
if (tree_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)
|
||||
gtk_tree_store_sort (tree_store);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -2948,6 +2970,3 @@ validate_gnode (GNode* node)
|
||||
iter = iter->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+109
-43
@@ -348,6 +348,8 @@ static void gtk_tree_view_real_set_cursor (GtkTreeView
|
||||
gboolean clamp_node);
|
||||
static gboolean gtk_tree_view_has_special_cell (GtkTreeView *tree_view);
|
||||
|
||||
static gboolean expand_collapse_timeout (gpointer data);
|
||||
|
||||
/* interactive search */
|
||||
static void gtk_tree_view_search_dialog_destroy (GtkWidget *search_dialog,
|
||||
GtkTreeView *tree_view);
|
||||
@@ -1548,6 +1550,54 @@ gtk_tree_view_size_request (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
invalidate_column (GtkTreeView *tree_view,
|
||||
GtkTreeViewColumn *column)
|
||||
{
|
||||
gint column_offset = 0;
|
||||
GList *list;
|
||||
GtkWidget *widget = GTK_WIDGET (tree_view);
|
||||
|
||||
if (!GTK_WIDGET_REALIZED (widget))
|
||||
return;
|
||||
|
||||
for (list = tree_view->priv->columns; list; list = list->next)
|
||||
{
|
||||
GtkTreeViewColumn *tmpcolumn = list->data;
|
||||
if (tmpcolumn == column)
|
||||
{
|
||||
GdkRectangle invalid_rect;
|
||||
|
||||
invalid_rect.x = column_offset;
|
||||
invalid_rect.y = 0;
|
||||
invalid_rect.width = column->width;
|
||||
invalid_rect.height = widget->allocation.height;
|
||||
|
||||
gdk_window_invalidate_rect (widget->window, &invalid_rect, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
column_offset += tmpcolumn->width;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
invalidate_last_column (GtkTreeView *tree_view)
|
||||
{
|
||||
GList *last_column;
|
||||
|
||||
for (last_column = g_list_last (tree_view->priv->columns);
|
||||
last_column; last_column = last_column->prev)
|
||||
{
|
||||
if (GTK_TREE_VIEW_COLUMN (last_column->data)->visible)
|
||||
{
|
||||
invalidate_column (tree_view, last_column->data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* GtkWidget::size_allocate helper */
|
||||
static void
|
||||
gtk_tree_view_size_allocate_columns (GtkWidget *widget)
|
||||
@@ -1573,7 +1623,11 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget)
|
||||
for (list = tree_view->priv->columns; list != last_column->next; list = list->next)
|
||||
{
|
||||
gint real_requested_width = 0;
|
||||
gint old_width;
|
||||
|
||||
column = list->data;
|
||||
old_width = column->width;
|
||||
|
||||
if (!column->visible)
|
||||
continue;
|
||||
|
||||
@@ -1619,15 +1673,23 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget)
|
||||
|
||||
allocation.x = width;
|
||||
column->width = real_requested_width;
|
||||
|
||||
if (list == last_column &&
|
||||
width + real_requested_width < widget->allocation.width)
|
||||
{
|
||||
column->width += (widget->allocation.width - column->width - width);
|
||||
}
|
||||
|
||||
g_object_notify (G_OBJECT (column), "width");
|
||||
|
||||
allocation.width = column->width;
|
||||
width += column->width;
|
||||
|
||||
if (column->width > old_width)
|
||||
invalidate_column (tree_view, column);
|
||||
|
||||
gtk_widget_size_allocate (column->button, &allocation);
|
||||
|
||||
if (column->window)
|
||||
gdk_window_move_resize (column->window,
|
||||
allocation.x + allocation.width - TREE_VIEW_DRAG_WIDTH/2,
|
||||
@@ -1636,38 +1698,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
invalidate_last_column (GtkTreeView *tree_view)
|
||||
{
|
||||
GList *list, *last_column;
|
||||
gint last_column_x;
|
||||
GtkWidget *widget = GTK_WIDGET (tree_view);
|
||||
|
||||
for (last_column = g_list_last (tree_view->priv->columns);
|
||||
last_column && !(GTK_TREE_VIEW_COLUMN (last_column->data)->visible);
|
||||
last_column = last_column->prev)
|
||||
;
|
||||
|
||||
last_column_x = 0;
|
||||
for (list = tree_view->priv->columns; list; list = list->next)
|
||||
{
|
||||
GtkTreeViewColumn *column = list->data;
|
||||
if (list == last_column)
|
||||
{
|
||||
GdkRectangle invalid_rect;
|
||||
|
||||
invalid_rect.x = last_column_x;
|
||||
invalid_rect.y = 0;
|
||||
invalid_rect.width = column->width;
|
||||
invalid_rect.height = widget->allocation.height;
|
||||
|
||||
gdk_window_invalidate_rect (widget->window, &invalid_rect, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
last_column_x += column->width;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tree_view_size_allocate (GtkWidget *widget,
|
||||
@@ -1876,6 +1906,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
tree_view->priv->focus_column = column;
|
||||
|
||||
/* decide if we edit */
|
||||
if (event->type == GDK_BUTTON_PRESS &&
|
||||
!(event->state & gtk_accelerator_get_default_mod_mask ()))
|
||||
@@ -1947,7 +1979,6 @@ gtk_tree_view_button_press (GtkWidget *widget,
|
||||
/* select */
|
||||
pre_val = tree_view->priv->vadjustment->value;
|
||||
|
||||
tree_view->priv->focus_column = column;
|
||||
focus_cell = _gtk_tree_view_column_get_cell_at_pos (column, event->x - background_area.x);
|
||||
if (focus_cell)
|
||||
gtk_tree_view_column_focus_cell (column, focus_cell);
|
||||
@@ -3907,6 +3938,7 @@ validate_visible_area (GtkTreeView *tree_view)
|
||||
else
|
||||
{
|
||||
/* row not visible */
|
||||
|
||||
if (dy >= 0 && dy <= tree_view->priv->vadjustment->page_size)
|
||||
{
|
||||
/* row at the beginning -- fixed */
|
||||
@@ -3930,7 +3962,7 @@ validate_visible_area (GtkTreeView *tree_view)
|
||||
* of the view
|
||||
*/
|
||||
area_above = 0;
|
||||
area_above = total_height - height;
|
||||
area_below = total_height - height;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4097,6 +4129,7 @@ validate_visible_area (GtkTreeView *tree_view)
|
||||
/* We temporarily guess a size, under the assumption that it will be the
|
||||
* same when we get our next size_allocate. If we don't do this, we'll be
|
||||
* in an inconsistent state if we call top_row_to_dy. */
|
||||
gtk_widget_size_request (GTK_WIDGET (tree_view), &requisition);
|
||||
tree_view->priv->hadjustment->upper = MAX (tree_view->priv->hadjustment->upper, (gfloat)requisition.width);
|
||||
tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->upper, (gfloat)requisition.height);
|
||||
gtk_adjustment_changed (tree_view->priv->hadjustment);
|
||||
@@ -4128,11 +4161,13 @@ validate_visible_area (GtkTreeView *tree_view)
|
||||
{
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
gtk_adjustment_set_value (tree_view->priv->vadjustment, dy);
|
||||
need_redraw = TRUE;
|
||||
}
|
||||
|
||||
if (tree_view->priv->scroll_to_path)
|
||||
if (tree_view->priv->scroll_to_path &&
|
||||
! GTK_RBNODE_FLAG_SET (tree_view->priv->tree->root, GTK_RBNODE_DESCENDANTS_INVALID))
|
||||
{
|
||||
gtk_tree_row_reference_free (tree_view->priv->scroll_to_path);
|
||||
tree_view->priv->scroll_to_path = NULL;
|
||||
@@ -5720,6 +5755,12 @@ gtk_tree_view_style_set (GtkWidget *widget,
|
||||
|
||||
tree_view = GTK_TREE_VIEW (widget);
|
||||
|
||||
if (GTK_WIDGET_REALIZED (widget))
|
||||
{
|
||||
gdk_window_set_background (widget->window, &widget->style->base[widget->state]);
|
||||
gdk_window_set_background (tree_view->priv->bin_window, &widget->style->base[widget->state]);
|
||||
}
|
||||
|
||||
gtk_widget_style_get (widget,
|
||||
"expander_size", &tree_view->priv->expander_size,
|
||||
NULL);
|
||||
@@ -6252,6 +6293,13 @@ gtk_tree_view_row_deleted (GtkTreeModel *model,
|
||||
g_signal_emit_by_name (tree_view->priv->selection, "changed");
|
||||
}
|
||||
|
||||
static void
|
||||
cancel_arrow_animation (GtkTreeView *tree_view)
|
||||
{
|
||||
if (tree_view->priv->expand_collapse_timeout)
|
||||
while (expand_collapse_timeout (tree_view));
|
||||
tree_view->priv->expand_collapse_timeout = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tree_view_rows_reordered (GtkTreeModel *model,
|
||||
@@ -6292,6 +6340,9 @@ gtk_tree_view_rows_reordered (GtkTreeModel *model,
|
||||
|
||||
/* we need to be unprelighted */
|
||||
ensure_unprelighted (tree_view);
|
||||
|
||||
/* clear the timeout */
|
||||
cancel_arrow_animation (tree_view);
|
||||
|
||||
_gtk_rbtree_reorder (tree, new_order, len);
|
||||
|
||||
@@ -6567,8 +6618,6 @@ gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view,
|
||||
{
|
||||
GtkTreePath *path = NULL;
|
||||
|
||||
/* We process updates because we want to clear old selected items when we scroll.
|
||||
* if this is removed, we get a "selection streak" at the bottom. */
|
||||
if (!GTK_WIDGET_REALIZED (tree_view))
|
||||
return;
|
||||
|
||||
@@ -6576,6 +6625,9 @@ gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view,
|
||||
|
||||
if (path)
|
||||
{
|
||||
/* We process updates because we want to clear old selected items when we scroll.
|
||||
* if this is removed, we get a "selection streak" at the bottom. */
|
||||
gdk_window_process_updates (tree_view->priv->bin_window, TRUE);
|
||||
gtk_tree_view_scroll_to_cell (tree_view, path, NULL, FALSE, 0.0, 0.0);
|
||||
gtk_tree_path_free (path);
|
||||
}
|
||||
@@ -7786,8 +7838,6 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment,
|
||||
/* update our dy and top_row */
|
||||
tree_view->priv->dy = (int) tree_view->priv->vadjustment->value;
|
||||
gtk_tree_view_dy_to_top_row (tree_view);
|
||||
gdk_window_process_updates (tree_view->priv->bin_window, TRUE);
|
||||
gdk_window_process_updates (tree_view->priv->header_window, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7920,18 +7970,20 @@ gtk_tree_view_set_model (GtkTreeView *tree_view,
|
||||
GtkTreePath *path;
|
||||
GtkTreeIter iter;
|
||||
|
||||
|
||||
if (tree_view->priv->search_column == -1)
|
||||
{
|
||||
for (i = 0; i < gtk_tree_model_get_n_columns (model); i++)
|
||||
{
|
||||
if (gtk_tree_model_get_column_type (model, i) == G_TYPE_STRING)
|
||||
GType type = gtk_tree_model_get_column_type (model, i);
|
||||
|
||||
if (g_value_type_transformable (type, G_TYPE_STRING))
|
||||
{
|
||||
tree_view->priv->search_column = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_object_ref (tree_view->priv->model);
|
||||
g_signal_connect (tree_view->priv->model,
|
||||
"row_changed",
|
||||
@@ -9579,6 +9631,7 @@ gtk_tree_view_real_set_cursor (GtkTreeView *tree_view,
|
||||
_gtk_tree_selection_internal_select_node (tree_view->priv->selection,
|
||||
node, tree, path,
|
||||
state, FALSE);
|
||||
|
||||
if (clamp_node)
|
||||
{
|
||||
gtk_tree_view_clamp_node_visible (tree_view, tree, node);
|
||||
@@ -10816,10 +10869,22 @@ gtk_tree_view_search_equal_func (GtkTreeModel *model,
|
||||
gchar *case_normalized_string;
|
||||
gchar *case_normalized_key;
|
||||
GValue value = {0,};
|
||||
GValue transformed = {0,};
|
||||
gint key_len;
|
||||
|
||||
gtk_tree_model_get_value (model, iter, column, &value);
|
||||
normalized_string = g_utf8_normalize (g_value_get_string (&value), -1, G_NORMALIZE_ALL);
|
||||
|
||||
g_value_init (&transformed, G_TYPE_STRING);
|
||||
|
||||
if (!g_value_transform (&value, &transformed))
|
||||
{
|
||||
g_value_unset (&value);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_value_unset (&value);
|
||||
|
||||
normalized_string = g_utf8_normalize (g_value_get_string (&transformed), -1, G_NORMALIZE_ALL);
|
||||
normalized_key = g_utf8_normalize (key, -1, G_NORMALIZE_ALL);
|
||||
case_normalized_string = g_utf8_casefold (normalized_string, -1);
|
||||
case_normalized_key = g_utf8_casefold (normalized_key, -1);
|
||||
@@ -10829,7 +10894,7 @@ gtk_tree_view_search_equal_func (GtkTreeModel *model,
|
||||
if (!strncmp (case_normalized_key, case_normalized_string, key_len))
|
||||
retval = FALSE;
|
||||
|
||||
g_value_unset (&value);
|
||||
g_value_unset (&transformed);
|
||||
g_free (normalized_key);
|
||||
g_free (normalized_string);
|
||||
g_free (case_normalized_key);
|
||||
@@ -11051,6 +11116,7 @@ gtk_tree_view_start_editing (GtkTreeView *tree_view,
|
||||
cursor_path,
|
||||
tree_view->priv->focus_column,
|
||||
&cell_area);
|
||||
|
||||
if (_gtk_tree_view_column_cell_event (tree_view->priv->focus_column,
|
||||
&editable_widget,
|
||||
NULL,
|
||||
|
||||
+16
-8
@@ -1103,8 +1103,9 @@ _gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column)
|
||||
{
|
||||
GtkTreeViewColumnCellInfo *cellinfo = list->data;
|
||||
|
||||
if (cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_EDITABLE ||
|
||||
cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE)
|
||||
if ((cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_EDITABLE ||
|
||||
cellinfo->cell->mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) &&
|
||||
cellinfo->cell->visible)
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -2109,7 +2110,7 @@ gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column,
|
||||
gint sort_column_id)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
|
||||
g_return_if_fail (sort_column_id >= 0);
|
||||
g_return_if_fail (sort_column_id >= -1);
|
||||
|
||||
if (tree_column->sort_column_id == sort_column_id)
|
||||
return;
|
||||
@@ -2119,6 +2120,8 @@ gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column,
|
||||
/* Handle unsetting the id */
|
||||
if (sort_column_id == -1)
|
||||
{
|
||||
GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_column->tree_view));
|
||||
|
||||
if (tree_column->sort_clicked_signal)
|
||||
{
|
||||
g_signal_handler_disconnect (tree_column, tree_column->sort_clicked_signal);
|
||||
@@ -2127,12 +2130,13 @@ gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column,
|
||||
|
||||
if (tree_column->sort_column_changed_signal)
|
||||
{
|
||||
g_signal_handler_disconnect (tree_column, tree_column->sort_column_changed_signal);
|
||||
g_signal_handler_disconnect (model, tree_column->sort_column_changed_signal);
|
||||
tree_column->sort_column_changed_signal = 0;
|
||||
}
|
||||
|
||||
gtk_tree_view_column_set_sort_order (tree_column, GTK_SORT_ASCENDING);
|
||||
gtk_tree_view_column_set_sort_indicator (tree_column, FALSE);
|
||||
gtk_tree_view_column_set_clickable (tree_column, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2465,7 +2469,7 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column,
|
||||
full_requested_width += info->requested_width;
|
||||
}
|
||||
|
||||
extra_space = background_area->width - full_requested_width;
|
||||
extra_space = background_area->width - full_requested_width - dx;
|
||||
if (extra_space < 0)
|
||||
extra_space = 0;
|
||||
else if (extra_space > 0 && expand_cell_count > 0)
|
||||
@@ -3253,7 +3257,8 @@ _gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column,
|
||||
if (info->cell == cell)
|
||||
break;
|
||||
|
||||
*left += info->real_width;
|
||||
if (info->cell->visible)
|
||||
*left += info->real_width;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3283,7 +3288,8 @@ _gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column,
|
||||
GtkTreeViewColumnCellInfo *info =
|
||||
(GtkTreeViewColumnCellInfo *)list->data;
|
||||
|
||||
*right += info->real_width;
|
||||
if (info->cell->visible)
|
||||
*right += info->real_width;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3309,7 +3315,9 @@ gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column,
|
||||
found_cell = TRUE;
|
||||
break;
|
||||
}
|
||||
current_x += cellinfo->real_width;
|
||||
|
||||
if (cellinfo->cell->visible)
|
||||
current_x += cellinfo->real_width;
|
||||
}
|
||||
|
||||
if (found_cell)
|
||||
|
||||
+1
-1
@@ -1520,7 +1520,7 @@ gtk_window_activate_focus (GtkWindow *window)
|
||||
* is not focused then <literal>GTK_WIDGET_HAS_FOCUS (widget)</literal> will
|
||||
* not be %TRUE for the widget.
|
||||
*
|
||||
* Return value: the currently focused widget.
|
||||
* Return value: the currently focused widget, or %NULL if there is none.
|
||||
**/
|
||||
GtkWidget *
|
||||
gtk_window_get_focus (GtkWindow *window)
|
||||
|
||||
@@ -1,477 +0,0 @@
|
||||
####
|
||||
#### Out of order! Use autoconfiscation.
|
||||
####
|
||||
|
||||
## Makefile for building the GTK DLL with gcc on Win32
|
||||
## Use: make -f makefile.mingw
|
||||
|
||||
## There is no install target, you have to decide where and
|
||||
## how to install for yourself.
|
||||
|
||||
OPTIMIZE = -g
|
||||
|
||||
TOP = ../..
|
||||
|
||||
include ../build/win32/make.mingw
|
||||
|
||||
################################################################
|
||||
|
||||
# Possibly override versions from build/win32/module.defs
|
||||
GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@
|
||||
GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@
|
||||
|
||||
GDK_LIBS = -L ../gdk -lgdk-win32-$(GTK_VER)
|
||||
GTK_LIBS = -L . -lgtk-win32-$(GTK_VER)
|
||||
GDK_PIXBUF_LIBS = -L ../gdk-pixbuf -lgdk_pixbuf-$(GDK_PIXBUF_VER)
|
||||
|
||||
# Perl and awk are needed to generate some source files.
|
||||
# These generated source files are distributed with the Win32 GTk+ source
|
||||
# distributions, so don't worry if you don't have perl and awk.
|
||||
PERL = perl
|
||||
AWK = awk
|
||||
|
||||
INCLUDES = -I . -I .. -I ../gdk -I ../gdk-pixbuf
|
||||
DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) $(INTL_CFLAGS)
|
||||
DEFINES = -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" -DGTK_VERSION=\"@GTK_VERSION@\"
|
||||
|
||||
GLIB_GENMARSHAL = $(GLIB)/gobject/glib-genmarshal.exe
|
||||
|
||||
all : \
|
||||
../config.h \
|
||||
generated \
|
||||
gtk-win32-$(GTK_VER).dll\
|
||||
testcalendar.exe \
|
||||
testdnd.exe \
|
||||
testgtk.exe \
|
||||
testinput.exe \
|
||||
testrgb.exe \
|
||||
testselection.exe \
|
||||
testtext.exe \
|
||||
testtextbuffer.exe \
|
||||
simple.exe
|
||||
|
||||
gtk_OBJECTS = \
|
||||
fnmatch.o \
|
||||
gtkaccelgroup.o \
|
||||
gtkaccellabel.o \
|
||||
gtkadjustment.o \
|
||||
gtkalignment.o \
|
||||
gtkarg.o \
|
||||
gtkarrow.o \
|
||||
gtkaspectframe.o \
|
||||
gtkbin.o \
|
||||
gtkbindings.o \
|
||||
gtkbbox.o \
|
||||
gtkbox.o \
|
||||
gtkbutton.o \
|
||||
gtkcalendar.o \
|
||||
gtkcellrenderer.o \
|
||||
gtkcellrenderertext.o \
|
||||
gtkcellrenderertextpixbuf.o \
|
||||
gtkcellrenderertoggle.o \
|
||||
gtkcellrendererpixbuf.o \
|
||||
gtkcheckbutton.o \
|
||||
gtkcheckmenuitem.o \
|
||||
gtkclipboard.o \
|
||||
gtkclist.o \
|
||||
gtkcolorsel.o \
|
||||
gtkcolorseldialog.o \
|
||||
gtkcombo.o \
|
||||
gtkcontainer.o \
|
||||
gtkctree.o \
|
||||
gtkcurve.o \
|
||||
gtkdialog.o \
|
||||
gtkdnd.o \
|
||||
gtkdrawingarea.o \
|
||||
gtkeditable.o \
|
||||
gtkentry.o \
|
||||
gtkeventbox.o \
|
||||
gtkfilesel.o \
|
||||
gtkfixed.o \
|
||||
gtkfontsel.o \
|
||||
gtkframe.o \
|
||||
gtkgamma.o \
|
||||
gtkgc.o \
|
||||
gtkhandlebox.o \
|
||||
gtkhbbox.o \
|
||||
gtkhbox.o \
|
||||
gtkhpaned.o \
|
||||
gtkhruler.o \
|
||||
gtkhscale.o \
|
||||
gtkhscrollbar.o \
|
||||
gtkhseparator.o \
|
||||
gtkhsv.o \
|
||||
gtkiconfactory.o \
|
||||
gtkimage.o \
|
||||
gtkimagemenuitem.o \
|
||||
gtkimcontext.o \
|
||||
gtkimcontextsimple.o \
|
||||
gtkimmodule.o \
|
||||
gtkimmulticontext.o \
|
||||
gtkinputdialog.o \
|
||||
gtkinvisible.o \
|
||||
gtkitem.o \
|
||||
gtkitemfactory.o \
|
||||
gtklabel.o \
|
||||
gtklayout.o \
|
||||
gtklist.o \
|
||||
gtklistitem.o \
|
||||
gtkmain.o \
|
||||
gtkmenu.o \
|
||||
gtkmenubar.o \
|
||||
gtkmenufactory.o \
|
||||
gtkmenuitem.o \
|
||||
gtkmenushell.o \
|
||||
gtkmessagedialog.o \
|
||||
gtkmisc.o \
|
||||
gtknotebook.o \
|
||||
gtkobject.o \
|
||||
gtkoldeditable.o \
|
||||
gtkoptionmenu.o \
|
||||
gtkpacker.o \
|
||||
gtkpaned.o \
|
||||
gtkpixmap.o \
|
||||
gtkplug.o \
|
||||
gtkpreview.o \
|
||||
gtkprogress.o \
|
||||
gtkprogressbar.o \
|
||||
gtkradiobutton.o \
|
||||
gtkradiomenuitem.o \
|
||||
gtkrange.o \
|
||||
gtkrbtree.o \
|
||||
gtkrc.o \
|
||||
gtkruler.o \
|
||||
gtkscale.o \
|
||||
gtkscrollbar.o \
|
||||
gtkscrolledwindow.o \
|
||||
gtkselection.o \
|
||||
gtkseparator.o \
|
||||
gtkseparatormenuitem.o \
|
||||
gtksettings.o \
|
||||
gtksignal.o \
|
||||
gtksocket.o \
|
||||
gtkspinbutton.o \
|
||||
gtkstyle.o \
|
||||
gtkstatusbar.o \
|
||||
gtkstock.o \
|
||||
gtktable.o \
|
||||
gtktearoffmenuitem.o \
|
||||
gtktext.o \
|
||||
gtktextbtree.o \
|
||||
gtktextbuffer.o \
|
||||
gtktextchild.o \
|
||||
gtktextdisplay.o \
|
||||
gtktextiter.o \
|
||||
gtktextlayout.o \
|
||||
gtktextmark.o \
|
||||
gtktextsegment.o \
|
||||
gtktexttag.o \
|
||||
gtktexttagtable.o \
|
||||
gtktexttypes.o \
|
||||
gtktextview.o \
|
||||
gtkthemes.o \
|
||||
gtktipsquery.o \
|
||||
gtktogglebutton.o \
|
||||
gtktoolbar.o \
|
||||
gtktooltips.o \
|
||||
gtktree.o \
|
||||
gtktreeitem.o \
|
||||
gtktreedatalist.o \
|
||||
gtktreednd.o \
|
||||
gtktreemodel.o \
|
||||
gtktreemodelsort.o \
|
||||
gtktreeselection.o \
|
||||
gtktreestore.o \
|
||||
gtktreeview.o \
|
||||
gtktreeviewcolumn.o \
|
||||
gtktypeutils.o \
|
||||
gtkvbbox.o \
|
||||
gtkvbox.o \
|
||||
gtkviewport.o \
|
||||
gtkvpaned.o \
|
||||
gtkvruler.o \
|
||||
gtkvscale.o \
|
||||
gtkvscrollbar.o \
|
||||
gtkvseparator.o \
|
||||
gtkwidget.o \
|
||||
gtkwindow.o \
|
||||
gtkwindow-decorate.o
|
||||
|
||||
# Source headers which are non-autogenerated headers
|
||||
gtk_public_h_sources = \
|
||||
gtk.h \
|
||||
gtkaccelgroup.h \
|
||||
gtkaccellabel.h \
|
||||
gtkadjustment.h \
|
||||
gtkalignment.h \
|
||||
gtkarg.h \
|
||||
gtkarrow.h \
|
||||
gtkaspectframe.h \
|
||||
gtkbin.h \
|
||||
gtkbindings.h \
|
||||
gtkbbox.h \
|
||||
gtkbox.h \
|
||||
gtkbutton.h \
|
||||
gtkcalendar.h \
|
||||
gtkcheckbutton.h \
|
||||
gtkcheckmenuitem.h \
|
||||
gtkseparatormenuitem.h \
|
||||
gtkclist.h \
|
||||
gtkclipboard.h \
|
||||
gtkcolorsel.h \
|
||||
gtkcolorseldialog.h \
|
||||
gtkcombo.h \
|
||||
gtkcontainer.h \
|
||||
gtkctree.h \
|
||||
gtkcurve.h \
|
||||
gtkcellrenderer.h \
|
||||
gtkcellrenderertext.h \
|
||||
gtkcellrenderertextpixbuf.h \
|
||||
gtkcellrenderertoggle.h \
|
||||
gtkcellrendererpixbuf.h \
|
||||
gtkdebug.h \
|
||||
gtkdialog.h \
|
||||
gtkdnd.h \
|
||||
gtkdrawingarea.h \
|
||||
gtkeditable.h \
|
||||
gtkentry.h \
|
||||
gtkenums.h \
|
||||
gtkeventbox.h \
|
||||
gtkfilesel.h \
|
||||
gtkfixed.h \
|
||||
gtkfontsel.h \
|
||||
gtkframe.h \
|
||||
gtkgamma.h \
|
||||
gtkgc.h \
|
||||
gtkhandlebox.h \
|
||||
gtkhbbox.h \
|
||||
gtkhbox.h \
|
||||
gtkhpaned.h \
|
||||
gtkhruler.h \
|
||||
gtkhscale.h \
|
||||
gtkhscrollbar.h \
|
||||
gtkhseparator.h \
|
||||
gtkhsv.h \
|
||||
gtkiconfactory.h \
|
||||
gtkimage.h \
|
||||
gtkimagemenuitem.h \
|
||||
gtkimcontext.h \
|
||||
gtkimmodule.h \
|
||||
gtkimmulticontext.h \
|
||||
gtkinputdialog.h \
|
||||
gtkinvisible.h \
|
||||
gtkitem.h \
|
||||
gtkitemfactory.h \
|
||||
gtklabel.h \
|
||||
gtklayout.h \
|
||||
gtklist.h \
|
||||
gtklistitem.h \
|
||||
gtkliststore.h \
|
||||
gtkmain.h \
|
||||
gtkmenu.h \
|
||||
gtkmenubar.h \
|
||||
gtkmenufactory.h \
|
||||
gtkmenuitem.h \
|
||||
gtkmenushell.h \
|
||||
gtkmessagedialog.h \
|
||||
gtkmisc.h \
|
||||
gtknotebook.h \
|
||||
gtkoldeditable.h \
|
||||
gtkobject.h \
|
||||
gtkoptionmenu.h \
|
||||
gtkpacker.h \
|
||||
gtkpaned.h \
|
||||
gtkpixmap.h \
|
||||
gtkplug.h \
|
||||
gtkpreview.h \
|
||||
gtkprivate.h \
|
||||
gtkprogress.h \
|
||||
gtkprogressbar.h \
|
||||
gtkradiobutton.h \
|
||||
gtkradiomenuitem.h \
|
||||
gtkrange.h \
|
||||
gtkrc.h \
|
||||
gtkruler.h \
|
||||
gtkscale.h \
|
||||
gtkscrollbar.h \
|
||||
gtkscrolledwindow.h \
|
||||
gtkselection.h \
|
||||
gtkseparator.h \
|
||||
gtksettings.h \
|
||||
gtksignal.h \
|
||||
gtksocket.h \
|
||||
gtkspinbutton.h \
|
||||
gtkstyle.h \
|
||||
gtkstatusbar.h \
|
||||
gtkstock.h \
|
||||
gtktable.h \
|
||||
gtktearoffmenuitem.h \
|
||||
gtktextbuffer.h \
|
||||
gtktextchild.h \
|
||||
gtktextdisplay.h \
|
||||
gtktextiter.h \
|
||||
gtktextlayout.h \
|
||||
gtktextmark.h \
|
||||
gtktexttag.h \
|
||||
gtktexttagtable.h \
|
||||
gtktextview.h \
|
||||
gtktext.h \
|
||||
gtktipsquery.h \
|
||||
gtktogglebutton.h \
|
||||
gtktoolbar.h \
|
||||
gtktooltips.h \
|
||||
gtktree.h \
|
||||
gtktreednd.h \
|
||||
gtktreeitem.h \
|
||||
gtktreemodel.h \
|
||||
gtktreemodelsort.h \
|
||||
gtktreeselection.h \
|
||||
gtktreesortable.h \
|
||||
gtktreestore.h \
|
||||
gtktreeview.h \
|
||||
gtktreeviewcolumn.h \
|
||||
gtktypeutils.h \
|
||||
gtkvbbox.h \
|
||||
gtkvbox.h \
|
||||
gtkviewport.h \
|
||||
gtkvpaned.h \
|
||||
gtkvruler.h \
|
||||
gtkvscale.h \
|
||||
gtkvscrollbar.h \
|
||||
gtkvseparator.h \
|
||||
gtkwidget.h \
|
||||
gtkwindow.h
|
||||
|
||||
# More headers to use when autogenerating.
|
||||
gdk_headers = \
|
||||
../gdk/gdkcolor.h \
|
||||
../gdk/gdkcursor.h \
|
||||
../gdk/gdkdnd.h \
|
||||
../gdk/gdkdrawable.h \
|
||||
../gdk/gdkevents.h \
|
||||
../gdk/gdkfont.h \
|
||||
../gdk/gdkgc.h \
|
||||
../gdk/gdkimage.h \
|
||||
../gdk/gdkinput.h \
|
||||
../gdk/gdkpixmap.h \
|
||||
../gdk/gdkproperty.h \
|
||||
../gdk/gdkregion.h \
|
||||
../gdk/gdkrgb.h \
|
||||
../gdk/gdkselection.h \
|
||||
../gdk/gdktypes.h \
|
||||
../gdk/gdkvisual.h \
|
||||
../gdk/gdkwindow.h
|
||||
|
||||
../config.h : ../config.h.win32
|
||||
cp $< $@
|
||||
|
||||
GENERATED = gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c
|
||||
|
||||
#
|
||||
# Generated source files:
|
||||
#
|
||||
generated : $(GENERATED)
|
||||
|
||||
gtk.defs : makeenums.pl gtk-boxed.defs $(gtk_public_h_sources) $(gdk_headers)
|
||||
$(PERL) makeenums.pl defs $(gtk_public_h_sources) $(gdk_headers) >gd.tmp
|
||||
cat gd.tmp gtk-boxed.defs >gtk.defs
|
||||
rm gd.tmp
|
||||
|
||||
# generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
|
||||
gtktypebuiltins.h: gtk.defs maketypes.awk
|
||||
$(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h
|
||||
|
||||
# generate type identifier variables (GTK_TYPE_WIDGET_FLAGS)
|
||||
gtktypebuiltins_vars.c: gtk.defs maketypes.awk
|
||||
$(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c
|
||||
|
||||
# generate type entries for type-id registration
|
||||
gtktypebuiltins_ids.c: gtk.defs maketypes.awk
|
||||
$(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c
|
||||
|
||||
# generate enum value arrays
|
||||
gtktypebuiltins_evals.c: makeenums.pl gtk.defs
|
||||
$(PERL) makeenums.pl arrays $(gtk_public_h_sources) $(gdk_headers) >gtktypebuiltins_evals.c
|
||||
|
||||
gtkmarshal.h : gtkmarshal.list
|
||||
$(GLIB_GENMARSHAL) --prefix=gtk_marshal gtkmarshal.list --header >gtkmarshal.h
|
||||
|
||||
gtkmarshal.c : gtkmarshal.list
|
||||
$(GLIB_GENMARSHAL) --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c
|
||||
|
||||
#
|
||||
# Linking:
|
||||
#
|
||||
gtk-win32-$(GTK_VER).dll : generated $(gtk_OBJECTS) gtk.def
|
||||
$(GLIB)/build-dll gtk-win32 $(GTK_VER) gtk.def $(gtk_OBJECTS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LIBICONV_LIBS) $(INTL_LIBS) -luser32
|
||||
|
||||
#
|
||||
# Test programs:
|
||||
#
|
||||
testcalendar.exe : testcalendar.o
|
||||
$(CC) $(CFLAGS) -o $@ testcalendar.o $(GTK_LIBS) $(GDK_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
# Must have separate rules for these objects that don't go in the DLL
|
||||
testcalendar.o : testcalendar.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testcalendar\" testcalendar.c
|
||||
|
||||
testdnd.exe : testdnd.o
|
||||
$(CC) $(CFLAGS) -o $@ testdnd.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testdnd.o : testdnd.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c
|
||||
|
||||
testgtk.exe : testgtk.o
|
||||
$(CC) $(CFLAGS) -o $@ testgtk.o $(GTK_LIBS) $(GDK_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testgtk.o : testgtk.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c
|
||||
|
||||
testinput.exe : testinput.o
|
||||
$(CC) $(CFLAGS) -o $@ testinput.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testinput.o : testinput.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testinput\" testinput.c
|
||||
|
||||
testrgb.exe : testrgb.o
|
||||
$(CC) $(CFLAGS) -o $@ testrgb.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testrgb.o : testrgb.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c
|
||||
|
||||
testselection.exe : testselection.o
|
||||
$(CC) $(CFLAGS) -o $@ testselection.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testselection.o : testselection.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testselection\" testselection.c
|
||||
|
||||
testtext.exe : testtext.o
|
||||
$(CC) $(CFLAGS) -o $@ testtext.o $(PANGO_LIBS) $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testtext.o : testtext.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testtext\" testtext.c
|
||||
|
||||
testtextbuffer.exe : testtextbuffer.o
|
||||
$(CC) $(CFLAGS) -o $@ testtextbuffer.o $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
testtextbuffer.o : testtextbuffer.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testtextbuffer\" testtextbuffer.c
|
||||
|
||||
simple.exe : simple.o
|
||||
$(CC) $(CFLAGS) -o $@ simple.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
|
||||
|
||||
simple.o : simple.c
|
||||
$(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"simple\" simple.c
|
||||
|
||||
# The rmgen target removes just the generated source files
|
||||
rmgen:
|
||||
-rm $(GENERATED)
|
||||
|
||||
# Hack to get an updated makefile.mingw automatically after updating
|
||||
# makefile.mingw.in. Only for developer use.
|
||||
makefile.mingw: makefile.mingw.in
|
||||
sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \
|
||||
-e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' \
|
||||
-e 's,@GTK[_]VERSION@,@GTK_VERSION@,' \
|
||||
-e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \
|
||||
-e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,' <$< >$@
|
||||
@@ -1,6 +0,0 @@
|
||||
Makefile.in
|
||||
Makefile
|
||||
.deps
|
||||
.libs
|
||||
*.lo
|
||||
*.la
|
||||
@@ -1,252 +0,0 @@
|
||||
Fri Sep 6 20:32:45 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-draw.c: Account for the possibility of detail == NULL
|
||||
(#89561, Hongli Lai, Luca Barbato)
|
||||
|
||||
Sun Apr 21 14:10:04 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-rc-style.c pixbuf.h pixbuf-draw.c: Add a fake STEPPER
|
||||
function that is used for drawing scrollbar steppers,
|
||||
so that themes that want to draw the button and arrow
|
||||
separately can override the default handling.
|
||||
|
||||
* pixbuf-draw.c: Remove draw_polygon() since it was
|
||||
just a cut-and-paste of the default one. Remove
|
||||
some unused code.
|
||||
|
||||
2002-03-07 James Henstridge <james@daa.com.au>
|
||||
|
||||
* Makefile.am (libpixmap_la_LIBADD): link pixbuf engine against
|
||||
the gtk+ libraries, so that it can be used with programs that
|
||||
dlopen gtk+ without the RTLD_GLOBAL flag (such as scripting
|
||||
languages and mozilla).
|
||||
|
||||
Thu Feb 7 00:21:21 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-render.c (pixbuf_render): Add gradient
|
||||
rendering -- if the source width/height is zero,
|
||||
render a gradient from the surrounding values.
|
||||
|
||||
Mon Jan 28 15:34:43 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-render.c (compute_hint): Fix hint computation
|
||||
again.
|
||||
|
||||
Mon Jan 28 12:17:07 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-render.c (compute_hint): Fix problems in computing
|
||||
MISSING hint.
|
||||
|
||||
Sun Jan 27 23:58:13 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf-render.c (compute_hint): Optimize the case
|
||||
where a component is entirely transparent by skipping
|
||||
drawing it.
|
||||
|
||||
* pixbuf-rc-style.c (theme_parse_image): Catch case
|
||||
where background or overlay border/stretch are specified
|
||||
without a background image.
|
||||
|
||||
* pixbuf-render.c (theme_pixbuf_destroy): Actually free
|
||||
the structure and filename.
|
||||
|
||||
=================== Move back into gtk-engines ====================
|
||||
|
||||
Sat Jan 19 02:45:17 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* src/pixbuf-render.c (theme_pixbuf_compute_hints): Catch
|
||||
invalid borders, and warn.
|
||||
|
||||
Sat Jan 19 00:32:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* examples/*: Add an extrodinarily ugly example.
|
||||
|
||||
* src/pixbuf-draw.c (draw_simple_image): Never shape
|
||||
the window, even if we are allowed to. Shaping is
|
||||
ugly -- if the widget isn't NO_WINDOW (most are),
|
||||
you'll just have to draw it rectangular.
|
||||
|
||||
* src/pixbuf-render.c (pixbuf_render): Always use
|
||||
gdk_pixbuf_render_alpha() with FULL_ALPHA() as the
|
||||
type.
|
||||
|
||||
* pixbuf.h src/pixbuf-render.c (theme_pixbuf_compute_hints): To
|
||||
speed up scaling, cache whether pixbufs have constant rows
|
||||
or constant columns.
|
||||
|
||||
* src/pixbuf-render.c (pixbuf_render): Speed up scaling
|
||||
by using the hints from compute_hints().
|
||||
|
||||
Fri Jan 18 20:49:48 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in: Use pkg-config to get the binray version
|
||||
of GTK+ that we use for an install path.
|
||||
|
||||
Fri Jan 18 18:14:11 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* src/pixbuf-draw.c (draw_focus): Fix for changes to draw_focus.
|
||||
|
||||
2001-09-21 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* src/pixbuf-rc-style-c : GtkRcStyle::parse has a GtkSettings
|
||||
parameter now. Pass it through theme_parse_file () to use it
|
||||
gtk_rc_find_pixmap_in_path ()
|
||||
|
||||
* src/pixbuf-draw.c : the font field from GtkStyle is private
|
||||
now, use accessor gtk_style_get_font ()
|
||||
|
||||
* makefile.msc : compile on win32, use it if you have a _real_
|
||||
fast computer or want to see gtk in slow motion :-)
|
||||
|
||||
Thu May 3 05:36:06 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixbuf.h: Fix trailing comma on enumeration. (#54071)
|
||||
|
||||
2001-03-05 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* src/pixbuf-draw.c: made the "parent_class" pointer static.
|
||||
|
||||
(Owen, I just commented out the draw methods which don't exist any
|
||||
more to make it compile).
|
||||
|
||||
2001-02-20 Sven Neumann <sven@convergence.de>
|
||||
|
||||
* src/pixbuf-draw.c (draw_vline): use draw_vline method of
|
||||
parent_class, not draw_hline
|
||||
|
||||
Wed Nov 15 21:56:28 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* src/pixbuf-*: A few updates for GTypePlugin.
|
||||
|
||||
Tue Jul 18 12:13:19 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Updates to work with GTK+-2.0 theme engine architecture.
|
||||
It won't even sort of work with GTK+-1.2 any more.
|
||||
|
||||
* configure.in src/Makefile.am: Look for GTK+-2.0,
|
||||
install engine into GTK+-2.0 location.
|
||||
|
||||
* src/pixbuf-style.h src/pixbuf-rc-style.[ch]: New
|
||||
files for GtkRcStyle and GtkStyle subclasses. Parsing,
|
||||
etc, moves to pixbuf-rc-style.[ch]
|
||||
|
||||
* src/pixbuf-draw.c: Chain up to parent implementation
|
||||
when images aren't found for a certain element.
|
||||
|
||||
Sun Jul 9 18:15:58 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* configure.in (ACLOCAL): Add -Wall for gcc.
|
||||
|
||||
* src/pixbuf-render.c (pixbuf_render): Fix problem
|
||||
using gdk_rectangle_intersect() from GTK+-1.2.
|
||||
|
||||
* src/pixbuf-render.c src/pixbuf-draw.c: Remove
|
||||
direct access to pixbuf internals.
|
||||
|
||||
Mon Mar 6 11:44:58 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* docs/gap-geometry.fig: Moved into docs/ subdir
|
||||
|
||||
* Makefile.am configure.in autogen.sh src/Makefile.am:
|
||||
automakify
|
||||
|
||||
* src/pixbuf.h src/pixbuf-render.c src/pixbuf-draw.c
|
||||
src/pixbuf-main.c: Move sources into subdir and
|
||||
rename.
|
||||
|
||||
Mon Mar 6 11:02:07 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_pixbuf.c: Handle drawing transparency without a
|
||||
mask correctly.
|
||||
|
||||
* pixmap_theme_main.c pixmap_theme_draw.c: Remove duplicate
|
||||
includes.
|
||||
|
||||
Sun Feb 6 21:34:30 2000 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Started ChangeLog for pixbuf engine, check sources
|
||||
into CVS.
|
||||
|
||||
========== ChangeLog for pixmap engine ===================
|
||||
|
||||
1999-11-22 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* pixmap_theme_main.c (theme_duplicate_style): Really copy the
|
||||
`src_data->img_list', not just the pointer that points to it.
|
||||
|
||||
Tue Oct 5 15:13:29 1999 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_draw.c (apply_theme_image): Don't set
|
||||
background pixmap on pixmaps.
|
||||
|
||||
1999-02-14 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* Theme/gtk/Makefile.am.in (Makefile.am): Handle the case when
|
||||
files are deleted.
|
||||
|
||||
Thu Feb 11 21:16:53 1999 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_main.c (theme_data_unref): Free the
|
||||
theme data structure as well as the contents.
|
||||
|
||||
1999-02-03 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* Theme/gtk/Makefile.am.in: New file. Theme/gtk/Makefile.am is
|
||||
generated from this file when new *.png files are added.
|
||||
|
||||
1999-01-23 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* pixmap_theme_main.c (theme_init): Turn on pixmap cache.
|
||||
|
||||
Mon Jan 18 13:37:23 1999 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Theme/gtk/gtkrc: Give buttons a gray background
|
||||
color so they look a little less funny when initially
|
||||
drawing.
|
||||
|
||||
Wed Jan 13 18:58:25 1999 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_draw.c: Fixed pervasive mis-bracketing
|
||||
that was causing drawing if the drawn region and
|
||||
clipping region did NOT intersect, and a couple
|
||||
of errors in computing source and destination
|
||||
regions.
|
||||
|
||||
1998-11-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* pixmap_theme_draw.c: #include <math.h>
|
||||
|
||||
1998-11-07 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* Theme/gtk/Makefile.am (theme_DATA):
|
||||
Update to new directory contents.
|
||||
* configure.in: Remove.
|
||||
|
||||
Fri Nov 6 17:26:12 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_main.c: Removed some debugging
|
||||
printf's.
|
||||
|
||||
* Theme/gtk/notebook1.c Theme/gtk/menubar.png: new
|
||||
bigger pixmaps to reduce pixelation.
|
||||
|
||||
* Theme/gtk/gtkrc: Reorganized to use several styles
|
||||
instead of one huge style. Change clist backgrounds
|
||||
to be prettier.
|
||||
|
||||
Thu Nov 5 10:23:46 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_draw.c (draw_shadow_gap): Fixed hard-coded
|
||||
gap_side of '0'.
|
||||
|
||||
Mon Nov 2 14:46:02 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_draw.c (apply_theme_image_shadow_gap): Removed
|
||||
several hundred lines of duplicated code with a bit of
|
||||
reoriganization.
|
||||
|
||||
Wed Oct 28 16:18:04 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* pixmap_theme_main.c (theme_symbols): Removed lots
|
||||
and lots of white space.
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
INCLUDES = $(GTK_CFLAGS)
|
||||
|
||||
enginedir = $(libdir)/gtk-2.0/$(GTK_VERSION)/engines
|
||||
|
||||
engine_LTLIBRARIES = libpixmap.la
|
||||
|
||||
libpixmap_la_SOURCES = \
|
||||
pixbuf-draw.c \
|
||||
pixbuf-main.c \
|
||||
pixbuf-render.c \
|
||||
pixbuf-rc-style.c \
|
||||
pixbuf-rc-style.h \
|
||||
pixbuf-style.h \
|
||||
pixbuf.h
|
||||
|
||||
libpixmap_la_LDFLAGS = -avoid-version -module
|
||||
libpixmap_la_LIBADD = $(GTK_LIBS)
|
||||
|
||||
dist-hook:
|
||||
cp -pr examples $(distdir); \
|
||||
find $(distdir)/examples -name 'CVS' -print | xargs rm -rf
|
||||
@@ -1,17 +0,0 @@
|
||||
The code in this directory is a GTK+ theme engine based on the earlier
|
||||
pixmap theme engine.
|
||||
|
||||
The config files are meant to be compatible, but instead of rendering
|
||||
using Imlib, it renders using GdkPixbuf. This makes the memory
|
||||
management much more understandable, and also allows us to use
|
||||
GdkPixbuf's high quality scaling.
|
||||
|
||||
Most of the code was reworked/rewritten in the process to make it more
|
||||
understandable and maintainable.
|
||||
|
||||
There are lots of bugs here, a considersable number of bugs. But it's
|
||||
cleaned up a great deal from the older pixmap engine. Please don't
|
||||
make it uglier again.
|
||||
|
||||
Owen Taylor <otaylor@redhat.com>
|
||||
6 February 2000
|
||||
@@ -1,14 +0,0 @@
|
||||
gtk-2.0/triangle-background.png is copyright Owen Taylor, 1997
|
||||
and may be used without restriction as long as this attribution
|
||||
is reproduced.
|
||||
|
||||
images/bc.pnm images/bc-dark.pnm images/bc-light.png are
|
||||
from the BrushedMetalClean theme; I believe Tuomas Kuosmanen
|
||||
and Carsten Haitzler had something to do with the original
|
||||
BrushedMetal artwork.
|
||||
|
||||
This theme is truly hideous for a reason ... to demonstrate
|
||||
that alpha-compositing is going on.
|
||||
|
||||
Owen Taylor
|
||||
19 Jan 2002x
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 836 B |
Binary file not shown.
@@ -1,65 +0,0 @@
|
||||
style "default"
|
||||
{
|
||||
fg[NORMAL] = "#ffffff"
|
||||
fg[PRELIGHT] = "#ffffff"
|
||||
bg_pixmap[NORMAL] = "triangle_background.png"
|
||||
# bg_pixmap[NORMAL] = "bc.png"
|
||||
bg_pixmap[PRELIGHT] = "bc-light.png"
|
||||
bg_pixmap[ACTIVE] = "bc-dark.png" bg_pixmap[INSENSITIVE] = "bc.png"
|
||||
}
|
||||
|
||||
class "GtkWidget" style "default"
|
||||
|
||||
style "bubble-button"
|
||||
{
|
||||
engine "pixmap"
|
||||
{
|
||||
image
|
||||
{
|
||||
function = BOX
|
||||
file = "bubble-blue.png"
|
||||
border = { 8, 8, 8, 8 }
|
||||
stretch = TRUE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# common default
|
||||
class "GtkButton" style "bubble-button"
|
||||
|
||||
style "bubble-range"
|
||||
{
|
||||
GtkRange::slider_width = 16
|
||||
GtkRange::stepper_size = 16
|
||||
|
||||
engine "pixmap"
|
||||
{
|
||||
image
|
||||
{
|
||||
function = BOX
|
||||
file = "bubble-blue.png"
|
||||
border = { 8, 8, 8, 8 }
|
||||
stretch = TRUE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# common default
|
||||
class "GtkRange" style "bubble-range"
|
||||
|
||||
style "bubble-menuitem"
|
||||
{
|
||||
engine "pixmap"
|
||||
{
|
||||
image
|
||||
{
|
||||
function = BOX
|
||||
file = "bubble-blue.png"
|
||||
border = { 8, 8, 8, 8 }
|
||||
stretch = TRUE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# common default
|
||||
class "GtkMenuItem" style "bubble-menuitem"
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 57 KiB |
File diff suppressed because it is too large
Load Diff
@@ -1,57 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include "pixbuf.h"
|
||||
#include "pixbuf-style.h"
|
||||
#include "pixbuf-rc-style.h"
|
||||
#include <gmodule.h>
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
theme_init (GTypeModule *module)
|
||||
{
|
||||
pixbuf_rc_style_register_type (module);
|
||||
pixbuf_style_register_type (module);
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
theme_exit (void)
|
||||
{
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT GtkRcStyle *
|
||||
theme_create_rc_style (void)
|
||||
{
|
||||
return GTK_RC_STYLE (g_object_new (PIXBUF_TYPE_RC_STYLE, NULL));
|
||||
}
|
||||
|
||||
/* The following function will be called by GTK+ when the module
|
||||
* is loaded and checks to see if we are compatible with the
|
||||
* version of GTK+ that loads us.
|
||||
*/
|
||||
G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module);
|
||||
const gchar*
|
||||
g_module_check_init (GModule *module)
|
||||
{
|
||||
return gtk_check_version (GTK_MAJOR_VERSION,
|
||||
GTK_MINOR_VERSION,
|
||||
GTK_MICRO_VERSION - GTK_INTERFACE_AGE);
|
||||
}
|
||||
@@ -1,815 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include "pixbuf.h"
|
||||
#include "pixbuf-style.h"
|
||||
#include "pixbuf-rc-style.h"
|
||||
|
||||
static void pixbuf_rc_style_init (PixbufRcStyle *style);
|
||||
static void pixbuf_rc_style_class_init (PixbufRcStyleClass *klass);
|
||||
static void pixbuf_rc_style_finalize (GObject *object);
|
||||
static guint pixbuf_rc_style_parse (GtkRcStyle *rc_style,
|
||||
GtkSettings *settings,
|
||||
GScanner *scanner);
|
||||
static void pixbuf_rc_style_merge (GtkRcStyle *dest,
|
||||
GtkRcStyle *src);
|
||||
static GtkStyle *pixbuf_rc_style_create_style (GtkRcStyle *rc_style);
|
||||
|
||||
static void theme_image_unref (ThemeImage *data);
|
||||
|
||||
static struct
|
||||
{
|
||||
gchar *name;
|
||||
guint token;
|
||||
}
|
||||
theme_symbols[] =
|
||||
{
|
||||
{ "image", TOKEN_IMAGE },
|
||||
{ "function", TOKEN_FUNCTION },
|
||||
{ "file", TOKEN_FILE },
|
||||
{ "stretch", TOKEN_STRETCH },
|
||||
{ "recolorable", TOKEN_RECOLORABLE },
|
||||
{ "border", TOKEN_BORDER },
|
||||
{ "detail", TOKEN_DETAIL },
|
||||
{ "state", TOKEN_STATE },
|
||||
{ "shadow", TOKEN_SHADOW },
|
||||
{ "gap_side", TOKEN_GAP_SIDE },
|
||||
{ "gap_file", TOKEN_GAP_FILE },
|
||||
{ "gap_border", TOKEN_GAP_BORDER },
|
||||
{ "gap_start_file", TOKEN_GAP_START_FILE },
|
||||
{ "gap_start_border", TOKEN_GAP_START_BORDER },
|
||||
{ "gap_end_file", TOKEN_GAP_END_FILE },
|
||||
{ "gap_end_border", TOKEN_GAP_END_BORDER },
|
||||
{ "overlay_file", TOKEN_OVERLAY_FILE },
|
||||
{ "overlay_border", TOKEN_OVERLAY_BORDER },
|
||||
{ "overlay_stretch", TOKEN_OVERLAY_STRETCH },
|
||||
{ "arrow_direction", TOKEN_ARROW_DIRECTION },
|
||||
{ "orientation", TOKEN_ORIENTATION },
|
||||
|
||||
{ "HLINE", TOKEN_D_HLINE },
|
||||
{ "VLINE", TOKEN_D_VLINE },
|
||||
{ "SHADOW", TOKEN_D_SHADOW },
|
||||
{ "POLYGON", TOKEN_D_POLYGON },
|
||||
{ "ARROW", TOKEN_D_ARROW },
|
||||
{ "DIAMOND", TOKEN_D_DIAMOND },
|
||||
{ "OVAL", TOKEN_D_OVAL },
|
||||
{ "STRING", TOKEN_D_STRING },
|
||||
{ "BOX", TOKEN_D_BOX },
|
||||
{ "FLAT_BOX", TOKEN_D_FLAT_BOX },
|
||||
{ "CHECK", TOKEN_D_CHECK },
|
||||
{ "OPTION", TOKEN_D_OPTION },
|
||||
{ "CROSS", TOKEN_D_CROSS },
|
||||
{ "RAMP", TOKEN_D_RAMP },
|
||||
{ "TAB", TOKEN_D_TAB },
|
||||
{ "SHADOW_GAP", TOKEN_D_SHADOW_GAP },
|
||||
{ "BOX_GAP", TOKEN_D_BOX_GAP },
|
||||
{ "EXTENSION", TOKEN_D_EXTENSION },
|
||||
{ "FOCUS", TOKEN_D_FOCUS },
|
||||
{ "SLIDER", TOKEN_D_SLIDER },
|
||||
{ "ENTRY", TOKEN_D_ENTRY },
|
||||
{ "HANDLE", TOKEN_D_HANDLE },
|
||||
{ "STEPPER", TOKEN_D_STEPPER },
|
||||
|
||||
{ "TRUE", TOKEN_TRUE },
|
||||
{ "FALSE", TOKEN_FALSE },
|
||||
|
||||
{ "TOP", TOKEN_TOP },
|
||||
{ "UP", TOKEN_UP },
|
||||
{ "BOTTOM", TOKEN_BOTTOM },
|
||||
{ "DOWN", TOKEN_DOWN },
|
||||
{ "LEFT", TOKEN_LEFT },
|
||||
{ "RIGHT", TOKEN_RIGHT },
|
||||
|
||||
{ "NORMAL", TOKEN_NORMAL },
|
||||
{ "ACTIVE", TOKEN_ACTIVE },
|
||||
{ "PRELIGHT", TOKEN_PRELIGHT },
|
||||
{ "SELECTED", TOKEN_SELECTED },
|
||||
{ "INSENSITIVE", TOKEN_INSENSITIVE },
|
||||
|
||||
{ "NONE", TOKEN_NONE },
|
||||
{ "IN", TOKEN_IN },
|
||||
{ "OUT", TOKEN_OUT },
|
||||
{ "ETCHED_IN", TOKEN_ETCHED_IN },
|
||||
{ "ETCHED_OUT", TOKEN_ETCHED_OUT },
|
||||
{ "HORIZONTAL", TOKEN_HORIZONTAL },
|
||||
{ "VERTICAL", TOKEN_VERTICAL },
|
||||
};
|
||||
|
||||
static GtkRcStyleClass *parent_class;
|
||||
|
||||
GType pixbuf_type_rc_style = 0;
|
||||
|
||||
void
|
||||
pixbuf_rc_style_register_type (GTypeModule *module)
|
||||
{
|
||||
static const GTypeInfo object_info =
|
||||
{
|
||||
sizeof (PixbufRcStyleClass),
|
||||
(GBaseInitFunc) NULL,
|
||||
(GBaseFinalizeFunc) NULL,
|
||||
(GClassInitFunc) pixbuf_rc_style_class_init,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (PixbufRcStyle),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) pixbuf_rc_style_init,
|
||||
};
|
||||
|
||||
pixbuf_type_rc_style = g_type_module_register_type (module,
|
||||
GTK_TYPE_RC_STYLE,
|
||||
"PixbufRcStyle",
|
||||
&object_info, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
pixbuf_rc_style_init (PixbufRcStyle *style)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
pixbuf_rc_style_class_init (PixbufRcStyleClass *klass)
|
||||
{
|
||||
GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
rc_style_class->parse = pixbuf_rc_style_parse;
|
||||
rc_style_class->merge = pixbuf_rc_style_merge;
|
||||
rc_style_class->create_style = pixbuf_rc_style_create_style;
|
||||
|
||||
object_class->finalize = pixbuf_rc_style_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
pixbuf_rc_style_finalize (GObject *object)
|
||||
{
|
||||
PixbufRcStyle *rc_style = PIXBUF_RC_STYLE (object);
|
||||
|
||||
g_list_foreach (rc_style->img_list, (GFunc) theme_image_unref, NULL);
|
||||
g_list_free (rc_style->img_list);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_file(GtkSettings *settings,
|
||||
GScanner *scanner,
|
||||
ThemePixbuf **theme_pb)
|
||||
{
|
||||
guint token;
|
||||
gchar *pixmap;
|
||||
|
||||
/* Skip 'blah_file' */
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_STRING)
|
||||
return G_TOKEN_STRING;
|
||||
|
||||
if (!*theme_pb)
|
||||
*theme_pb = theme_pixbuf_new ();
|
||||
|
||||
pixmap = gtk_rc_find_pixmap_in_path(settings, scanner, scanner->value.v_string);
|
||||
if (pixmap)
|
||||
{
|
||||
theme_pixbuf_set_filename (*theme_pb, pixmap);
|
||||
g_free (pixmap);
|
||||
}
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_border (GScanner *scanner,
|
||||
ThemePixbuf **theme_pb)
|
||||
{
|
||||
guint token;
|
||||
gint left, right, top, bottom;
|
||||
|
||||
/* Skip 'blah_border' */
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_LEFT_CURLY)
|
||||
return G_TOKEN_LEFT_CURLY;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
return G_TOKEN_INT;
|
||||
left = scanner->value.v_int;
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_COMMA)
|
||||
return G_TOKEN_COMMA;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
return G_TOKEN_INT;
|
||||
right = scanner->value.v_int;
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_COMMA)
|
||||
return G_TOKEN_COMMA;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
return G_TOKEN_INT;
|
||||
top = scanner->value.v_int;
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_COMMA)
|
||||
return G_TOKEN_COMMA;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
return G_TOKEN_INT;
|
||||
bottom = scanner->value.v_int;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_RIGHT_CURLY)
|
||||
return G_TOKEN_RIGHT_CURLY;
|
||||
|
||||
if (!*theme_pb)
|
||||
*theme_pb = theme_pixbuf_new ();
|
||||
|
||||
theme_pixbuf_set_border (*theme_pb, left, right, top, bottom);
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_stretch(GScanner *scanner,
|
||||
ThemePixbuf **theme_pb)
|
||||
{
|
||||
guint token;
|
||||
gboolean stretch;
|
||||
|
||||
/* Skip 'blah_stretch' */
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token == TOKEN_TRUE)
|
||||
stretch = TRUE;
|
||||
else if (token == TOKEN_FALSE)
|
||||
stretch = FALSE;
|
||||
else
|
||||
return TOKEN_TRUE;
|
||||
|
||||
if (!*theme_pb)
|
||||
*theme_pb = theme_pixbuf_new ();
|
||||
|
||||
theme_pixbuf_set_stretch (*theme_pb, stretch);
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_recolorable(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_RECOLORABLE)
|
||||
return TOKEN_RECOLORABLE;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token == TOKEN_TRUE)
|
||||
data->recolorable = 1;
|
||||
else if (token == TOKEN_FALSE)
|
||||
data->recolorable = 0;
|
||||
else
|
||||
return TOKEN_TRUE;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_function(GScanner * scanner,
|
||||
ThemeImage *data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_FUNCTION)
|
||||
return TOKEN_FUNCTION;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if ((token >= TOKEN_D_HLINE) && (token <= TOKEN_D_STEPPER))
|
||||
data->match_data.function = token;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_detail(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_DETAIL)
|
||||
return TOKEN_DETAIL;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_STRING)
|
||||
return G_TOKEN_STRING;
|
||||
|
||||
if (data->match_data.detail)
|
||||
g_free (data->match_data.detail);
|
||||
|
||||
data->match_data.detail = g_strdup(scanner->value.v_string);
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_state(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_STATE)
|
||||
return TOKEN_STATE;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token == TOKEN_NORMAL)
|
||||
data->match_data.state = GTK_STATE_NORMAL;
|
||||
else if (token == TOKEN_ACTIVE)
|
||||
data->match_data.state = GTK_STATE_ACTIVE;
|
||||
else if (token == TOKEN_PRELIGHT)
|
||||
data->match_data.state = GTK_STATE_PRELIGHT;
|
||||
else if (token == TOKEN_SELECTED)
|
||||
data->match_data.state = GTK_STATE_SELECTED;
|
||||
else if (token == TOKEN_INSENSITIVE)
|
||||
data->match_data.state = GTK_STATE_INSENSITIVE;
|
||||
else
|
||||
return TOKEN_NORMAL;
|
||||
|
||||
data->match_data.flags |= THEME_MATCH_STATE;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_shadow(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_SHADOW)
|
||||
return TOKEN_SHADOW;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token == TOKEN_NONE)
|
||||
data->match_data.shadow = GTK_SHADOW_NONE;
|
||||
else if (token == TOKEN_IN)
|
||||
data->match_data.shadow = GTK_SHADOW_IN;
|
||||
else if (token == TOKEN_OUT)
|
||||
data->match_data.shadow = GTK_SHADOW_OUT;
|
||||
else if (token == TOKEN_ETCHED_IN)
|
||||
data->match_data.shadow = GTK_SHADOW_ETCHED_IN;
|
||||
else if (token == TOKEN_ETCHED_OUT)
|
||||
data->match_data.shadow = GTK_SHADOW_ETCHED_OUT;
|
||||
else
|
||||
return TOKEN_NONE;
|
||||
|
||||
data->match_data.flags |= THEME_MATCH_SHADOW;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_arrow_direction(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_ARROW_DIRECTION)
|
||||
return TOKEN_ARROW_DIRECTION;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token == TOKEN_UP)
|
||||
data->match_data.arrow_direction = GTK_ARROW_UP;
|
||||
else if (token == TOKEN_DOWN)
|
||||
data->match_data.arrow_direction = GTK_ARROW_DOWN;
|
||||
else if (token == TOKEN_LEFT)
|
||||
data->match_data.arrow_direction = GTK_ARROW_LEFT;
|
||||
else if (token == TOKEN_RIGHT)
|
||||
data->match_data.arrow_direction = GTK_ARROW_RIGHT;
|
||||
else
|
||||
return TOKEN_UP;
|
||||
|
||||
data->match_data.flags |= THEME_MATCH_ARROW_DIRECTION;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_gap_side(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_GAP_SIDE)
|
||||
return TOKEN_GAP_SIDE;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
if (token == TOKEN_TOP)
|
||||
data->match_data.gap_side = GTK_POS_TOP;
|
||||
else if (token == TOKEN_BOTTOM)
|
||||
data->match_data.gap_side = GTK_POS_BOTTOM;
|
||||
else if (token == TOKEN_LEFT)
|
||||
data->match_data.gap_side = GTK_POS_LEFT;
|
||||
else if (token == TOKEN_RIGHT)
|
||||
data->match_data.gap_side = GTK_POS_RIGHT;
|
||||
else
|
||||
return TOKEN_TOP;
|
||||
|
||||
data->match_data.flags |= THEME_MATCH_GAP_SIDE;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_orientation(GScanner * scanner,
|
||||
ThemeImage * data)
|
||||
{
|
||||
guint token;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_ORIENTATION)
|
||||
return TOKEN_ORIENTATION;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_EQUAL_SIGN)
|
||||
return G_TOKEN_EQUAL_SIGN;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
if (token == TOKEN_HORIZONTAL)
|
||||
data->match_data.orientation = GTK_ORIENTATION_HORIZONTAL;
|
||||
else if (token == TOKEN_VERTICAL)
|
||||
data->match_data.orientation = GTK_ORIENTATION_VERTICAL;
|
||||
else
|
||||
return TOKEN_HORIZONTAL;
|
||||
|
||||
data->match_data.flags |= THEME_MATCH_ORIENTATION;
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
theme_image_ref (ThemeImage *data)
|
||||
{
|
||||
data->refcount++;
|
||||
}
|
||||
|
||||
static void
|
||||
theme_image_unref (ThemeImage *data)
|
||||
{
|
||||
data->refcount--;
|
||||
if (data->refcount == 0)
|
||||
{
|
||||
if (data->match_data.detail)
|
||||
g_free (data->match_data.detail);
|
||||
if (data->background)
|
||||
theme_pixbuf_destroy (data->background);
|
||||
if (data->overlay)
|
||||
theme_pixbuf_destroy (data->overlay);
|
||||
if (data->gap_start)
|
||||
theme_pixbuf_destroy (data->gap_start);
|
||||
if (data->gap)
|
||||
theme_pixbuf_destroy (data->gap);
|
||||
if (data->gap_end)
|
||||
theme_pixbuf_destroy (data->gap_end);
|
||||
g_free (data);
|
||||
}
|
||||
}
|
||||
|
||||
static guint
|
||||
theme_parse_image(GtkSettings *settings,
|
||||
GScanner *scanner,
|
||||
PixbufRcStyle *pixbuf_style,
|
||||
ThemeImage **data_return)
|
||||
{
|
||||
guint token;
|
||||
ThemeImage *data;
|
||||
|
||||
data = NULL;
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != TOKEN_IMAGE)
|
||||
return TOKEN_IMAGE;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_LEFT_CURLY)
|
||||
return G_TOKEN_LEFT_CURLY;
|
||||
|
||||
data = g_malloc(sizeof(ThemeImage));
|
||||
|
||||
data->refcount = 1;
|
||||
|
||||
data->background = NULL;
|
||||
data->overlay = NULL;
|
||||
data->gap_start = NULL;
|
||||
data->gap = NULL;
|
||||
data->gap_end = NULL;
|
||||
|
||||
data->recolorable = FALSE;
|
||||
|
||||
data->match_data.function = 0;
|
||||
data->match_data.detail = NULL;
|
||||
data->match_data.flags = 0;
|
||||
|
||||
token = g_scanner_peek_next_token(scanner);
|
||||
while (token != G_TOKEN_RIGHT_CURLY)
|
||||
{
|
||||
switch (token)
|
||||
{
|
||||
case TOKEN_FUNCTION:
|
||||
token = theme_parse_function(scanner, data);
|
||||
break;
|
||||
case TOKEN_RECOLORABLE:
|
||||
token = theme_parse_recolorable(scanner, data);
|
||||
break;
|
||||
case TOKEN_DETAIL:
|
||||
token = theme_parse_detail(scanner, data);
|
||||
break;
|
||||
case TOKEN_STATE:
|
||||
token = theme_parse_state(scanner, data);
|
||||
break;
|
||||
case TOKEN_SHADOW:
|
||||
token = theme_parse_shadow(scanner, data);
|
||||
break;
|
||||
case TOKEN_GAP_SIDE:
|
||||
token = theme_parse_gap_side(scanner, data);
|
||||
break;
|
||||
case TOKEN_ARROW_DIRECTION:
|
||||
token = theme_parse_arrow_direction(scanner, data);
|
||||
break;
|
||||
case TOKEN_ORIENTATION:
|
||||
token = theme_parse_orientation(scanner, data);
|
||||
break;
|
||||
case TOKEN_FILE:
|
||||
token = theme_parse_file(settings, scanner, &data->background);
|
||||
break;
|
||||
case TOKEN_BORDER:
|
||||
token = theme_parse_border(scanner, &data->background);
|
||||
break;
|
||||
case TOKEN_STRETCH:
|
||||
token = theme_parse_stretch(scanner, &data->background);
|
||||
break;
|
||||
case TOKEN_GAP_FILE:
|
||||
token = theme_parse_file(settings, scanner, &data->gap);
|
||||
break;
|
||||
case TOKEN_GAP_BORDER:
|
||||
token = theme_parse_border(scanner, &data->gap);
|
||||
break;
|
||||
case TOKEN_GAP_START_FILE:
|
||||
token = theme_parse_file(settings, scanner, &data->gap_start);
|
||||
break;
|
||||
case TOKEN_GAP_START_BORDER:
|
||||
token = theme_parse_border(scanner, &data->gap_start);
|
||||
break;
|
||||
case TOKEN_GAP_END_FILE:
|
||||
token = theme_parse_file(settings, scanner, &data->gap_end);
|
||||
break;
|
||||
case TOKEN_GAP_END_BORDER:
|
||||
token = theme_parse_border(scanner, &data->gap_end);
|
||||
break;
|
||||
case TOKEN_OVERLAY_FILE:
|
||||
token = theme_parse_file(settings, scanner, &data->overlay);
|
||||
break;
|
||||
case TOKEN_OVERLAY_BORDER:
|
||||
token = theme_parse_border(scanner, &data->overlay);
|
||||
break;
|
||||
case TOKEN_OVERLAY_STRETCH:
|
||||
token = theme_parse_stretch(scanner, &data->overlay);
|
||||
break;
|
||||
default:
|
||||
g_scanner_get_next_token(scanner);
|
||||
token = G_TOKEN_RIGHT_CURLY;
|
||||
break;
|
||||
}
|
||||
if (token != G_TOKEN_NONE)
|
||||
{
|
||||
/* error - cleanup for exit */
|
||||
theme_image_unref (data);
|
||||
*data_return = NULL;
|
||||
return token;
|
||||
}
|
||||
token = g_scanner_peek_next_token(scanner);
|
||||
}
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
|
||||
if (data->background && !data->background->filename)
|
||||
{
|
||||
g_scanner_warn (scanner, "Background image options specified without filename");
|
||||
theme_pixbuf_destroy (data->background);
|
||||
data->background = NULL;
|
||||
}
|
||||
|
||||
if (data->overlay && !data->overlay->filename)
|
||||
{
|
||||
g_scanner_warn (scanner, "Overlay image options specified without filename");
|
||||
theme_pixbuf_destroy (data->overlay);
|
||||
data->overlay = NULL;
|
||||
}
|
||||
|
||||
if (token != G_TOKEN_RIGHT_CURLY)
|
||||
{
|
||||
/* error - cleanup for exit */
|
||||
theme_image_unref (data);
|
||||
*data_return = NULL;
|
||||
return G_TOKEN_RIGHT_CURLY;
|
||||
}
|
||||
|
||||
/* everything is fine now - insert yer cruft */
|
||||
*data_return = data;
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static guint
|
||||
pixbuf_rc_style_parse (GtkRcStyle *rc_style,
|
||||
GtkSettings *settings,
|
||||
GScanner *scanner)
|
||||
|
||||
{
|
||||
static GQuark scope_id = 0;
|
||||
PixbufRcStyle *pixbuf_style = PIXBUF_RC_STYLE (rc_style);
|
||||
|
||||
guint old_scope;
|
||||
guint token;
|
||||
gint i;
|
||||
ThemeImage *img;
|
||||
|
||||
/* Set up a new scope in this scanner. */
|
||||
|
||||
if (!scope_id)
|
||||
scope_id = g_quark_from_string("pixbuf_theme_engine");
|
||||
|
||||
/* If we bail out due to errors, we *don't* reset the scope, so the
|
||||
* error messaging code can make sense of our tokens.
|
||||
*/
|
||||
old_scope = g_scanner_set_scope(scanner, scope_id);
|
||||
|
||||
/* Now check if we already added our symbols to this scope
|
||||
* (in some previous call to theme_parse_rc_style for the
|
||||
* same scanner.
|
||||
*/
|
||||
|
||||
if (!g_scanner_lookup_symbol(scanner, theme_symbols[0].name))
|
||||
{
|
||||
g_scanner_freeze_symbol_table(scanner);
|
||||
for (i = 0; i < G_N_ELEMENTS (theme_symbols); i++)
|
||||
g_scanner_scope_add_symbol(scanner, scope_id,
|
||||
theme_symbols[i].name,
|
||||
GINT_TO_POINTER(theme_symbols[i].token));
|
||||
g_scanner_thaw_symbol_table(scanner);
|
||||
}
|
||||
|
||||
/* We're ready to go, now parse the top level */
|
||||
|
||||
token = g_scanner_peek_next_token(scanner);
|
||||
while (token != G_TOKEN_RIGHT_CURLY)
|
||||
{
|
||||
switch (token)
|
||||
{
|
||||
case TOKEN_IMAGE:
|
||||
img = NULL;
|
||||
token = theme_parse_image(settings, scanner, pixbuf_style, &img);
|
||||
break;
|
||||
default:
|
||||
g_scanner_get_next_token(scanner);
|
||||
token = G_TOKEN_RIGHT_CURLY;
|
||||
break;
|
||||
}
|
||||
|
||||
if (token != G_TOKEN_NONE)
|
||||
return token;
|
||||
else
|
||||
pixbuf_style->img_list = g_list_append(pixbuf_style->img_list, img);
|
||||
|
||||
token = g_scanner_peek_next_token(scanner);
|
||||
}
|
||||
|
||||
g_scanner_get_next_token(scanner);
|
||||
|
||||
g_scanner_set_scope(scanner, old_scope);
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
pixbuf_rc_style_merge (GtkRcStyle *dest,
|
||||
GtkRcStyle *src)
|
||||
{
|
||||
if (PIXBUF_IS_RC_STYLE (src))
|
||||
{
|
||||
PixbufRcStyle *pixbuf_dest = PIXBUF_RC_STYLE (dest);
|
||||
PixbufRcStyle *pixbuf_src = PIXBUF_RC_STYLE (src);
|
||||
GList *tmp_list1, *tmp_list2;
|
||||
|
||||
if (pixbuf_src->img_list)
|
||||
{
|
||||
/* Copy src image list and append to dest image list */
|
||||
|
||||
tmp_list2 = g_list_last (pixbuf_dest->img_list);
|
||||
tmp_list1 = pixbuf_src->img_list;
|
||||
|
||||
while (tmp_list1)
|
||||
{
|
||||
if (tmp_list2)
|
||||
{
|
||||
tmp_list2->next = g_list_alloc();
|
||||
tmp_list2->next->data = tmp_list1->data;
|
||||
tmp_list2->next->prev = tmp_list2;
|
||||
|
||||
tmp_list2 = tmp_list2->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
pixbuf_dest->img_list = g_list_append (NULL, tmp_list1->data);
|
||||
tmp_list2 = pixbuf_dest->img_list;
|
||||
}
|
||||
|
||||
theme_image_ref (tmp_list1->data);
|
||||
tmp_list1 = tmp_list1->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent_class->merge (dest, src);
|
||||
}
|
||||
|
||||
/* Create an empty style suitable to this RC style
|
||||
*/
|
||||
static GtkStyle *
|
||||
pixbuf_rc_style_create_style (GtkRcStyle *rc_style)
|
||||
{
|
||||
return GTK_STYLE (g_object_new (PIXBUF_TYPE_STYLE, NULL));
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include <gtk/gtkrc.h>
|
||||
|
||||
typedef struct _PixbufRcStyle PixbufRcStyle;
|
||||
typedef struct _PixbufRcStyleClass PixbufRcStyleClass;
|
||||
|
||||
extern GType pixbuf_type_rc_style;
|
||||
|
||||
#define PIXBUF_TYPE_RC_STYLE pixbuf_type_rc_style
|
||||
#define PIXBUF_RC_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PIXBUF_TYPE_RC_STYLE, PixbufRcStyle))
|
||||
#define PIXBUF_RC_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIXBUF_TYPE_RC_STYLE, PixbufRcStyleClass))
|
||||
#define PIXBUF_IS_RC_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PIXBUF_TYPE_RC_STYLE))
|
||||
#define PIXBUF_IS_RC_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIXBUF_TYPE_RC_STYLE))
|
||||
#define PIXBUF_RC_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIXBUF_TYPE_RC_STYLE, PixbufRcStyleClass))
|
||||
|
||||
struct _PixbufRcStyle
|
||||
{
|
||||
GtkRcStyle parent_instance;
|
||||
|
||||
GList *img_list;
|
||||
};
|
||||
|
||||
struct _PixbufRcStyleClass
|
||||
{
|
||||
GtkRcStyleClass parent_class;
|
||||
};
|
||||
|
||||
void pixbuf_rc_style_register_type (GTypeModule *module);
|
||||
@@ -1,803 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "pixbuf.h"
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
GCache *pixbuf_cache = NULL;
|
||||
|
||||
static GdkPixbuf *
|
||||
bilinear_gradient (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
guchar *src_pixels = gdk_pixbuf_get_pixels (src);
|
||||
guchar *p1, *p2, *p3, *p4;
|
||||
guint dest_rowstride;
|
||||
guchar *dest_pixels;
|
||||
GdkPixbuf *result;
|
||||
int i, j, k;
|
||||
|
||||
p1 = src_pixels + (src_y - 1) * src_rowstride + (src_x - 1) * n_channels;
|
||||
p2 = p1 + n_channels;
|
||||
p3 = src_pixels + src_y * src_rowstride + (src_x - 1) * n_channels;
|
||||
p4 = p3 + n_channels;
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
guchar *p = dest_pixels + dest_rowstride *i;
|
||||
guint v[4];
|
||||
gint dv[4];
|
||||
|
||||
for (k = 0; k < n_channels; k++)
|
||||
{
|
||||
guint start = ((height - i) * p1[k] + (1 + i) * p3[k]) / (height + 1);
|
||||
guint end = ((height - i) * p2[k] + (1 + i) * p4[k]) / (height + 1);
|
||||
|
||||
dv[k] = (((gint)end - (gint)start) << 16) / (width + 1);
|
||||
v[k] = (start << 16) + dv[k] + 0x8000;
|
||||
}
|
||||
|
||||
for (j = width; j; j--)
|
||||
{
|
||||
for (k = 0; k < n_channels; k++)
|
||||
{
|
||||
*(p++) = v[k] >> 16;
|
||||
v[k] += dv[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
horizontal_gradient (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
guchar *src_pixels = gdk_pixbuf_get_pixels (src);
|
||||
guint dest_rowstride;
|
||||
guchar *dest_pixels;
|
||||
GdkPixbuf *result;
|
||||
int i, j, k;
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
guchar *p = dest_pixels + dest_rowstride *i;
|
||||
guchar *p1 = src_pixels + (src_y + i) * src_rowstride + (src_x - 1) * n_channels;
|
||||
guchar *p2 = p1 + n_channels;
|
||||
|
||||
guint v[4];
|
||||
gint dv[4];
|
||||
|
||||
for (k = 0; k < n_channels; k++)
|
||||
{
|
||||
dv[k] = (((gint)p2[k] - (gint)p1[k]) << 16) / (width + 1);
|
||||
v[k] = (p1[k] << 16) + dv[k] + 0x8000;
|
||||
}
|
||||
|
||||
for (j = width; j; j--)
|
||||
{
|
||||
for (k = 0; k < n_channels; k++)
|
||||
{
|
||||
*(p++) = v[k] >> 16;
|
||||
v[k] += dv[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
vertical_gradient (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
guchar *src_pixels = gdk_pixbuf_get_pixels (src);
|
||||
guchar *top_pixels, *bottom_pixels;
|
||||
guint dest_rowstride;
|
||||
guchar *dest_pixels;
|
||||
GdkPixbuf *result;
|
||||
int i, j;
|
||||
|
||||
top_pixels = src_pixels + (src_y - 1) * src_rowstride + (src_x) * n_channels;
|
||||
bottom_pixels = top_pixels + src_rowstride;
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
guchar *p = dest_pixels + dest_rowstride *i;
|
||||
guchar *p1 = top_pixels;
|
||||
guchar *p2 = bottom_pixels;
|
||||
|
||||
for (j = width * n_channels; j; j--)
|
||||
*(p++) = ((height - i) * *(p1++) + (1 + i) * *(p2++)) / (height + 1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
replicate_single (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guchar *pixels = (gdk_pixbuf_get_pixels (src) +
|
||||
src_y * gdk_pixbuf_get_rowstride (src) +
|
||||
src_x * n_channels);
|
||||
guchar r = *(pixels++);
|
||||
guchar g = *(pixels++);
|
||||
guchar b = *(pixels++);
|
||||
guint dest_rowstride;
|
||||
guchar *dest_pixels;
|
||||
guchar a = 0;
|
||||
GdkPixbuf *result;
|
||||
int i, j;
|
||||
|
||||
if (n_channels == 4)
|
||||
a = *(pixels++);
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
guchar *p = dest_pixels + dest_rowstride *i;
|
||||
|
||||
for (j = 0; j < width; j++)
|
||||
{
|
||||
*(p++) = r;
|
||||
*(p++) = g;
|
||||
*(p++) = b;
|
||||
|
||||
if (n_channels == 4)
|
||||
*(p++) = a;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
replicate_rows (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
guchar *pixels = (gdk_pixbuf_get_pixels (src) + src_y * src_rowstride + src_x * n_channels);
|
||||
guchar *dest_pixels;
|
||||
GdkPixbuf *result;
|
||||
guint dest_rowstride;
|
||||
int i;
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
memcpy (dest_pixels + dest_rowstride * i, pixels, n_channels * width);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
replicate_cols (GdkPixbuf *src,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guint n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
guint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
guchar *pixels = (gdk_pixbuf_get_pixels (src) + src_y * src_rowstride + src_x * n_channels);
|
||||
guchar *dest_pixels;
|
||||
GdkPixbuf *result;
|
||||
guint dest_rowstride;
|
||||
int i, j;
|
||||
|
||||
result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
|
||||
width, height);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (result);
|
||||
dest_pixels = gdk_pixbuf_get_pixels (result);
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
guchar *p = dest_pixels + dest_rowstride * i;
|
||||
guchar *q = pixels + src_rowstride * i;
|
||||
|
||||
guchar r = *(q++);
|
||||
guchar g = *(q++);
|
||||
guchar b = *(q++);
|
||||
guchar a = 0;
|
||||
|
||||
if (n_channels == 4)
|
||||
a = *(q++);
|
||||
|
||||
for (j = 0; j < width; j++)
|
||||
{
|
||||
*(p++) = r;
|
||||
*(p++) = g;
|
||||
*(p++) = b;
|
||||
|
||||
if (n_channels == 4)
|
||||
*(p++) = a;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Scale the rectangle (src_x, src_y, src_width, src_height)
|
||||
* onto the rectangle (dest_x, dest_y, dest_width, dest_height)
|
||||
* of the destination, clip by clip_rect and render
|
||||
*/
|
||||
static void
|
||||
pixbuf_render (GdkPixbuf *src,
|
||||
guint hints,
|
||||
GdkWindow *window,
|
||||
GdkBitmap *mask,
|
||||
GdkRectangle *clip_rect,
|
||||
gint src_x,
|
||||
gint src_y,
|
||||
gint src_width,
|
||||
gint src_height,
|
||||
gint dest_x,
|
||||
gint dest_y,
|
||||
gint dest_width,
|
||||
gint dest_height)
|
||||
{
|
||||
GdkPixbuf *tmp_pixbuf;
|
||||
GdkRectangle rect;
|
||||
int x_offset, y_offset;
|
||||
gboolean has_alpha = gdk_pixbuf_get_has_alpha (src);
|
||||
gint src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
gint src_n_channels = gdk_pixbuf_get_n_channels (src);
|
||||
|
||||
if (dest_width <= 0 || dest_height <= 0)
|
||||
return;
|
||||
|
||||
rect.x = dest_x;
|
||||
rect.y = dest_y;
|
||||
rect.width = dest_width;
|
||||
rect.height = dest_height;
|
||||
|
||||
if (hints & THEME_MISSING)
|
||||
return;
|
||||
|
||||
/* FIXME: Because we use the mask to shape windows, we don't use
|
||||
* clip_rect to clip what we draw to the mask, only to clip
|
||||
* what we actually draw. But this leads to the horrible ineffiency
|
||||
* of scale the whole image to get a little bit of it.
|
||||
*/
|
||||
if (!mask && clip_rect)
|
||||
{
|
||||
if (!gdk_rectangle_intersect (clip_rect, &rect, &rect))
|
||||
return;
|
||||
}
|
||||
|
||||
if (dest_width == src_width && dest_height == src_height)
|
||||
{
|
||||
tmp_pixbuf = g_object_ref (src);
|
||||
|
||||
x_offset = src_x + rect.x - dest_x;
|
||||
y_offset = src_y + rect.y - dest_y;
|
||||
}
|
||||
else if (src_width == 0 && src_height == 0)
|
||||
{
|
||||
tmp_pixbuf = bilinear_gradient (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else if (src_width == 0 && dest_height == src_height)
|
||||
{
|
||||
tmp_pixbuf = horizontal_gradient (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else if (src_height == 0 && dest_width == src_width)
|
||||
{
|
||||
tmp_pixbuf = vertical_gradient (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else if ((hints & THEME_CONSTANT_COLS) && (hints & THEME_CONSTANT_ROWS))
|
||||
{
|
||||
tmp_pixbuf = replicate_single (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else if (dest_width == src_width && (hints & THEME_CONSTANT_COLS))
|
||||
{
|
||||
tmp_pixbuf = replicate_rows (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else if (dest_height == src_height && (hints & THEME_CONSTANT_ROWS))
|
||||
{
|
||||
tmp_pixbuf = replicate_cols (src, src_x, src_y, dest_width, dest_height);
|
||||
|
||||
x_offset = rect.x - dest_x;
|
||||
y_offset = rect.y - dest_y;
|
||||
}
|
||||
else
|
||||
{
|
||||
double x_scale = (double)dest_width / src_width;
|
||||
double y_scale = (double)dest_height / src_height;
|
||||
guchar *pixels;
|
||||
GdkPixbuf *partial_src;
|
||||
|
||||
pixels = (gdk_pixbuf_get_pixels (src)
|
||||
+ src_y * src_rowstride
|
||||
+ src_x * src_n_channels);
|
||||
|
||||
partial_src = gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB,
|
||||
has_alpha,
|
||||
8, src_width, src_height,
|
||||
src_rowstride,
|
||||
NULL, NULL);
|
||||
|
||||
tmp_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
|
||||
has_alpha, 8,
|
||||
rect.width, rect.height);
|
||||
|
||||
gdk_pixbuf_scale (partial_src, tmp_pixbuf,
|
||||
0, 0, rect.width, rect.height,
|
||||
dest_x - rect.x, dest_y - rect.y,
|
||||
x_scale, y_scale,
|
||||
GDK_INTERP_BILINEAR);
|
||||
|
||||
gdk_pixbuf_unref (partial_src);
|
||||
|
||||
x_offset = 0;
|
||||
y_offset = 0;
|
||||
}
|
||||
|
||||
if (mask)
|
||||
{
|
||||
gdk_pixbuf_render_threshold_alpha (tmp_pixbuf, mask,
|
||||
x_offset, y_offset,
|
||||
rect.x, rect.y,
|
||||
rect.width, rect.height,
|
||||
128);
|
||||
}
|
||||
|
||||
gdk_pixbuf_render_to_drawable_alpha (tmp_pixbuf, window,
|
||||
x_offset, y_offset,
|
||||
rect.x, rect.y,
|
||||
rect.width, rect.height,
|
||||
GDK_PIXBUF_ALPHA_FULL, 128,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
0, 0);
|
||||
gdk_pixbuf_unref (tmp_pixbuf);
|
||||
}
|
||||
|
||||
ThemePixbuf *
|
||||
theme_pixbuf_new (void)
|
||||
{
|
||||
ThemePixbuf *result = g_new0 (ThemePixbuf, 1);
|
||||
result->filename = NULL;
|
||||
result->pixbuf = NULL;
|
||||
|
||||
result->stretch = TRUE;
|
||||
result->border_left = 0;
|
||||
result->border_right = 0;
|
||||
result->border_bottom = 0;
|
||||
result->border_top = 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
theme_pixbuf_destroy (ThemePixbuf *theme_pb)
|
||||
{
|
||||
theme_pixbuf_set_filename (theme_pb, NULL);
|
||||
g_free (theme_pb);
|
||||
}
|
||||
|
||||
void
|
||||
theme_pixbuf_set_filename (ThemePixbuf *theme_pb,
|
||||
const char *filename)
|
||||
{
|
||||
if (theme_pb->pixbuf)
|
||||
{
|
||||
g_cache_remove (pixbuf_cache, theme_pb->pixbuf);
|
||||
theme_pb->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (theme_pb->filename)
|
||||
g_free (theme_pb->filename);
|
||||
|
||||
if (filename)
|
||||
theme_pb->filename = g_strdup (filename);
|
||||
else
|
||||
theme_pb->filename = NULL;
|
||||
}
|
||||
|
||||
static guint
|
||||
compute_hint (GdkPixbuf *pixbuf,
|
||||
gint x0,
|
||||
gint x1,
|
||||
gint y0,
|
||||
gint y1)
|
||||
{
|
||||
int i, j;
|
||||
int hints = THEME_CONSTANT_ROWS | THEME_CONSTANT_COLS | THEME_MISSING;
|
||||
int n_channels = gdk_pixbuf_get_n_channels (pixbuf);
|
||||
|
||||
guchar *data = gdk_pixbuf_get_pixels (pixbuf);
|
||||
int rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
if (x0 == x1 || y0 == y1)
|
||||
return 0;
|
||||
|
||||
for (i = y0; i < y1; i++)
|
||||
{
|
||||
guchar *p = data + i * rowstride + x0 * n_channels;
|
||||
guchar r = p[0];
|
||||
guchar g = p[1];
|
||||
guchar b = p[2];
|
||||
guchar a = 0;
|
||||
|
||||
if (n_channels == 4)
|
||||
a = p[3];
|
||||
|
||||
for (j = x0; j < x1 ; j++)
|
||||
{
|
||||
if (n_channels != 4 || p[3] != 0)
|
||||
{
|
||||
hints &= ~THEME_MISSING;
|
||||
if (!(hints & THEME_CONSTANT_ROWS))
|
||||
goto cols;
|
||||
}
|
||||
|
||||
if (r != *(p++) ||
|
||||
g != *(p++) ||
|
||||
b != *(p++) ||
|
||||
(n_channels != 4 && a != *(p++)))
|
||||
{
|
||||
hints &= ~THEME_CONSTANT_ROWS;
|
||||
if (!(hints & THEME_MISSING))
|
||||
goto cols;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cols:
|
||||
for (i = y0 + 1; i < y1; i++)
|
||||
{
|
||||
guchar *base = data + y0 * rowstride + x0 * n_channels;
|
||||
guchar *p = data + i * rowstride + x0 * n_channels;
|
||||
|
||||
if (memcmp (p, base, n_channels * (x1 - x0)) != 0)
|
||||
{
|
||||
hints &= ~THEME_CONSTANT_COLS;
|
||||
return hints;
|
||||
}
|
||||
}
|
||||
|
||||
return hints;
|
||||
}
|
||||
|
||||
static void
|
||||
theme_pixbuf_compute_hints (ThemePixbuf *theme_pb)
|
||||
{
|
||||
int i, j;
|
||||
gint width = gdk_pixbuf_get_width (theme_pb->pixbuf);
|
||||
gint height = gdk_pixbuf_get_height (theme_pb->pixbuf);
|
||||
|
||||
if (theme_pb->border_left + theme_pb->border_right > width ||
|
||||
theme_pb->border_top + theme_pb->border_bottom > height)
|
||||
{
|
||||
g_warning ("Invalid borders specified for theme pixmap:\n"
|
||||
" %s,\n"
|
||||
"borders don't fit within the image", theme_pb->filename);
|
||||
if (theme_pb->border_left + theme_pb->border_right > width)
|
||||
{
|
||||
theme_pb->border_left = width / 2;
|
||||
theme_pb->border_right = (width + 1) / 2;
|
||||
}
|
||||
if (theme_pb->border_bottom + theme_pb->border_top > height)
|
||||
{
|
||||
theme_pb->border_top = height / 2;
|
||||
theme_pb->border_bottom = (height + 1) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
gint y0, y1;
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
y0 = 0;
|
||||
y1 = theme_pb->border_top;
|
||||
break;
|
||||
case 1:
|
||||
y0 = theme_pb->border_top;
|
||||
y1 = height - theme_pb->border_bottom;
|
||||
break;
|
||||
default:
|
||||
y0 = height - theme_pb->border_bottom;
|
||||
y1 = height;
|
||||
break;
|
||||
}
|
||||
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
gint x0, x1;
|
||||
|
||||
switch (j)
|
||||
{
|
||||
case 0:
|
||||
x0 = 0;
|
||||
x1 = theme_pb->border_left;
|
||||
break;
|
||||
case 1:
|
||||
x0 = theme_pb->border_left;
|
||||
x1 = width - theme_pb->border_right;
|
||||
break;
|
||||
default:
|
||||
x0 = width - theme_pb->border_right;
|
||||
x1 = width;
|
||||
break;
|
||||
}
|
||||
|
||||
theme_pb->hints[i][j] = compute_hint (theme_pb->pixbuf, x0, x1, y0, y1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
theme_pixbuf_set_border (ThemePixbuf *theme_pb,
|
||||
gint left,
|
||||
gint right,
|
||||
gint top,
|
||||
gint bottom)
|
||||
{
|
||||
theme_pb->border_left = left;
|
||||
theme_pb->border_right = right;
|
||||
theme_pb->border_top = top;
|
||||
theme_pb->border_bottom = bottom;
|
||||
|
||||
if (theme_pb->pixbuf)
|
||||
theme_pixbuf_compute_hints (theme_pb);
|
||||
}
|
||||
|
||||
void
|
||||
theme_pixbuf_set_stretch (ThemePixbuf *theme_pb,
|
||||
gboolean stretch)
|
||||
{
|
||||
theme_pb->stretch = stretch;
|
||||
|
||||
if (theme_pb->pixbuf)
|
||||
theme_pixbuf_compute_hints (theme_pb);
|
||||
}
|
||||
|
||||
GdkPixbuf *
|
||||
pixbuf_cache_value_new (gchar *filename)
|
||||
{
|
||||
GError *err = NULL;
|
||||
|
||||
GdkPixbuf *result = gdk_pixbuf_new_from_file (filename, &err);
|
||||
if (!result)
|
||||
{
|
||||
g_warning ("Pixbuf theme: Cannot load pixmap file %s: %s\n",
|
||||
filename, err->message);
|
||||
g_error_free (err);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
GdkPixbuf *
|
||||
theme_pixbuf_get_pixbuf (ThemePixbuf *theme_pb)
|
||||
{
|
||||
if (!theme_pb->pixbuf)
|
||||
{
|
||||
if (!pixbuf_cache)
|
||||
pixbuf_cache = g_cache_new ((GCacheNewFunc)pixbuf_cache_value_new,
|
||||
(GCacheDestroyFunc)gdk_pixbuf_unref,
|
||||
(GCacheDupFunc)g_strdup,
|
||||
(GCacheDestroyFunc)g_free,
|
||||
g_str_hash, g_direct_hash, g_str_equal);
|
||||
|
||||
theme_pb->pixbuf = g_cache_insert (pixbuf_cache, theme_pb->filename);
|
||||
|
||||
if (theme_pb->stretch)
|
||||
theme_pixbuf_compute_hints (theme_pb);
|
||||
}
|
||||
|
||||
return theme_pb->pixbuf;
|
||||
}
|
||||
|
||||
void
|
||||
theme_pixbuf_render (ThemePixbuf *theme_pb,
|
||||
GdkWindow *window,
|
||||
GdkBitmap *mask,
|
||||
GdkRectangle *clip_rect,
|
||||
guint component_mask,
|
||||
gboolean center,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
GdkPixbuf *pixbuf = theme_pixbuf_get_pixbuf (theme_pb);
|
||||
gint src_x[4], src_y[4], dest_x[4], dest_y[4];
|
||||
gint pixbuf_width = gdk_pixbuf_get_width (pixbuf);
|
||||
gint pixbuf_height = gdk_pixbuf_get_height (pixbuf);
|
||||
|
||||
if (!pixbuf)
|
||||
return;
|
||||
|
||||
if (theme_pb->stretch)
|
||||
{
|
||||
src_x[0] = 0;
|
||||
src_x[1] = theme_pb->border_left;
|
||||
src_x[2] = pixbuf_width - theme_pb->border_right;
|
||||
src_x[3] = pixbuf_width;
|
||||
|
||||
src_y[0] = 0;
|
||||
src_y[1] = theme_pb->border_top;
|
||||
src_y[2] = pixbuf_height - theme_pb->border_bottom;
|
||||
src_y[3] = pixbuf_height;
|
||||
|
||||
dest_x[0] = x;
|
||||
dest_x[1] = x + theme_pb->border_left;
|
||||
dest_x[2] = x + width - theme_pb->border_right;
|
||||
dest_x[3] = x + width;
|
||||
|
||||
dest_y[0] = y;
|
||||
dest_y[1] = y + theme_pb->border_top;
|
||||
dest_y[2] = y + height - theme_pb->border_bottom;
|
||||
dest_y[3] = y + height;
|
||||
|
||||
if (component_mask & COMPONENT_ALL)
|
||||
component_mask = (COMPONENT_ALL - 1) & ~component_mask;
|
||||
|
||||
#define RENDER_COMPONENT(X1,X2,Y1,Y2) \
|
||||
pixbuf_render (pixbuf, theme_pb->hints[Y1][X1], window, mask, clip_rect, \
|
||||
src_x[X1], src_y[Y1], \
|
||||
src_x[X2] - src_x[X1], src_y[Y2] - src_y[Y1], \
|
||||
dest_x[X1], dest_y[Y1], \
|
||||
dest_x[X2] - dest_x[X1], dest_y[Y2] - dest_y[Y1]);
|
||||
|
||||
if (component_mask & COMPONENT_NORTH_WEST)
|
||||
RENDER_COMPONENT (0, 1, 0, 1);
|
||||
|
||||
if (component_mask & COMPONENT_NORTH)
|
||||
RENDER_COMPONENT (1, 2, 0, 1);
|
||||
|
||||
if (component_mask & COMPONENT_NORTH_EAST)
|
||||
RENDER_COMPONENT (2, 3, 0, 1);
|
||||
|
||||
if (component_mask & COMPONENT_WEST)
|
||||
RENDER_COMPONENT (0, 1, 1, 2);
|
||||
|
||||
if (component_mask & COMPONENT_CENTER)
|
||||
RENDER_COMPONENT (1, 2, 1, 2);
|
||||
|
||||
if (component_mask & COMPONENT_EAST)
|
||||
RENDER_COMPONENT (2, 3, 1, 2);
|
||||
|
||||
if (component_mask & COMPONENT_SOUTH_WEST)
|
||||
RENDER_COMPONENT (0, 1, 2, 3);
|
||||
|
||||
if (component_mask & COMPONENT_SOUTH)
|
||||
RENDER_COMPONENT (1, 2, 2, 3);
|
||||
|
||||
if (component_mask & COMPONENT_SOUTH_EAST)
|
||||
RENDER_COMPONENT (2, 3, 2, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (center)
|
||||
{
|
||||
x += (width - pixbuf_width) / 2;
|
||||
y += (height - pixbuf_height) / 2;
|
||||
|
||||
pixbuf_render (pixbuf, 0, window, NULL, clip_rect,
|
||||
0, 0,
|
||||
pixbuf_width, pixbuf_height,
|
||||
x, y,
|
||||
pixbuf_width, pixbuf_height);
|
||||
}
|
||||
else
|
||||
{
|
||||
GdkPixmap *tmp_pixmap;
|
||||
GdkGC *tmp_gc;
|
||||
GdkGCValues gc_values;
|
||||
|
||||
tmp_pixmap = gdk_pixmap_new (window,
|
||||
pixbuf_width,
|
||||
pixbuf_height,
|
||||
-1);
|
||||
tmp_gc = gdk_gc_new (tmp_pixmap);
|
||||
gdk_pixbuf_render_to_drawable (pixbuf, tmp_pixmap, tmp_gc,
|
||||
0, 0,
|
||||
0, 0,
|
||||
pixbuf_width, pixbuf_height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
0, 0);
|
||||
gdk_gc_unref (tmp_gc);
|
||||
|
||||
gc_values.fill = GDK_TILED;
|
||||
gc_values.tile = tmp_pixmap;
|
||||
tmp_gc = gdk_gc_new_with_values (window,
|
||||
&gc_values, GDK_GC_FILL | GDK_GC_TILE);
|
||||
if (clip_rect)
|
||||
gdk_draw_rectangle (window, tmp_gc, TRUE,
|
||||
clip_rect->x, clip_rect->y, clip_rect->width, clip_rect->height);
|
||||
else
|
||||
gdk_draw_rectangle (window, tmp_gc, TRUE, x, y, width, height);
|
||||
|
||||
gdk_gc_unref (tmp_gc);
|
||||
gdk_pixmap_unref (tmp_pixmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include <gtk/gtkstyle.h>
|
||||
|
||||
typedef struct _PixbufStyle PixbufStyle;
|
||||
typedef struct _PixbufStyleClass PixbufStyleClass;
|
||||
|
||||
extern GType pixbuf_type_style;
|
||||
|
||||
#define PIXBUF_TYPE_STYLE pixbuf_type_style
|
||||
#define PIXBUF_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PIXBUF_TYPE_STYLE, PixbufStyle))
|
||||
#define PIXBUF_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIXBUF_TYPE_STYLE, PixbufStyleClass))
|
||||
#define PIXBUF_IS_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PIXBUF_TYPE_STYLE))
|
||||
#define PIXBUF_IS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIXBUF_TYPE_STYLE))
|
||||
#define PIXBUF_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIXBUF_TYPE_STYLE, PixbufStyleClass))
|
||||
|
||||
struct _PixbufStyle
|
||||
{
|
||||
GtkStyle parent_instance;
|
||||
};
|
||||
|
||||
struct _PixbufStyleClass
|
||||
{
|
||||
GtkStyleClass parent_class;
|
||||
};
|
||||
|
||||
void pixbuf_style_register_type (GTypeModule *module);
|
||||
|
||||
|
||||
@@ -1,196 +0,0 @@
|
||||
/* GTK+ Pixbuf Engine
|
||||
* Copyright (C) 1998-2000 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Written by Owen Taylor <otaylor@redhat.com>, based on code by
|
||||
* Carsten Haitzler <raster@rasterman.com>
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
/* internals */
|
||||
|
||||
typedef struct _ThemeData ThemeData;
|
||||
typedef struct _ThemeImage ThemeImage;
|
||||
typedef struct _ThemeMatchData ThemeMatchData;
|
||||
typedef struct _ThemePixbuf ThemePixbuf;
|
||||
|
||||
enum
|
||||
{
|
||||
TOKEN_IMAGE = G_TOKEN_LAST + 1,
|
||||
TOKEN_FUNCTION,
|
||||
TOKEN_FILE,
|
||||
TOKEN_STRETCH,
|
||||
TOKEN_RECOLORABLE,
|
||||
TOKEN_BORDER,
|
||||
TOKEN_DETAIL,
|
||||
TOKEN_STATE,
|
||||
TOKEN_SHADOW,
|
||||
TOKEN_GAP_SIDE,
|
||||
TOKEN_GAP_FILE,
|
||||
TOKEN_GAP_BORDER,
|
||||
TOKEN_GAP_START_FILE,
|
||||
TOKEN_GAP_START_BORDER,
|
||||
TOKEN_GAP_END_FILE,
|
||||
TOKEN_GAP_END_BORDER,
|
||||
TOKEN_OVERLAY_FILE,
|
||||
TOKEN_OVERLAY_BORDER,
|
||||
TOKEN_OVERLAY_STRETCH,
|
||||
TOKEN_ARROW_DIRECTION,
|
||||
TOKEN_D_HLINE,
|
||||
TOKEN_D_VLINE,
|
||||
TOKEN_D_SHADOW,
|
||||
TOKEN_D_POLYGON,
|
||||
TOKEN_D_ARROW,
|
||||
TOKEN_D_DIAMOND,
|
||||
TOKEN_D_OVAL,
|
||||
TOKEN_D_STRING,
|
||||
TOKEN_D_BOX,
|
||||
TOKEN_D_FLAT_BOX,
|
||||
TOKEN_D_CHECK,
|
||||
TOKEN_D_OPTION,
|
||||
TOKEN_D_CROSS,
|
||||
TOKEN_D_RAMP,
|
||||
TOKEN_D_TAB,
|
||||
TOKEN_D_SHADOW_GAP,
|
||||
TOKEN_D_BOX_GAP,
|
||||
TOKEN_D_EXTENSION,
|
||||
TOKEN_D_FOCUS,
|
||||
TOKEN_D_SLIDER,
|
||||
TOKEN_D_ENTRY,
|
||||
TOKEN_D_HANDLE,
|
||||
TOKEN_D_STEPPER,
|
||||
TOKEN_TRUE,
|
||||
TOKEN_FALSE,
|
||||
TOKEN_TOP,
|
||||
TOKEN_UP,
|
||||
TOKEN_BOTTOM,
|
||||
TOKEN_DOWN,
|
||||
TOKEN_LEFT,
|
||||
TOKEN_RIGHT,
|
||||
TOKEN_NORMAL,
|
||||
TOKEN_ACTIVE,
|
||||
TOKEN_PRELIGHT,
|
||||
TOKEN_SELECTED,
|
||||
TOKEN_INSENSITIVE,
|
||||
TOKEN_NONE,
|
||||
TOKEN_IN,
|
||||
TOKEN_OUT,
|
||||
TOKEN_ETCHED_IN,
|
||||
TOKEN_ETCHED_OUT,
|
||||
TOKEN_ORIENTATION,
|
||||
TOKEN_HORIZONTAL,
|
||||
TOKEN_VERTICAL
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
COMPONENT_NORTH_WEST = 1 << 0,
|
||||
COMPONENT_NORTH = 1 << 1,
|
||||
COMPONENT_NORTH_EAST = 1 << 2,
|
||||
COMPONENT_WEST = 1 << 3,
|
||||
COMPONENT_CENTER = 1 << 4,
|
||||
COMPONENT_EAST = 1 << 5,
|
||||
COMPONENT_SOUTH_EAST = 1 << 6,
|
||||
COMPONENT_SOUTH = 1 << 7,
|
||||
COMPONENT_SOUTH_WEST = 1 << 8,
|
||||
COMPONENT_ALL = 1 << 9
|
||||
} ThemePixbufComponent;
|
||||
|
||||
typedef enum {
|
||||
THEME_MATCH_GAP_SIDE = 1 << 0,
|
||||
THEME_MATCH_ORIENTATION = 1 << 1,
|
||||
THEME_MATCH_STATE = 1 << 2,
|
||||
THEME_MATCH_SHADOW = 1 << 3,
|
||||
THEME_MATCH_ARROW_DIRECTION = 1 << 4
|
||||
} ThemeMatchFlags;
|
||||
|
||||
typedef enum {
|
||||
THEME_CONSTANT_ROWS = 1 << 0,
|
||||
THEME_CONSTANT_COLS = 1 << 1,
|
||||
THEME_MISSING = 1 << 2
|
||||
} ThemeRenderHints;
|
||||
|
||||
struct _ThemePixbuf
|
||||
{
|
||||
gchar *filename;
|
||||
GdkPixbuf *pixbuf;
|
||||
gboolean stretch;
|
||||
gint border_left;
|
||||
gint border_right;
|
||||
gint border_bottom;
|
||||
gint border_top;
|
||||
guint hints[3][3];
|
||||
};
|
||||
|
||||
struct _ThemeMatchData
|
||||
{
|
||||
guint function; /* Mandatory */
|
||||
gchar *detail;
|
||||
|
||||
ThemeMatchFlags flags;
|
||||
|
||||
GtkPositionType gap_side;
|
||||
GtkOrientation orientation;
|
||||
GtkStateType state;
|
||||
GtkShadowType shadow;
|
||||
GtkArrowType arrow_direction;
|
||||
};
|
||||
|
||||
struct _ThemeImage
|
||||
{
|
||||
guint refcount;
|
||||
|
||||
ThemePixbuf *background;
|
||||
ThemePixbuf *overlay;
|
||||
ThemePixbuf *gap_start;
|
||||
ThemePixbuf *gap;
|
||||
ThemePixbuf *gap_end;
|
||||
|
||||
gchar recolorable;
|
||||
|
||||
ThemeMatchData match_data;
|
||||
};
|
||||
|
||||
|
||||
ThemePixbuf *theme_pixbuf_new (void);
|
||||
void theme_pixbuf_destroy (ThemePixbuf *theme_pb);
|
||||
void theme_pixbuf_set_filename (ThemePixbuf *theme_pb,
|
||||
const char *filename);
|
||||
GdkPixbuf * theme_pixbuf_get_pixbuf (ThemePixbuf *theme_pb);
|
||||
void theme_pixbuf_set_border (ThemePixbuf *theme_pb,
|
||||
gint left,
|
||||
gint right,
|
||||
gint top,
|
||||
gint bottom);
|
||||
void theme_pixbuf_set_stretch (ThemePixbuf *theme_pb,
|
||||
gboolean stretch);
|
||||
void theme_pixbuf_render (ThemePixbuf *theme_pb,
|
||||
GdkWindow *window,
|
||||
GdkBitmap *mask,
|
||||
GdkRectangle *clip_rect,
|
||||
guint component_mask,
|
||||
gboolean center,
|
||||
gint dest_x,
|
||||
gint dest_y,
|
||||
gint dest_width,
|
||||
gint dest_height);
|
||||
|
||||
|
||||
|
||||
extern GtkStyleClass pixmap_default_class;
|
||||
@@ -151,6 +151,8 @@ choose_better_style (XIMStyle style1, XIMStyle style2)
|
||||
return (s1 == XIMPreeditArea) ? style1 : style2;
|
||||
else if (u & XIMPreeditNothing)
|
||||
return (s1 == XIMPreeditNothing) ? style1 : style2;
|
||||
else if (u & XIMPreeditNone)
|
||||
return (s1 == XIMPreeditNone) ? style1 : style2;
|
||||
} else {
|
||||
s1 = style1 & STATUS_MASK;
|
||||
s2 = style2 & STATUS_MASK;
|
||||
@@ -223,6 +225,7 @@ setup_styles (GtkXIMInfo *info)
|
||||
XIMStyles *xim_styles = info->xim_styles;
|
||||
|
||||
settings_preference = info->status_style_setting|info->preedit_style_setting;
|
||||
info->style = 0;
|
||||
if (xim_styles)
|
||||
{
|
||||
for (i = 0; i < xim_styles->count_styles; i++)
|
||||
@@ -237,6 +240,8 @@ setup_styles (GtkXIMInfo *info)
|
||||
xim_styles->supported_styles[i]);
|
||||
}
|
||||
}
|
||||
if (info->style == 0)
|
||||
info->style = XIMPreeditNothing | XIMStatusNothing;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1084,6 +1089,8 @@ get_ic_real (GtkIMContextXIM *context_xim)
|
||||
name1 = XNPreeditAttributes;
|
||||
list1 = set_preedit_callback (context_xim);
|
||||
}
|
||||
else if ((context_xim->im_info->style & PREEDIT_MASK) == XIMPreeditNone)
|
||||
im_style |= XIMPreeditNone;
|
||||
else
|
||||
im_style |= XIMPreeditNothing;
|
||||
|
||||
@@ -1101,6 +1108,8 @@ get_ic_real (GtkIMContextXIM *context_xim)
|
||||
list2 = set_status_callback (context_xim);
|
||||
}
|
||||
}
|
||||
else if ((context_xim->im_info->style & STATUS_MASK) == XIMStatusNone)
|
||||
im_style |= XIMStatusNone;
|
||||
else
|
||||
im_style |= XIMStatusNothing;
|
||||
|
||||
|
||||
@@ -8,5 +8,6 @@ cat-id-tbl.c
|
||||
gtk20.pot
|
||||
gtk+.pot
|
||||
messages
|
||||
missing
|
||||
stamp-cat-id
|
||||
po2tbl.sed
|
||||
|
||||
+133
-34
@@ -1,3 +1,102 @@
|
||||
2003-02-01 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2003-02-01 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2003-01-29 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2003-01-28 Tõivo Leedjärv <toivo@linux.ee>
|
||||
|
||||
* et.po: Updated Estonian translation.
|
||||
|
||||
2003-01-26 He Qiangqiang <carton@linux.net.cn>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation by
|
||||
Funda Wang <fundawang@en2china.com>.
|
||||
|
||||
2003-01-26 Kang Jeong-Hee <Keizi@mail.co.kr>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2003-01-24 Zbigniew Chyla <cyba@gnome.pl>
|
||||
|
||||
* pl.po: Updated Polish translation by
|
||||
GNOME PL Team <translators@gnome.pl>.
|
||||
|
||||
2003-01-24 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2003-01-22 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
|
||||
|
||||
* es.po: Fixed bug #103087.
|
||||
|
||||
2003-01-22 Christian Rose <menthos@menthos.com>
|
||||
|
||||
* mn.po: Added Mongolian translation by
|
||||
Sanlig Badral <badral@chinggis.com>.
|
||||
|
||||
2003-01-20 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
* vi.po: Updated Vietnamese file
|
||||
|
||||
2003-01-19 Jordi Mallach <jordi@sindominio.net>
|
||||
|
||||
* ca.po: Partially updated Catalan translation.
|
||||
|
||||
2002-12-16 Daniel Yacob <locales@geez.org>
|
||||
|
||||
* am.po: Updated Amharic translation.
|
||||
|
||||
2003-01-16 German Poo-Caaman~o <gpoo@ubiobio.cl>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2003-01-16 Abel Cheung <maddog@linux.org.hk>
|
||||
|
||||
* zh_TW.po: Updated traditional Chinese translation.
|
||||
|
||||
2003-01-15 Gustavo Noronha Silva <kov@debian.org>
|
||||
|
||||
* pt_BR.po: commiting translation I wrongly sent to
|
||||
HEAD (updating translation)
|
||||
* saved in UTF-8
|
||||
|
||||
2003-01-15 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
|
||||
|
||||
* es.po: Fixed another couple of strings in Spanish translation.
|
||||
|
||||
2003-01-15 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
|
||||
|
||||
* es.po: Fixed a couple of strings in Spanish translation.
|
||||
|
||||
2003-01-15 Dmitry G. Mastrukov <dmitry@taurussoft.org>
|
||||
|
||||
* ru.po: updated Russian translation
|
||||
from Russian team <gnome-cyr@gnome.org>.
|
||||
|
||||
2003-01-13 Pauli Virtanen <pauli.virtanen@hut.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2003-01-13 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2003-01-07 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
|
||||
|
||||
* es.po: Fixed translation bug #102758.
|
||||
|
||||
2003-01-06 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
* .cvsignore: Added "missing".
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2002-12-20 Dmitry G. Mastrukov <dmitry@taurussoft.org>
|
||||
|
||||
* ru.po: updated Russian translation
|
||||
@@ -84,7 +183,7 @@ Wed Dec 11 14:06:50 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-12-07 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-12-07 Andras Timar <timar@gnome.hu>
|
||||
|
||||
@@ -116,7 +215,7 @@ Tue Dec 3 20:40:56 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-11-28 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-11-26 Daniel Elstner <daniel.elstner@gmx.net>
|
||||
|
||||
@@ -132,7 +231,7 @@ Tue Dec 3 20:40:56 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-11-15 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-11-22 Dmitry G. Mastrukov <dmitry@taurussoft.org>
|
||||
|
||||
@@ -159,11 +258,11 @@ Tue Dec 3 20:40:56 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-11-15 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-11-10 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-11-09 Christian Neumair <chris@gnome-de.org>
|
||||
|
||||
@@ -194,15 +293,15 @@ Tue Dec 3 20:40:56 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-10-21 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-10-04 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-09-24 German Poo Caaman~o <gpoo@ubiobio.cl>
|
||||
|
||||
* es.po: Fixed bug #93072 by Juan Manuel Garc?a Molina
|
||||
* es.po: Fixed bug #93072 by Juan Manuel Garc?Âa Molina
|
||||
<juanma_gm@wanadoo.es>.
|
||||
|
||||
2002-09-09 Yanko Kaneti <yaneti@declera.com>
|
||||
@@ -301,15 +400,15 @@ Mon Jun 03 16:42:53 2002 George Lebl <jirka@5z.com>
|
||||
|
||||
2002-04-28 Fatih Demir <kabalak@gtranslator.org>
|
||||
|
||||
* tr.po: Committed updated Turkish translation by ?mer.
|
||||
* tr.po: Committed updated Turkish translation by ?Âmer.
|
||||
|
||||
2002-04-23 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-04-22 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-04-22 Christophe Merlet <christophe@merlet.net>
|
||||
|
||||
@@ -376,7 +475,7 @@ Mon Jun 03 16:42:53 2002 George Lebl <jirka@5z.com>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2002-04-02 T?µivo Leedj?¤rv <toivo@linux.ee>
|
||||
2002-04-02 T?µivo Leedj?¤rv <toivo@linux.ee>
|
||||
|
||||
* et.po: Updated Estonian translation.
|
||||
|
||||
@@ -395,7 +494,7 @@ Mon Jun 03 16:42:53 2002 George Lebl <jirka@5z.com>
|
||||
|
||||
2002-03-28 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-03-28 Ole Laursen <olau@hardworking.dk>
|
||||
|
||||
@@ -432,7 +531,7 @@ Mon Jun 03 16:42:53 2002 George Lebl <jirka@5z.com>
|
||||
|
||||
2002-03-17 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-03-16 Christian Meyer <chrisime@gnome.org>
|
||||
|
||||
@@ -472,9 +571,9 @@ Fri Mar 08 13:09:28 2002 Matthias Warkus <mawarkus@gnome.org>
|
||||
|
||||
2002-03-06 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-03-06 Germ??n Poo-Caama?±o <gpoo@ubiobio.cl>
|
||||
2002-03-06 Germ??n Poo-Caama?±o <gpoo@ubiobio.cl>
|
||||
|
||||
* es.po: Updated spanish translation.
|
||||
|
||||
@@ -492,7 +591,7 @@ Fri Mar 08 13:09:28 2002 Matthias Warkus <mawarkus@gnome.org>
|
||||
|
||||
2002-03-03 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-03-03 Zbigniew Chyla <cyba@gnome.pl>
|
||||
|
||||
@@ -515,7 +614,7 @@ Fri Mar 08 13:09:28 2002 Matthias Warkus <mawarkus@gnome.org>
|
||||
|
||||
* da.po: Updated Danish translation.
|
||||
|
||||
2002-02-28 T?µivo Leedj?¤rv <leedjarv@interest.ee>
|
||||
2002-02-28 T?µivo Leedj?¤rv <leedjarv@interest.ee>
|
||||
|
||||
* et.po: Updated Estonian translation.
|
||||
|
||||
@@ -562,7 +661,7 @@ Fri Mar 08 13:09:28 2002 Matthias Warkus <mawarkus@gnome.org>
|
||||
|
||||
2002-02-23 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-02-23 Ole Laursen <olau@hardworking.dk>
|
||||
|
||||
@@ -574,19 +673,19 @@ Fri Mar 08 13:09:28 2002 Matthias Warkus <mawarkus@gnome.org>
|
||||
|
||||
2002-02-21 Fatih Demir <kabalak@gtranslator.org>
|
||||
|
||||
* tr.po: Committed updated Turkish translation by Nilg?¼n.
|
||||
* tr.po: Committed updated Turkish translation by Nilg?¼n.
|
||||
|
||||
Sun Feb 17 21:24:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* POTFILES.in: Add io-wbmp.c.
|
||||
|
||||
2002-02-16 T?µivo Leedj?¤rv <leedjarv@interest.ee>
|
||||
2002-02-16 T?µivo Leedj?¤rv <leedjarv@interest.ee>
|
||||
|
||||
* et.po: Updated Estonian translation.
|
||||
|
||||
2002-02-12 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-02-11 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
@@ -594,7 +693,7 @@ Sun Feb 17 21:24:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-02-10 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-02-09 Ole Laursen <olau@hardworking.dk>
|
||||
|
||||
@@ -626,7 +725,7 @@ Sun Feb 17 21:24:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-02-01 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-02-01 Ole Laursen <olau@hardworking.dk>
|
||||
|
||||
@@ -685,7 +784,7 @@ Thu Jan 31 09:41:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2002-01-11 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¥l) translation.
|
||||
* no.po: Updated Norwegian (bokm?Â¥l) translation.
|
||||
|
||||
2002-01-07 Zbigniew Chyla <cyba@gnome.pl>
|
||||
|
||||
@@ -722,7 +821,7 @@ Thu Jan 31 09:41:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-12-13 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-12-13 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
|
||||
|
||||
@@ -739,7 +838,7 @@ Thu Jan 31 09:41:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-12-05 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-12-04 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
|
||||
|
||||
@@ -751,9 +850,9 @@ Thu Jan 31 09:41:09 2002 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-12-01 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-11-28 Carlos Perell Mar?¯???½ <carlos@gnome-db.org>
|
||||
2001-11-28 Carlos Perell Mar?¯???½ <carlos@gnome-db.org>
|
||||
|
||||
* es.po: Some fixes.
|
||||
|
||||
@@ -771,7 +870,7 @@ Sat Nov 24 13:19:58 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-11-14 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-11-11 Fatih Demir <kabalak@gtranslator.org>
|
||||
|
||||
@@ -817,7 +916,7 @@ Sat Nov 24 13:19:58 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-09-27 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
Wed Sep 26 15:34:46 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
@@ -841,7 +940,7 @@ Wed Sep 26 15:34:46 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
2001-09-19 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-09-14 Christian Rose <menthos@menthos.com>
|
||||
|
||||
@@ -923,7 +1022,7 @@ Sat Sep 8 01:44:32 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
2001-08-06 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
* no.po: Updated Norwegian (bokm?¯???½) translation.
|
||||
|
||||
2001-07-28 Pablo Saratxaga <pablo@mandrakesoft.com>
|
||||
|
||||
@@ -1457,7 +1556,7 @@ Tue Dec 22 14:24:37 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Sat Dec 19 18:42:39 PST 1998 Shawn T. Amundson <amundson@gtk.org>
|
||||
|
||||
* sv.po: added translation by Tomas ?¯???½ren <stric@ing.umu.se>
|
||||
* sv.po: added translation by Tomas ?¯???½ren <stric@ing.umu.se>
|
||||
|
||||
Fri Dec 18 09:52:28 1998 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user