Compare commits

..

374 Commits

Author SHA1 Message Date
Hubert Figuiere
4a82c5c457 added .cvsignore 2005-06-15 01:02:55 +00:00
Hubert Figuiere
01f5b89802 beginning of a MacOS X port 2005-06-14 02:25:58 +00:00
Matthias Clasen
d9441df224 2.6.7 2005-04-13 03:20:53 +00:00
Matthias Clasen
724ab21b71 Sigh, revert another change 2005-04-12 20:24:28 +00:00
Matthias Clasen
3dd63f1ed0 Revert the changes to display broken images, since there are applications
2005-04-12  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkimage.c (gtk_image_calc_size, gtk_image_expose):
	Revert the changes to display broken images, since there
	are applications which rely on the old behaviour.
2005-04-12 20:03:01 +00:00
Ivan, Wong Yat Cheung
5d4b86ba20 Fix #300218:
2005-04-11  Ivan, Wong Yat Cheung  <email@ivanwong.info>

	Fix #300218:

	* gdk/win32/gdkselection-win32.c (gdk_selection_convert): Fix
	C99ism.

	* gtk/updateiconcache.c: Guard inclusion of unistd.h and
	utime.h.
2005-04-11 18:57:22 +00:00
Josep Puigdemont i Casamajó
18a13a1879 Updated Catalan translation. 2005-04-11 12:40:13 +00:00
Changwoo Ryu
4ce9da6762 Updated Korean translation.
2005-04-11  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.
2005-04-11 12:04:59 +00:00
Takeshi AIHANA
ddcb2048b9 Updated Japanese translation for v2.6.6.
2005-04-11  Takeshi AIHANA <aihana@gnome.gr.jp>
	* ja.po: Updated Japanese translation for v2.6.6.
2005-04-11 11:20:31 +00:00
Alexander Shopov
9435e87f62 Updated Bulgarian translation by Vladimir Petkov <vpetkov@i-space.org>
2005-04-11  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Vladimir Petkov <vpetkov@i-space.org>
2005-04-11 06:26:12 +00:00
Matthias Clasen
1f46efbdc0 Bump version 2005-04-11 06:18:29 +00:00
Matthias Clasen
64d9d86991 2.6.6 2005-04-11 05:35:10 +00:00
Josep Puigdemont i Casamajó
6da07f175b Fixed wrong date in Changelog file. 2005-04-11 00:45:12 +00:00
Josep Puigdemont i Casamajó
3bc3569279 Updated Catalan translation. 2005-04-11 00:39:02 +00:00
Matthias Clasen
5e53239f97 Some more fixes necessary to make building with gcc 4 work.
2005-04-09  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkinput-xfree.c:
	* gdk/x11/gdkinput-none.c:
	* gdk/gtk.symbols: Some more fixes necessary to
	make building with gcc 4 work.
2005-04-09 23:54:05 +00:00
Matthias Clasen
94af542f77 Add 16x16 versions of the zoom icons and of GTK_STOCK_INDEX. Some of the
2005-04-09  Matthias Clasen  <mclasen@redhat.com>

	Add 16x16 versions of the zoom icons and of
	GTK_STOCK_INDEX. Some of the images were taken from
	the hicolor icon theme, and were originally created
	by Jakub Steiner and Tuomas Kuosmanen. 	(#167515,
	Vincent Noel)

	* gtk/stock-icons/stock_index_16.png:
	* gtk/stock-icons/stock_zoom_1_16.png:
	* gtk/stock-icons/stock_zoom_fit_16.png:
	* gtk/stock-icons/stock_zoom_in_16.png:
	* gtk/stock-icons/stock_zoom_out_16.png: New images.

	* gtk/stock-icons/Makefile.am: Add the new images.

	* gtk/gtkiconfactory.c (get_default_icons): Add the new
	images.
2005-04-09 23:42:19 +00:00
Matthias Clasen
0613b44190 Don't display too many broken images. (#169870, Roman Kagan, patch by Ivan
2005-04-09  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkimage.c (gtk_image_calc_size, gtk_image_expose):
	Don't display too many broken images.  (#169870, Roman
	Kagan, patch by Ivan Wong)

	* gtk/gtkwidget.c (gtk_widget_unparent): Remove debugging
	output.  (#300013, Tommi Komulainen)

	* io-bmp.c (gdk_pixbuf__bmp_image_save_to_callback):
	Don't overflow the stack.  (Jakub Jelinek, Arjan van de Ven)
2005-04-09 21:53:39 +00:00
Artur Flinta
3f4ffba9e1 Updated Polish translation by GNOME PL Team.
2005-04-09  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-04-09 17:42:30 +00:00
Matthias Clasen
eeecf06586 Bump version 2005-04-09 06:14:01 +00:00
Matthias Clasen
191974398e 2.6.5 2005-04-09 05:59:14 +00:00
Matthias Clasen
1b842bb9e1 If a stock_id is unknown, display the missing image. (#169870, Steven
2005-04-08  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkimage.c (gtk_image_expose, gtk_image_calc_size):
	If a stock_id is unknown, display the missing image. (#169870,
	Steven Walter)
2005-04-09 02:51:02 +00:00
Matthias Clasen
0d9888e7c5 Use the same function as in updateiconcache.c. (spotted by Morten
2005-04-08  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconcache.c (icon_name_hash): Use the same function
	as in updateiconcache.c.  (spotted by Morten Welinder)
2005-04-09 02:14:06 +00:00
Matthias Clasen
43e76221dc Add bug ref. 2005-04-08 22:06:37 +00:00
Matthias Clasen
083e03fee5 Make this work when called from gtk_combo_box_destroy(). (#172999,
2005-04-08  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcombobox.c (gtk_combo_box_popdown): Make this
	work when called from gtk_combo_box_destroy().  (#172999,
	Christian Persch)
2005-04-08 22:03:53 +00:00
Matthias Clasen
361429159c Use cache->buffer, not cache.
2005-04-08  Matthias Clasen  <mclasen@redhat.com>

	* xdgmimecache.c (cache_magic_matchlet_compare_to_data)
	(cache_magic_matchlet_compare): Use cache->buffer, not
	cache.
2005-04-08 21:02:28 +00:00
Matthias Clasen
e77c3715e0 No debug output, please. 2005-04-08 20:39:04 +00:00
Matthias Clasen
a3cd26291b Fix double-click to autosize treeview columns. This was probably broken
2005-04-08  Matthias Clasen  <mclasen@redhat.com>

	Fix double-click to autosize treeview columns. This was
	probably broken since 2.2 ! (#169675)

	* gtk/gtktreeview.c (gtk_tree_view_button_press): Leave the
	"user-resized" state of the column on a double-click to
	autosize.
	(gtk_tree_view_button_press, gtk_tree_view_motion_resize_column):
	Enter the "user-resized" state of the column only if a drag
	actually changes the column width, not on any click.
2005-04-08 12:53:44 +00:00
Matthias Clasen
f425dd1c83 Document that GtkButtonBox ignores the homogeneous property. (#171412,
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtkbbox.sgml: Document that GtkButtonBox ignores
	the homogeneous property.  (#171412, Morten Welinder)
2005-04-07 19:40:05 +00:00
Matthias Clasen
c0e5adcf3b Avoid unaligned access. (#172947)
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* gtk/updateiconcache.c (write_card32, write_card16): Avoid
	unaligned access.  (#172947)
2005-04-07 19:13:09 +00:00
Matthias Clasen
116699db55 Some fixes from Morten Welinder (#172947):
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	Some fixes from Morten Welinder (#172947):

	* gtk/updateiconcache.c (icon_name_hash): Make this compiler-
	and platform-independent.
	(is_cache_up_to_date): Don't compare mtimes is a stat call failed.
	(build_cache): Error out if a stat fails.
2005-04-07 18:45:09 +00:00
Matthias Clasen
aee316885c Make the docs of GKT_SELECTION_MULTIPLE more accurate by making them more
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtkenums.sgml: Make the docs of GKT_SELECTION_MULTIPLE
	more accurate by making them more vague.  (#167088,
	Ken Siersma)
2005-04-07 14:41:09 +00:00
Kwok-Koon Cheung
c1b6d93ca4 Updated traditional Chinese translation from GNOME HK Team
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
2005-04-07 14:14:08 +00:00
Matthias Clasen
97f2e31019 Add a sentence about toggling. (#159382, Worik Stanton)
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtkradiobutton.sgml: Add a sentence about
	toggling.  (#159382, Worik Stanton)
2005-04-07 13:03:20 +00:00
Kwok-Koon Cheung
be133686bc Updated traditional Chinese translation from GNOME HK Team
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
2005-04-07 12:40:48 +00:00
Matthias Clasen
1f469ff062 Return TRUE if the cache is newer than the directory. (#172852, Jacob
* gtk/updateiconcache.c (is_cache_up_to_date): Return
	TRUE if the cache is newer than the directory.  (#172852,
	Jacob Kroon)
2005-04-07 12:39:51 +00:00
Matthias Clasen
471ea94975 Replace an explicit pkg-config by $PKG_CONFIG. (#168074, Hans-Wolfgang
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Replace an explicit pkg-config by
	$PKG_CONFIG.  (#168074, Hans-Wolfgang Loidl)
2005-04-07 06:16:07 +00:00
Matthias Clasen
644c33a496 Initialize the colormap to zero. (#171762, David Costanzo)
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* io-bmp.c (DecodeColormap): Initialize the colormap to
	zero.  (#171762, David Costanzo)
2005-04-07 05:45:53 +00:00
Matthias Clasen
ba516ae783 Ignore regions which fall completely outside the line. (#165862, Felipe
2005-04-07  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkpango.c (gdk_pango_layout_line_get_clip_region):
	Ignore regions which fall completely outside the line.
	(#165862, Felipe Heidrich)
2005-04-07 05:38:05 +00:00
Matthias Clasen
711600ea49 Another fix 2005-04-07 05:27:46 +00:00
Matthias Clasen
31790d0ed5 More build fixes 2005-04-07 05:09:33 +00:00
Matthias Clasen
a4a4b8dca7 Make it compile 2005-04-07 04:45:31 +00:00
Matthias Clasen
ebc65e70a9 Pass the target list to the underlying dnd implementation, otherwise we
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_enable_model_drag_source)
	(gtk_tree_view_enable_model_drag_dest): Pass the target list
	to the underlying dnd implementation, otherwise we miss the
	target info in the drag-data-received signal.  (#164085, Jorn
	Baayen)
2005-04-07 03:54:57 +00:00
Matthias Clasen
accb923fd7 Use canonical property names for g_object_notify() calls. (#171746, Morten
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/*.c, gdk/gdkdisplaymanager.c: Use canonical property
	names for g_object_notify() calls.  (#171746, Morten Welinder)
2005-04-07 02:53:14 +00:00
Matthias Clasen
41a7198237 Allow resetting search-column to -1, and document it. (#172891, Lorenzo
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_set_search_column): Allow
	resetting search-column to -1, and document it.  (#172891,
	Lorenzo Gil Sanchez)
2005-04-07 02:44:17 +00:00
Matthias Clasen
38d6008229 Avoid a few unnecessary calls to gdk_window_get_pointer(). (#168015, Billy
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_motion_resize_column)
	(gtk_tree_view_bin_expose): Avoid a few unnecessary calls
	to gdk_window_get_pointer(). (#168015, Billy Biggs)
2005-04-06 16:46:18 +00:00
Matthias Clasen
23ec028870 Fix the EWMH link, noticed by Kristof Vansant.
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwindow.c (gtk_window_set_keep_below): Fix the EWMH link,
	noticed by Kristof Vansant.
2005-04-06 15:08:33 +00:00
Matthias Clasen
83d8d721d6 Make it compile 2005-04-06 13:49:08 +00:00
Matthias Clasen
32828d8888 Remove Makefile.in.in. (#171092, Stefan Kasal)
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* po/.cvsignore, po-properties/.cvsignore: Remove
	Makefile.in.in.  (#171092, Stefan Kasal)
2005-04-06 13:09:04 +00:00
Matthias Clasen
aede454ea2 Don't modify scanner->value, copy it first. (#165693, Tommi Komulainen)
2005-04-06  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkrc.c (gtk_rc_parse_style): Don't modify scanner->value,
	copy it first.  (#165693, Tommi Komulainen)
2005-04-06 12:46:41 +00:00
Maxim Dziumanenko
e267227ea9 Updated Ukrainian translation.
2005-04-06  Maxim Dziumanenko <mvd@mylinux.com.ua>

	* Updated Ukrainian translation.
2005-04-06 11:45:30 +00:00
Danilo Šegan
3d5439d209 Updated Serbian translation. 2005-04-06 06:01:58 +00:00
Matthias Clasen
2f73f9b0c5 Implement grab_focus for GtkComboBox and GtkComboBoxEntry. (#171912,
2005-04-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcomboboxentry.c (gtk_combo_box_entry_grab_focus):
	* gtk/gtkcombobox.c (gtk_combo_box_grab_focus): Implement
	grab_focus for GtkComboBox and GtkComboBoxEntry.  (#171912,
	Gustavo Carneiro)
2005-04-06 04:00:55 +00:00
Matthias Clasen
7d83ed0479 Store icon caches along with the mtimes of the toplevel directories. The
* gtk/gtkicontheme.c: Store icon caches along with the
	mtimes of the toplevel directories. The previous
	mechanism of a hashtable-per-theme caused duplicate icon
	caches for the same toplevel directory to be created.
	(#170030)
2005-04-06 03:34:27 +00:00
Matthias Clasen
7eb1d7a0af Protect the license and credits buttons from being affected by
2005-04-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c (gtk_about_dialog_init): Protect
	the license and credits buttons from being affected by
	gtk_widget_show_all().  (#172724)
2005-04-05 22:34:23 +00:00
Hendrik Richter
19384c9b59 Updated German translation.
2005-04-05  Hendrik Richter  <hendrik@gnome-de.org>

	* de.po: Updated German translation.
2005-04-05 18:30:44 +00:00
Matthias Clasen
baa5fad09d Keep a reference to the item. (#167920, Hazael Maldonado Torres)
2005-04-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkmenushell.c (gtk_menu_shell_activate_item): Keep a
	reference to the item.  (#167920, Hazael Maldonado Torres)
2005-04-05 13:51:12 +00:00
Matthias Clasen
71bd8c3b2a Add some more docs on interactive search.
2005-04-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_set_search_column): Add some
	more docs on interactive search.
2005-04-05 12:52:28 +00:00
Matthias Clasen
65f2672fa5 Mention enter and leave events. (#167546, Billy Biggs)
2005-04-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtktooltips.sgml: Mention enter and leave
	events.  (#167546, Billy Biggs)
2005-04-05 12:25:36 +00:00
Matthias Clasen
952753549d Updates 2005-04-05 05:20:53 +00:00
Tor Lillqvist
58124bee3b Remove duplicate line. 2005-04-05 01:46:17 +00:00
Tor Lillqvist
5605b025a9 Handle 16 colour display mode. For some reason, in this mode
2005-04-05  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkvisual-win32.c (_gdk_visual_init): Handle 16 colour
	display mode. For some reason, in this mode GetDeviceCaps(BITSPIXEL)
	returns 1 (but GetDeviceCaps(NUMCOLORS)	does return 16). (#143415)
2005-04-05 01:42:10 +00:00
Žygimantas Beručka
44704ba35e Updated Lithuanian translation.
2005-04-05  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-04-05 00:36:50 +00:00
Tor Lillqvist
328d4c1b62 Don't force 24bpp GdkVisual on 32bpp displays. (#140706)
2005-04-05  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkvisual-win32.c (_gdk_visual_init): Don't force
	24bpp GdkVisual on 32bpp displays. (#140706)
2005-04-05 00:35:42 +00:00
Matthias Clasen
ad92aa1fdc Add bug ref 2005-04-05 00:16:18 +00:00
Jonathan Blandford
b2b5a5e699 change to use gtk_tree_view_real_expand_row() instead of doing this by
Mon Apr  4 19:13:23 2005  Jonathan Blandford  <jrb@redhat.com>

        * gtk/gtktreeview.c (gtk_tree_view_expand_all): change to use
        gtk_tree_view_real_expand_row() instead of doing this by hand.
2005-04-04 23:41:32 +00:00
Manish Singh
f811cbc51e cast combo->priv->entry to GTK_ENTRY()
Mon Apr  4 14:33:55 2005  Manish Singh  <yosh@gimp.org>

        * gtk/gtkcomboboxentry.c (gtk_combo_box_entry_get_active_text):
        cast combo->priv->entry to GTK_ENTRY()
2005-04-04 21:36:14 +00:00
Vincent van Adrighem
454f52a08d Translation updated by Tino Meinen.
2005-04-04  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-04-04 19:58:18 +00:00
Duarte Loreto
97e388da8d Updated Portuguese translation.
2005-04-04  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-04-04 19:27:27 +00:00
Søren Sandmann
2b52c63bd8 Translate x, y into widget coordinates instead of root coordinates. Patch
Mon Apr  4 12:14:35 2005  Søren Sandmann  <sandmann@redhat.com>

	* gtk/gtkmenu.c (gtk_menu_handle_scrolling): Translate x, y into
	widget coordinates instead of root coordinates. Patch from Jorn
	Baayen. (#172236)
2005-04-04 16:18:01 +00:00
Matthias Clasen
c57ce40bc0 Add forgotten files 2005-04-04 13:19:12 +00:00
Funda Wang
a0985bc4bd Updated Simplified Chinese translation 2005-04-04 06:51:11 +00:00
Matthias Clasen
4fa0bab9fe Take padding into account when calculating max_layout_width.
2005-04-04  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconview.c (gtk_icon_view_calculate_item_size): Take
	padding into account when calculating max_layout_width.
2005-04-04 05:48:31 +00:00
Matthias Clasen
4df377100a Use gtk_accel_map_change_entry(), so that reusing the same action name
2005-04-04  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkactiongroup.c (gtk_action_group_add_action_with_accel):
	Use gtk_accel_map_change_entry(), so that reusing the same
	action name works.  (#170727, Paolo Borelli)
2005-04-04 04:38:52 +00:00
Tor Lillqvist
a5ebf737b3 New debugging function, to log a clipboard format name symbolically.
2005-04-04  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkmain.c (_gdk_win32_cf_to_string): New debugging
	function, to log a clipboard format name symbolically.
	(_gdk_win32_data_to_string): Also new, to log random data bytes.

	Merge from HEAD:

	* gdk/win32/gdkdisplay-win32.c (_win32_on_clipboard_change): Print
	debugging output only if asked for, not always.

	* gdk/win32/gdkmain-win32.c (_gdk_win32_key_to_string): New
	debugging function. As GetKeyNameText() returns a localized key
	name we need to convert it to UTF-8.

	* gdk/win32/gdkprivate-win32.h
	* gdk/win32/gdkevents-win32.c: : Declare new functions, use them.

	Implement delayed rendering on Win32, specifically for transfering
	images through the clipboard from GTK+ apps to other
	apps (#168173, implementation by Ivan Wong):

	* gdk/win32/gdkevents-win32.c (gdk_event_translate):
	Handle WM_RENDERFORMAT.

	* gdk/win32/gdkprivate-win32.h
	* gdk/win32/gdkglobals-win32.c: Add _format_atom_table,
	_delayed_rendering_data and _image_bmp.

	* gdk/win32/gdkmain-win32.c: Initialize _image_bmp.

	* gdk/win32/gdkproperty-win32.c (gdk_property_change):
	Accept formats other than GDK_TARGET_STRING or _utf8_string, and
	assume they are handled through delayed rendering.

	* gdk/win32/gdkselection-win32.c (gdk_selection_convert):
	Return all available formats (including those registered by GTK+
	apps) on request_targets.
	(gdk_selection_property_get): We should append a zero byte like
	X11 does.
	(gdk_win32_selection_add_targets): New function, for
	gtkselection's use. Win32 requires that the clipboard owner
	registers all valid formats even if the owner wants delayed
	rendering.
	(_gdk_win32_selection_convert_to_dib): New function. Convert
	images to DIB using gdk-pixbuf.

	* gdk/win32/gdkwin32.h: Declare gdk_win32_selection_add_targets().

	* gtk/gtkselection.c (gtk_selection_add_target,
	gtk_selection_add_targets): Call gdk_win32_selection_add_targets()
	to register target formats.

	* gdk/gdk.symbols: Add gdk_win32_selection_add_targets().
2005-04-03 23:40:42 +00:00
Raphael Higino
534b078bd0 Updated pt_BR translation 2005-04-03 22:55:46 +00:00
Alessio Frusciante
2e619741f9 Updated Italian translation. 2005-04-03 21:28:50 +00:00
Hans Breuer
6d300612ea let dash_offset shift the start of the line pattern not the start of the
2005-04-03  Hans Breuer  <hans@breuer.org>

	* gdk/win32/gdkdrawable-win32.c : let dash_offset shift the start of
	the line pattern not the start of the line. Fixes bug #171641.

	* gtk/makefile.msc.in : follow .symbols changes
2005-04-03 20:36:39 +00:00
Hans Breuer
11dbe5a336 follow .symbols changes
2005-04-03  Hans Breuer  <hans@breuer.org>

	* makefile.msc : follow .symbols changes
2005-04-03 20:31:16 +00:00
Gabor Kelemen
e3c1c3ebc7 Hungarian translation updated.
2005-04-03  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-04-03 14:15:22 +00:00
Matthias Clasen
3cbf65b150 Sync to latest upstream, support mmapped mime.cache:
2005-04-02  Matthias Clasen  <mclasen@redhat.com>

        Sync to latest upstream, support mmapped
        mime.cache:

        * xdgmimecache.[hc]: Implement the xgdmime
        api on top of the mmapped cache.

        * xdgmime.c: Load caches, and use the cache-based
        implementation of the api, if cache files are
        present.
2005-04-03 03:56:50 +00:00
Matthias Clasen
999ac79a9d Move documentation inline, document if add_target functions append or
2005-04-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkselection.c: Move documentation inline, document
	if add_target functions append or prepend.  (#172350,
	Jon-Kare Hellan)
2005-04-01 21:19:16 +00:00
Matthias Clasen
070daa3e8b Make gtk_combo_box_get_active_text do the right thing for GtkComboBoxEntry
2005-04-01  Matthias Clasen  <mclasen@redhat.com>

	Make gtk_combo_box_get_active_text do the right thing for
	GtkComboBoxEntry (#171373, Robert Staudinger)

	* gtk/gtkcombobox.h: Add a get_active_text vfunc.

	* gtk/gtkcombobox.c (gtk_combo_box_real_get_active_text): And
	implement it here.

	* gtk/gtkcomboboxentry.c (gtk_combo_box_entry_get_active_text):
	Implement get_active_text by always returning the content of
	the entry.
2005-04-01 20:57:20 +00:00
Steven Michael Murphy
eb2860ed5b Added new Language, Kinyarwanda (rw), to this package 2005-04-01 03:22:22 +00:00
Francisco Javier F. Serrador
795f188167 Updated Spanish translation.
2005-04-01  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-03-31 22:38:58 +00:00
Laurent Dhima
225b6c68ca Updated Albanian translation.
2005-03-31  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-03-31 17:27:04 +00:00
Sven Neumann
edc976e701 gtk/gtkbutton.c fixed gtk-doc comments.
2005-03-31  Sven Neumann  <sven@gimp.org>

	* gtk/gtkbutton.c
	* gtk/gtkiconview.c: fixed gtk-doc comments.
2005-03-31 17:03:22 +00:00
Josep Puigdemont i Casamajó
666cb48b66 Updated Catalan translation. 2005-03-31 09:45:35 +00:00
Christian Rose
fe1c586aac Updated Swedish translation.
2005-03-31  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-03-31 09:41:59 +00:00
Miloslav Trmac
edb60ee90f Updated Czech translation.
2005-03-31  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-03-31 09:10:39 +00:00
Ankitkumar Rameshchandra Patel
481affcd1b ankit@redhat.com * Updated Gujarati Translation 2005-03-31 04:42:09 +00:00
Adam Weinberger
2ade88a005 Updated Canadian English translation.
2005-03-30  Adam Weinberger  <adamw@gnome.org>

	* en_CA.po: Updated Canadian English translation.
2005-03-31 04:34:06 +00:00
Federico Mena Quintero
273f24071c Fix #170755:
2005-03-30  Federico Mena Quintero  <federico@ximian.com>

	Fix #170755:

	* gtk/gtktreeview.c (gtk_tree_view_row_changed): Only stop editing
	if the row which changed is the same as the row being edited.
2005-03-30 21:46:01 +00:00
Matthias Clasen
a39beed503 Document BMP saving support.
2005-03-30  Matthias Clasen  <mclasen@redhat.com>

	* gdk-pixbuf-io.c: Document BMP saving support.

	* io-bmp.c: Support saving as BMP. (168173, Ivan Wong)
2005-03-30 19:42:30 +00:00
Matthias Clasen
86655ab0af Make enable_search control only typeahead, not C-f. (#170435, Sven
2005-03-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_real_start_interactive_search):
	Make enable_search control only typeahead, not C-f.  (#170435,
	Sven Neumann)
	(gtk_tree_view_start_interactive_search): Pass keybinding == TRUE.

VS: ----------------------------------------------------------------------
2005-03-30 18:23:23 +00:00
Matthias Clasen
86505b733a Don't accept n_targets == -1. (clipboard_unset): unref the old_data, not
2005-03-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkclipboard.c (gtk_clipboard_set_can_store):
	Don't accept n_targets == -1.
	(clipboard_unset): unref the old_data, not the
	user_data which we have just cleared.  (#172038, Sven
	Neumann)
2005-03-30 17:35:42 +00:00
Matthias Clasen
b3cdfe0c19 Don't segfault if somebody tries to popup an unrealized combo box.
2005-03-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcombobox.c (gtk_combo_box_popup): Don't
	segfault if somebody tries to popup an unrealized
	combo box.  (#172031, Felipe Heidrich)
2005-03-30 17:10:47 +00:00
Tor Lillqvist
84f00317a8 Merge from HEAD:
2005-03-30  Tor Lillqvist  <tml@novell.com>

	Merge from HEAD:

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
	WM_MOUSEMOVE, don't check if this process owns the active
	window. This makes cross-application widget embedding work better.
	On WM_MOVE, don't bother checking for window visibility.
2005-03-30 08:38:28 +00:00
Tor Lillqvist
68c63c6b81 Fix event filter handling. If an event filter (global, client message
2005-03-30  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): Fix event
	filter handling. If an event filter (global, client message
	filter, of window-specific) returns GDK_FILTER_CONTINUE,
	continue as if nothing happened. If it returns
	GDK_FILTER_REMOVE or GDK_FILTER_TRANSLATE, return TRUE from
	gdk_event_translate() which means that DefWindowProc() will
	not be called.
	(gdk_event_translate): Fix client message handling. Append a
	GDK_CLIENT_EVENT unless there is a filter that matches and returns
	something other than GDK_FILTER_CONTINUE. (#135552)
2005-03-30 08:33:53 +00:00
Tor Lillqvist
f10b6fac17 Typo. 2005-03-30 08:26:14 +00:00
Tor Lillqvist
c93e7115ab The state field should represent the state before the event, like on X11.
2005-03-30  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkevents-win32.c (build_pointer_event_state): The
	state field should represent the state before the event, like on
	X11. (#169753)
2005-03-30 08:01:04 +00:00
Kwok-Koon Cheung
e7e0df5b40 Updated traditional Chinese translation from GNOME HK Team
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
2005-03-30 03:48:55 +00:00
Matthias Clasen
fc87b10947 Document the need to refilter if parameters of the visibility function
2005-03-29  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_set_visible_func):
	Document the need to refilter if parameters of the visibility function
	change.  (#169516, Olivier Sessink)
2005-03-29 06:02:49 +00:00
Matthias Clasen
294abe80a2 Fix the update areas for incremental loading of compressed tgas. (#171883,
2005-03-29  Matthias Clasen  <mclasen@redhat.com>

	* io-tga.c (parse_rle_data): Fix the update areas for incremental
	loading of compressed tgas.  (#171883, David Costanzo)
2005-03-29 05:19:13 +00:00
Matthias Clasen
06821e8278 Sync to latest upstream 2005-03-28 19:29:21 +00:00
Jeroen Zwartepoorte
155158a187 Make the preview label ellipsize so the dialog layout stays constant.
2005-03-28  Jeroen Zwartepoorte  <jeroen.zwartepoorte@gmail.com>

	* gtk/gtkfilechooserdefault.c: (update_preview_widget_visibility): Make
	the preview label ellipsize so the dialog layout stays constant.
	(#171398)
2005-03-28 17:14:59 +00:00
Alessio Frusciante
5145e72a09 Updated Italian translation. 2005-03-28 17:07:38 +00:00
Matthias Clasen
5c07391273 Don't pop up the context menu of the search entry if it is not visible.
2005-03-28  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_key_press): Don't pop up
	the context menu of the search entry if it is not visible.
	(#169534, Billy Biggs)
2005-03-28 06:01:32 +00:00
Matthias Clasen
c54b18c2c8 Use the correct update regions for compressed bmps. (#150664, Owen Taylor,
2005-03-27  Matthias Clasen  <mclasen@redhat.com>

	* io-bmp.c (DoCompressed): Use the correct update regions for
	compressed bmps.  (#150664, Owen Taylor, test images provided
	by David Costanzo)
2005-03-28 04:12:32 +00:00
Manish Singh
66adc460b2 reject 0-sized buffers as corrupt header data. Fixes bug #171707.
Sun Mar 27 19:59:52 2005  Manish Singh  <yosh@gimp.org>

        * io-bmp.c (grow_buffer): reject 0-sized buffers as corrupt header
        data. Fixes bug #171707.
2005-03-28 04:02:12 +00:00
Raphael Higino
a9356c684e Updated pt_BR translation 2005-03-27 21:17:43 +00:00
Tor Lillqvist
86c7bd9518 The state should be the pre-event state. (#169753)
* gdk/win32/gdkevents-win32.c (build_pointer_event_state): The
	state should be the pre-event state. (#169753)
2005-03-27 19:23:27 +00:00
Matthias Clasen
24ee0dcce1 Remove a call whose result was unused and leaked. (#170776, Kjartan
2005-03-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserbutton.c (update_combo_box): Remove
	a call whose result was unused and leaked.  (#170776,
	Kjartan Maraas)
2005-03-23 14:07:39 +00:00
Matthias Clasen
53534897cf Some cleanups to the GtkDialog code: (#170746, Morten Welinder) Simplify,
2005-03-23  Matthias Clasen  <mclasen@redhat.com>

	Some cleanups to the GtkDialog code:  (#170746,
	Morten Welinder)
	* gtk/gtkdialog.c (action_widget_activated): Simplify,
	use _gtk_dialog_get_response_for_widget.
	(gtk_dialog_add_action_widget): Use the correct signal
	id for non-buttons.
	(gtk_dialog_set_response_sensitive):
	(gtk_dialog_set_default_response): Use get_response_data.
	(gtk_dialog_run): Don't disconnect the signals if the
	dialog was destroyed while running.
:
2005-03-23 13:59:32 +00:00
Matthias Clasen
b219b86532 Stop scrolling when the widget is unmapped. (#168791, Ryan Lortie)
2005-03-22  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkpathbar.c (gtk_path_bar_unmap):
	* gtk/gtkspinbutton.c (gtk_spin_button_unmap):
	* gtk/gtknotebook.c (gtk_notebook_unmap):
	* gtk/gtkrange.c (gtk_range_unmap): Stop scrolling when
	the widget is unmapped.  (#168791, Ryan Lortie)
2005-03-22 17:35:08 +00:00
Matthias Clasen
7c2434166a Forgotten commit 2005-03-22 17:32:23 +00:00
Matthias Clasen
c79d740327 Fix a typo 2005-03-21 15:33:26 +00:00
Manish Singh
b32108ebe2 Shut up CVS 2005-03-21 02:42:52 +00:00
Gabor Kelemen
835e3f9873 Hungarian translation updated.
2005-03-21  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-03-21 00:12:15 +00:00
Gabor Kelemen
6342319632 Hungarian translation updated.
2005-03-21  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-03-21 00:09:53 +00:00
Tor Lillqvist
66f840aea7 Use grep | head -n 1 instead of grep -m 1 which doesn't work with slightly
2005-03-21  Tor Lillqvist  <tml@novell.com>

	* gtk/Makefile.am: Use grep | head -n 1 instead of grep -m 1 which
	doesn't work with slightly older versions of GNU grep in
	install-libtool-import-lib rule. List the Win32 libs in LIBADD,
	not LDFLAGS. Add -lgdi32.
2005-03-20 23:00:31 +00:00
Tor Lillqvist
8998e3c237 Silence gcc warnings (unused variables, unhandled enum value in switch).
2005-03-21  Tor Lillqvist  <tml@novell.com>

	* modules/engines/ms-windows/*.c: Silence gcc warnings (unused
	variables, unhandled enum value in switch). Use g_object_unref()
	instead of deprecated gdk_gc_unref() and gdk_drawable_unref().

	* modules/engines/ms-windows/xp_theme.c (xp_theme_map_gtk_state):
	Add missing "case" keyword.

	* modules/engines/ms-windows/Makefile.am: Link with -lgdi32
	explicitly.

	* gdk/win32/gdkim-win32.c: Remove bogus empty doc comment. Remove
	unused variables. Add some casts to silence gcc.
2005-03-20 22:40:58 +00:00
Gabor Kelemen
b248a86acf Hungarian translation updated.
2005-03-20  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-03-20 17:42:13 +00:00
Matthias Clasen
709057bdd8 Make PLT-reduction work with gcc4, and don't include everything in
2005-03-20  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in gdkalias.h:

	* gtk/grk.symbols: Group symbols by header and source file.
	* gtk/makegtkalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegtkalias.pl -def
	* gdk/Makefile.am (gtkaliasdef.c): Add a rule to generate
	this file.
	* gtk/*.c: Include gtkalias.h after the other headers,
	include gtkaliasdef.c at the bottom.
	* gtk/*.h: Small cleanups.
2005-03-20 06:25:30 +00:00
Hans Breuer
a04f0a27e2 handle gdk*alias.def
2005-03-18  Hans Breuer  <hans@breuer.org>

	* gdk/makefile.msc gdk-pixbuf/makefile.msc : handle gdk*alias.def

	* gdk/makefile.msc.in : add gtkmnemonichash.obj

	* test/testgtk.c(set_parent_signal) : use g_message instead of
	g_print to keep the 'testgtk --bench=all' output clean
2005-03-18 18:02:43 +00:00
Matthias Clasen
ed8a413b76 Fix formatting in example in the docs. (#170611, Jianfei Wang)
2005-03-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtklabel.c (gtk_label_set_markup): Fix formatting
	in example in the docs.  (#170611, Jianfei Wang)
2005-03-17 19:31:49 +00:00
Matthias Clasen
66158a5de1 Clamp adjustment values on resize. (#170567, Tomislav Jonjic)
2005-03-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconview.c (gtk_icon_view_size_allocate): Clamp
	adjustment values on resize.  (#170567, Tomislav Jonjic)
2005-03-17 18:38:40 +00:00
Matthias Clasen
d1cc8f3d03 Make inline completion insert the prefix at the right spot. (#170146, Doug
2005-03-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkentrycompletion.c (gtk_entry_completion_real_insert_prefix):
	Make inline completion insert the prefix at the
	right spot.  (#170146, Doug Quale)
2005-03-17 18:06:57 +00:00
Matthias Clasen
1fb8ca36b4 Typo fix in the docs.
2005-03-16  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkprogressbar.c (gtk_progress_bar_get_ellipsize):
	Typo fix in the docs.

	* gtk/gtkmenutoolbutton.c (gtk_menu_tool_button_set_arrow_tooltip):
	Typo fix in the docs.

	* gtk/gtkiconview.c (gtk_icon_view_get_columns)
	(gtk_icon_view_set_columns, gtk_icon_view_set_item_width)
	(gtk_icon_view_get_item_width, gtk_icon_view_set_spacing)
	(gtk_icon_view_get_spacing, gtk_icon_view_set_row_spacing)
	(gtk_icon_view_set_column_spacing, gtk_icon_view_get_row_spacing)
	(gtk_icon_view_get_column_spacing, gtk_icon_view_set_margin)
	(gtk_icon_view_get_margin): Add docs.

	* gtk/gtkcellview.c (gtk_cell_view_get_displayed_row):
	Add docs.
2005-03-17 03:21:21 +00:00
Manish Singh
4246901a7b Shut up CVS 2005-03-16 04:38:20 +00:00
Manish Singh
8ef8a0e253 #include gdkaliasdef.c here too.
Tue Mar 15 20:34:33 2005  Manish Singh  <yosh@gimp.org>

        * gdk/x11/gdkinput-xfree.c: #include gdkaliasdef.c here too.
2005-03-16 04:37:42 +00:00
Matthias Clasen
8656d59cbc Make PLT-reduction work with gcc4, and don't include everything in
2005-03-15  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in gdkalias.h:

	* gdk/gdk.symbols: Group symbols by header and source file.
	* gdk/makegdkalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegdkalias.pl -def
	* gdk/Makefile.am (gdkaliasdef.c): Add a rule to generate this
	file.
	* gdk/*.c, gdk/x11/*.c: Include gdkalias.h after the other
	headers, include gdkaliasdef.c at the bottom.
2005-03-16 03:25:09 +00:00
Matthias Clasen
4ea52b4510 Remove conflict markers 2005-03-15 14:58:52 +00:00
Matthias Clasen
e5bf7ac0b3 Document that inline completion requires text-column to be set.
2005-03-15  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkentrycompletion.c (gtk_entry_completion_class_init):
	Document that inline completion requires text-column to be set.
	(gtk_entry_completion_compute_prefix): Return NULL if text-column
	is not set.

	* gtk/gtkentry.c (check_completion_callback): Call
	gtk_entry_completion_complete() before inserting the prefix,
	otherwise the prefix may depend on (random) state of the
	filter model.
2005-03-15 14:58:21 +00:00
Francisco Javier F. Serrador
b112d26032 Updated Spanish translation.
2005-03-14  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-03-14 21:30:25 +00:00
Matthias Clasen
7d6b810afb Make PLT-reduction work with gcc4, and don't include everything in
2005-03-14  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in gdk-pixbuf-alias.h:

	* gdk-pixbuf.symbols: Group symbols by header and source file.
	* /makegdkpixbufalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegdkpixbufalias.pl -def
	* Makefile.am (gdk-pixbuf-aliasdef.c): Add a rule to generate
	this file.
	* *.c: Include gdk-pixbuf-alias.h after the other headers,
	include gdk-pixbuf-aliasdef.c at the bottom.
2005-03-14 19:20:39 +00:00
David Lodge
c19d586301 Updated British translation.
2005-03-13  David Lodge <dave@cirt.net>

	* en_GB.po: Updated British translation.
2005-03-13 14:28:25 +00:00
Ivan, Wong Yat Cheung
2f05fc7b03 A further fix for big window support. Now also the test in testgtk works.
2005-03-13  Ivan, Wong Yat Cheung  <email@ivanwong.info>

	* gdk/win32/gdkgeometry-win32.c (gdk_window_scroll): A further fix
	for big window support. Now also the test in testgtk works.
2005-03-12 22:07:34 +00:00
Matthias Clasen
e77e82577d Make it compile 2005-03-12 04:21:28 +00:00
Matthias Clasen
997ee38f4e Don't crash on style changes. (#169334, Yury Puzis)
2005-03-11  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c (add_credits_page): Don't crash on
	style changes.  (#169334, Yury Puzis)
2005-03-12 04:03:26 +00:00
Ivan, Wong Yat Cheung
110abb3012 Big window fix for Win32. Big windows are still emulated within 16-bit
2005-03-12  Ivan, Wong Yat Cheung  <email@ivanwong.info>

	Big window fix for Win32. Big windows are still emulated within
	16-bit coordinate limits, though. Big windows now work on NT-based
	Windows. (#169989)

	* gdk/win32/gdkgc-win32.c (_gdk_win32_gdkregion_to_hrgn): Use
	32-bit coordinates.

	* gdk/win32/gdkgeometry-win32.c: Largely rewrite.

	* gdk/win32/gdkwindow-win32.c: Minor related changes.
2005-03-11 23:45:53 +00:00
Matthias Clasen
631113a2aa Fix a doc typo. (#169873, Johan Dahlin)
2005-03-10  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkliststore.c (gtk_list_store_insert_with_valuesv):
	Fix a doc typo.  (#169873, Johan Dahlin)
2005-03-11 04:33:05 +00:00
Matthias Clasen
dadd814f15 Don't try to focus the default_widget if there is none. (#169881, Thomas
2005-03-10  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdialog.c (gtk_dialog_map): Don't
	try to focus the default_widget if there is
	none.  (#169881, Thomas Leonard)
2005-03-11 04:29:51 +00:00
Tor Lillqvist
0d16de2818 Use grep | head -n 1 instead of grep -m 1 which doesn't work with slightly
2005-03-10  Tor Lillqvist  <tml@novell.com>

	* Makefile.am: Use grep | head -n 1 instead of grep -m 1 which
	doesn't work with slightly older versions of GNU grep in
	install-libtool-import-lib rule.

	* gdk-pixbuf-core.h
	* gdk-pixbuf-io.c
	* gdk-pixbuf.symbols: Implement DLL ABI stablility for
	gdk_pixbuf_save() and gdk_pixbuf_savev(). (#167973)
2005-03-10 19:04:14 +00:00
Matthias Clasen
d872e2060c Remove this unused function. It lives in gtkaccellabel.c now.
2005-03-09  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaccelgroup.c (substitute_underscores): Remove
	this unused function. It lives in gtkaccellabel.c now.
2005-03-09 18:24:06 +00:00
Matthias Clasen
7434f74b14 Fix a C99ism. (#169741, Morten Welinder)
2005-03-09  Matthias Clasen  <mclasen@redhat.com>

	* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite): Fix
	a C99ism.  (#169741, Morten Welinder)
2005-03-09 18:18:43 +00:00
Matthias Clasen
18ae85df22 Err, 2005-03-09 16:08:06 +00:00
Matthias Clasen
004876bb34 Better fix 2005-03-09 16:07:03 +00:00
Matthias Clasen
5fe95f2b3d Queue a resize when the model is unset. (#169528, Tomislav Jonjic)
2005-03-09  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconview.c (gtk_icon_view_set_model): Queue a resize
	when the model is unset.  (#169528, Tomislav Jonjic)
2005-03-09 16:02:03 +00:00
Martin Willemoes Hansen
63827429ec Updated Danish translation.
* da.po: Updated Danish translation.
2005-03-08 09:55:16 +00:00
Frank Arnold
b5a05915dc Updated German translation.
2005-03-07  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Updated German translation.
2005-03-06 23:03:21 +00:00
Vincent van Adrighem
3b91036dc6 Translation updated by Tino Meinen.
2005-03-06  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-03-06 18:37:28 +00:00
Dan Damian
965d71a624 Updated Romanian translation by Mişu Moldovan <dumol@go.ro>.
* ro.po: Updated Romanian translation by         Mişu Moldovan <dumol@go.ro>.
2005-03-06 12:37:50 +00:00
Pauli Virtanen
12baa3b183 Updated Finnish translation.
2005-03-05  Pauli Virtanen <pauli.virtanen@hut.fi>

	 * fi.po: Updated Finnish translation.
2005-03-05 16:30:03 +00:00
Dan Damian
1fa6d82fe9 Updated Romanian translation by Mişu Moldovan <dumol@go.ro>.
* ro.po: Updated Romanian translation by         Mişu Moldovan <dumol@go.ro>.
2005-03-05 16:13:54 +00:00
Miloslav Trmac
096de2b1b3 Updated Czech translation.
2005-03-05  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-03-05 12:58:02 +00:00
Christophe Merlet
bc62f637f9 Updated French translation. 2005-03-05 10:43:29 +00:00
Danilo Šegan
9296b99840 Updated Serbian translation. 2005-03-05 09:21:15 +00:00
Adam Weinberger
152974c0bf Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-03-04 22:37:01 +00:00
Artur Flinta
b29b38ce27 Updated Polish translation by GNOME PL Team.
2005-03-04  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-03-04 20:38:46 +00:00
Duarte Loreto
082e6d8731 Updated Portuguese translation.
2005-03-04  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-03-04 19:59:58 +00:00
Žygimantas Beručka
294372d612 Updated Lithuanian translation by Gintautas Miliauskas.
2005-03-04  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation by Gintautas Miliauskas.
2005-03-04 16:49:13 +00:00
Laszlo Dvornik
c7a4bc8ecb Hungarian translation updated by Gabor Kelemen.
2005-03-04  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated by Gabor Kelemen.
2005-03-04 14:56:37 +00:00
Christian Rose
1abcf0e11a Updated Swedish translation.
2005-03-04  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-03-04 13:48:00 +00:00
Dafydd Harries
6869f5e040 Updated Welsh translation. 2005-03-04 13:30:35 +00:00
Funda Wang
cfdd8c97e7 Updated Simplified Chinese translation 2005-03-04 12:46:17 +00:00
Raphael Higino
606dcb1711 Updated pt_BR translation 2005-03-04 11:59:25 +00:00
Laurent Dhima
2bd0df0f02 Updated Albanian translation.
2005-03-04  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-03-04 11:07:02 +00:00
Jordi Mallach
de9051b1f7 Updated Catalan translation. 2005-03-04 08:51:02 +00:00
Ankitkumar Rameshchandra Patel
c6aaf8e0f1 ankit@redhat.com * Updated Gujarati Translation 2005-03-04 06:21:19 +00:00
Amanpreet Singh Alam
a64acbbad9 update by amanpreealam@yahoo.com 2005-03-04 01:17:44 +00:00
Manish Singh
396d6825c9 URL escape the '+' in gtk+ in the bugzilla URL.
Thu Mar  3 16:59:44 2005  Manish Singh  <yosh@gimp.org>

        * configure.in: URL escape the '+' in gtk+ in the bugzilla URL.
2005-03-04 01:01:33 +00:00
Amanpreet Singh Alam
6480845a09 update by amanpreetalam@yahoo.com 2005-03-03 18:00:56 +00:00
Leonid Kanter
51ca6f0845 Updated Russian translation 2005-03-03 14:37:08 +00:00
Matthias Clasen
0c75383738 Don't leak the values here. (#169047, Philip Langdale)
2005-03-03  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtksettings.c (gtk_settings_get_property):
	* gtk/gtkrc.c (gtk_rc_parse_assignment): Don't leak
	the values here.  (#169047, Philip Langdale)
2005-03-03 14:14:13 +00:00
Matthias Clasen
85c7d19bdc Check the number of scanned items. (#168906, Morten Welinder)
2005-03-03  Matthias Clasen  <mclasen@redhat.com>

	* io-xpm.c (pixbuf_create_from_xpm): Check the number
	of scanned items.  (#168906, Morten Welinder)
2005-03-03 14:03:53 +00:00
Matthias Clasen
cae664f5ff Don't warn if a stock icon cannot be found. (#168830, Sven Neumann)
2005-03-03  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render):
	Don't warn if a stock icon cannot be found.  (#168830,
	Sven Neumann)
2005-03-03 13:56:09 +00:00
Leonid Kanter
be22bd22c2 Updated Russian translation 2005-03-03 13:54:36 +00:00
Matthias Clasen
a32a91fb17 Make the gif loader handle oom when loading animations. (#168857, Tommi
2005-03-03  Matthias Clasen  <mclasen@redhat.com>

	Make the gif loader handle oom when loading
	animations.  (#168857, Tommi Komulainen)

	* io-gif-animation.c (gdk_pixbuf_gif_anim_frame_composite):
	Handle oom by returning NULL.

	* io-gif.c (gif_get_lzw): Return an error if composite
	returns NULL.
2005-03-03 13:28:24 +00:00
Matthias Clasen
1020af2d9e Avoid warnings if gtk_widget_reparent() is called at unusual times.
2005-03-03  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwidget.c (gtk_widget_reparent_subwindows):
	Avoid warnings if gtk_widget_reparent() is called at
	unusual times.  (#168966, Christian Persch)
2005-03-03 06:37:08 +00:00
Matthias Clasen
e6dc29b3ff Bump Version
Bump Version
2005-03-02 20:39:48 +00:00
Raphael Higino
87284b06e0 Updated pt_BR translation 2005-03-02 19:37:33 +00:00
Manish Singh
e0c189cfbe Cast to avoid const warnings on data structure seeding.
Tue Mar  1 14:04:08 2005  Manish Singh  <yosh@gimp.org>

        * gdk/x11/gdkproperty-x11.c (virtual_atom_check_init): Cast to avoid
        const warnings on data structure seeding.
2005-03-01 22:26:30 +00:00
Josep Puigdemont i Casamajó
3a05f535e9 Updated Catalan translation 2005-03-01 18:32:57 +00:00
Matthias Clasen
d0146df852 2.6.4 2005-03-01 17:41:11 +00:00
Matthias Clasen
7ae937e418 Fix prelighting. (#157392, Vincent Noel, patch by Christian Persch)
2005-03-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkmenutoolbutton.c (button_state_changed_cb):
	Fix prelighting.  (#157392, Vincent Noel, patch by
	Christian Persch)
2005-03-01 15:50:03 +00:00
Matthias Clasen
d6eb5c544d Make icon data caching work again. (#168851, Alexander Larsson)
2005-03-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (theme_lookup_icon): Make
	icon data caching work again.  (#168851, Alexander Larsson)

	* gdk-pixbuf/gdk-pixbuf.c:
	* gdk-pixbuf/gdk-pixbuf-features.h.in:
	Revert the previous change, since it breaks
	bin compat.
2005-03-01 15:16:29 +00:00
Matthias Clasen
7862c854c8 Fix translations of our sole Q_() message. 2005-03-01 14:50:33 +00:00
Matthias Clasen
920bdfb939 Forgotten file. 2005-03-01 06:42:44 +00:00
Matthias Clasen
d3def7d642 gdk/gdkkeyuni.c gdk/gdkpixbuf-drawable.c gdk/gdkrgb.c gdk/x11/gdkdnd-x11.c
2005-03-01  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkkeyuni.c
	* gdk/gdkpixbuf-drawable.c
	* gdk/gdkrgb.c
	* gdk/x11/gdkdnd-x11.c
	* gdk/x11/gdkevents-x11.c
	* gdk/x11/gdkproperty-x11.c
	* gdk/x11/gdkvisual-x11.c
	* gdk-pixbuf/gdk-pixbuf.c
	* gtk/gtkaction.c
	* gtk/gtkbindings.c
	* gtk/gtkcolorbutton.c
	* gtk/gtkcombo.c
	* gtk/gtkcontainer.c
	* gtk/gtkfilechooserdefault.c
	* gtk/gtkfilesel.c
	* gtk/gtkgamma.c
	* gtk/gtkiconview.c
	* gtk/gtkinputdialog.c
	* gtk/gtkitemfactory.c
	* gtk/gtkmenu.c
	* gtk/gtktextview.c
	* gtk/gtktooltips.c
	* gtk/gtktreedatalist.c
	* gtk/gtkuimanager.c
	* gtk/tree_minus.xpm
	* gtk/tree_plus.xpm
	* gtk/xdgmime/xdgmime.c
	* gtk/xdgmime/xdgmime.h:
	Move constant data to .rodata.
2005-03-01 06:28:56 +00:00
Matthias Clasen
c5011bae1d Add necessary protection 2005-02-28 18:08:34 +00:00
Matthias Clasen
5f44b68bfa Add .note.GNU-stack sections to Mark these as not requiring an executable
2005-02-28  Matthias Clasen  <mclasen@redhat.com>

	* pixops/*.S: Add .note.GNU-stack sections to Mark these as not
	requiring an executable stack.
2005-02-28 18:01:05 +00:00
Matthias Clasen
776f325da0 Bump version 2005-02-28 15:49:29 +00:00
Matthias Clasen
9f9470c1ed 2.6.3 2005-02-28 15:37:19 +00:00
Matthias Clasen
c738bbb28f Updates 2005-02-28 05:11:56 +00:00
Matthias Clasen
b5df55045a Fix typos in see also lists. (# 168698, Torsten Schoenfeld)
2005-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtktreeselection.sgml:
	* gtk/tmpl/gtktreeview.sgml:
	* gtk/tmpl/gtktreeviewcolumn.sgml: Fix typos
	in see also lists.  (# 168698, Torsten Schoenfeld)
2005-02-28 04:56:43 +00:00
Matthias Clasen
860f5a804c Fix stack vs heap confusion. (#168690, Torsten Schoenfeld)
2005-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtktreemodel.sgml: Fix stack vs heap
	confusion.  (#168690, Torsten Schoenfeld)
2005-02-28 04:53:18 +00:00
Matthias Clasen
617443f607 Improve the handling of buttons as action proxys. (#165534, Milosz
2005-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaction.c (connect_proxy): Improve the handling
	of buttons as action proxys.  (#165534, Milosz Derezynski)
2005-02-28 04:48:18 +00:00
Matthias Clasen
59786d81ee Fix a typo. (#168646, Vincent Untz)
2005-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtklabel.c (gtk_label_size_request): Fix a typo.
	(#168646, Vincent Untz)
2005-02-28 04:32:03 +00:00
Matthias Clasen
5c638cd11a Unset "focus-on-click" for the save folder combo. (#168688, Sven Neumann)
2005-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdefault.c (save_folder_combo_create):
	Unset "focus-on-click" for the save folder combo.  (#168688,
	Sven Neumann)
2005-02-28 04:22:54 +00:00
Matthias Clasen
c805e87208 Remove a C++ comment. (#168531, Paul Cornett)
2005-02-25  Matthias Clasen  <mclasen@redhat.com>

	* demos/testpixbuf.c (main): Remove a C++ comment.  (#168531,
	Paul Cornett)
2005-02-25 19:29:39 +00:00
Matthias Clasen
292ec3ab07 Don't leak a path here. (#168443, Morten Welinder)
2005-02-25  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcombobox.c (gtk_combo_box_menu_fill_level): Don't leak a
	path here.  (#168443, Morten Welinder)
2005-02-25 19:11:08 +00:00
Ankitkumar Rameshchandra Patel
17259faf4d ankit@redhat.com * Updated Gujarati Translation 2005-02-25 07:28:27 +00:00
Robert Ögren
6f683cef6c Implement better handling of Wintab tablet context overlap on Win32.
2005-02-24  Robert Ögren  <gtk@roboros.com>

	Implement better handling of Wintab tablet context overlap on
	Win32. (#167298)

	* gdk/win32/gdkinput-win32.c (_gdk_input_set_tablet_active): New
	function that brings any tablet contexts to the top of the overlap
	order.
	* gdk/win32/gdkinput-win32.h: Declare _gdk_input_set_tablet_active ()
	* gdk/win32/gdkevents-win32.c (gdk_event_translate):
	Call _gdk_input_set_tablet_active when a window is activated (on
	WM_ACTIVATE)
2005-02-25 00:09:52 +00:00
Matthias Clasen
3329ff7ab8 Updates 2005-02-24 21:57:20 +00:00
Matthias Clasen
d96735bed3 Don't leak parent_path. (#168435, Morten Welinder)
2005-02-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_select_path):
	Don't leak parent_path.  (#168435, Morten Welinder)
2005-02-24 20:29:32 +00:00
Simos Xenitellis
2b70ccc35b Updated Greek translation 2005-02-24 20:01:39 +00:00
Arafat Medini
52f424e93d Updated Arabic translation.
2005-02-24  Arafat Medini  <kinryu@silverpen.de>

	* ar.po: Updated Arabic translation.
2005-02-24 19:24:21 +00:00
Matthias Clasen
c41ac1f3ae Consistently use gtk_tree_row_reference_valid().
2005-02-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcombobox.c: Consistently use gtk_tree_row_reference_valid().
	(gtk_combo_box_model_row_deleted): Update the displayed row in
	the cell_view.  (#167842, Gustavo Carneiro)
2005-02-24 17:57:55 +00:00
Matthias Clasen
5624588e5d Fix #167259, reported by Christian Persch:
2005-02-24  Matthias Clasen  <mclasen@redhat.com>

        Fix #167259, reported by  Christian Persch:

	* gtk/gtkwidget.c (gtk_widget_unparent): Unmap the reparented
	widget, even if we avoid the unrealizing.
	(gtk_widget_reparent_subwindows): Make reparenting work for
	!NO_WINDOW widgets which have other windows which are siblings
	of widget->window (as e.g. GtkSpinButton).
2005-02-24 16:44:02 +00:00
Matthias Clasen
804c705b6d Don't emit a warning if a parent node is filtered out. (#164726, Olivier
2005-02-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_changed):
	Don't emit a warning if a parent node is filtered out. (#164726,
	Olivier Sessink)
2005-02-24 14:43:53 +00:00
Matthias Clasen
c9967c4642 Revert the last change, since gtk_widget_set_style_internal() already
2005-02-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtklabel.c (gtk_label_style_set): Revert the last
	change, since gtk_widget_set_style_internal() already
	queues a resize.
2005-02-24 13:38:45 +00:00
Matthias Clasen
f3c56da786 Queue a resize, since fonts may have changed. (#164128, Phil Blundell)
2005-02-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtklabel.c (gtk_label_style_set): Queue a resize, since
	fonts may have changed.  (#164128, Phil Blundell)
2005-02-24 04:49:49 +00:00
Matthias Clasen
5de5ab1d7f Fix a typo. (#168173, Ivan Wong)
2005-02-23  Matthias Clasen  <mclasen@redhat.com>

	* io-ico.c: Fix a typo.  (#168173, Ivan Wong)
2005-02-24 04:26:48 +00:00
Matthias Clasen
96be34116e Move initialization code from _new to _init. (#168249, Murray Cumming)
2005-02-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c (gtk_about_dialog_init)
	(gtk_about_dialog_new): Move initialization code from _new to
	_init.  (#168249, Murray Cumming)
2005-02-24 03:43:23 +00:00
Jonathan Blandford
738312c4e5 Patch from jorn@nl.linux.org (Jorn Baayen) to notice changes to
Wed Feb 23 17:34:01 2005  Jonathan Blandford  <jrb@redhat.com>

        * gtk/gtktreeview.c (gtk_tree_view_node_queue_redraw): Patch from
        jorn@nl.linux.org (Jorn Baayen) to notice changes to fixed-height
        widgets.
2005-02-23 22:38:20 +00:00
Tor Lillqvist
cc7a53d502 Workaround for bug in MapVirtualKey(VK_DIVIDE, 0) in some Windows
2005-02-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Workaround for bug in
	MapVirtualKey(VK_DIVIDE, 0) in some Windows versions. (#142998)
2005-02-23 22:02:59 +00:00
Simos Xenitellis
800fb665a8 Updated Greek translation 2005-02-23 18:02:10 +00:00
Simos Xenitellis
145b91020e Updated Greek translation 2005-02-23 17:28:53 +00:00
Manish Singh
04e0390252 #include <config.h>
Tue Feb 22 13:49:09 2005  Manish Singh  <yosh@gimp.org>

        * gtk/updateiconcache.c: #include <config.h>
2005-02-22 21:50:17 +00:00
Federico Mena Quintero
b28ea81026 Fix #164940, patch by Ben Maurer and Tommi Komulainen.
2005-02-22  Federico Mena Quintero  <federico@ximian.com>

	Fix #164940, patch by Ben Maurer and Tommi Komulainen.

	* gdk/gdkrgb.c (gdk_rgb_convert_565_d): Constify the "dmp" variable.
	(gdk_rgb_convert_565_d): Likewise.
	(DM_565): Made a static const precomputed array to avoid
	allocating it at runtime.
	(gdk_rgb_preprocess_dm_565): #ifdef out.
2005-02-22 19:29:09 +00:00
Nikos Charonitakis
9f1fc19066 Updated Greek translation 2005-02-21 09:11:19 +00:00
Priit Laes
03014c875e Translation updated by Ivar Smolin.
2005-02-21  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-02-21 08:25:51 +00:00
Matthias Clasen
4c2073b393 Fix freedesktop.org links in the docs.
2005-02-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwindow.c:
	* gtk/gtkclipboard.c: Fix freedesktop.org links in the docs.
2005-02-21 04:21:50 +00:00
Matthias Clasen
9e26b2632b Set have_render_with_trapezoids to GDK_YES when we have a new enough
2005-02-20  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkdrawable-x11.c (_gdk_x11_have_render_with_trapezoids):
	Set have_render_with_trapezoids to GDK_YES when we have
	a new enough Render extension.  (#167965,Billy Biggs)
2005-02-21 04:12:12 +00:00
Matthias Clasen
dece1395ab Add libgtk_only api to obtain the user_time of the display. This function
2005-02-20  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkx.h:
	* gdk/x11/gdkdisplay-x11.c (gdk_x11_display_get_user_time_libgtk_only):
	Add libgtk_only api to obtain the user_time of the display.
	This function will become generally available api in 2.8.

	* gtk/gtkwindow.c (gtk_window_present): Use the timestamp of
	the last user interaction when focusing the window.  (#166379,
	Elijah Newren)
2005-02-21 03:47:45 +00:00
Kjartan Maraas
d6e17db32e Improve a bad word 2005-02-20 22:35:01 +00:00
Manish Singh
ace6498e3e Pass gtk_widget_get_toplevel() a GTK_WIDGET.
Thu Feb 17 14:52:57 2005  Manish Singh  <yosh@gimp.org>

        * gtk/gtkcombobox.c: Pass gtk_widget_get_toplevel() a GTK_WIDGET.
2005-02-17 22:53:44 +00:00
Tommi Vainikainen
d5186f9835 Merged translations from 'gtk-2-4' branch.
2005-02-17  Tommi Vainikainen  <thv@iki.fi>

	* fi.po: Merged translations from 'gtk-2-4' branch.
2005-02-17 13:22:25 +00:00
Tommi Vainikainen
f94a85135c Updated Finnish translation.
2005-02-17  Tommi Vainikainen  <thv@iki.fi>

	* fi.po: Updated Finnish translation.
2005-02-17 11:52:51 +00:00
Jordi Mallach
59d4439c98 Updated Catalan translation by Xavier Conde Rueda <xaviconde@eresmas.com>. 2005-02-17 10:12:08 +00:00
Jordi Mallach
e9a2b0ebfb Updated Catalan translation. 2005-02-17 10:08:30 +00:00
Raphael Higino
bb97d0fd37 Updated pt_BR translation 2005-02-16 17:01:11 +00:00
Matthias Clasen
f898ecdac0 Fixes for #143829, Tommi Komulainen, Christian Persch:
2005-02-16  Matthias Clasen  <mclasen@redhat.com>

	Fixes for #143829, Tommi Komulainen, Christian Persch:

	* gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
	typeselect_flush_timeout when destroying the widgets
	it is operating on.
	(gtk_tree_view_ensure_interactive_directory): Add the
	popup to the window group of the toplevel it belongs to.

	* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget)
	(gtk_combo_box_popup): Do the same here.
2005-02-16 16:39:17 +00:00
Adi Attar
32bfdf55f5 Updated Xhosa translation.
2005-02-16  Adi Attar  <aattar@cvs.gnome.org>

	* xh.po: Updated Xhosa translation.
2005-02-16 15:27:00 +00:00
Matthias Clasen
b4a0ade14a *** empty log message *** 2005-02-16 03:52:55 +00:00
Matthias Clasen
274a496fa6 Don't read over the end of the buffer if '#' appears at the very end.
2005-02-15  Matthias Clasen  <mclasen@redhat.com>

	* io-pnm.c (pnm_skip_whitespace): Don't read over the end of
	the buffer if '#' appears at the very end.  (#167141, Doug Morgan)
2005-02-16 03:39:27 +00:00
David Lodge
3738d69b43 Update English (British) translation.
2005-02-15  David Lodge  <dave@cirt.net>

	* en_GB.po: Update English (British) translation.
2005-02-15 21:40:48 +00:00
Marcel Telka
e610ab6476 Updated Slovak translation.
2005-02-15  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-02-15 20:01:34 +00:00
Kjartan Maraas
36616d23a8 Use correct term for Accelerator. Same
2005-02-15  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Use correct term for Accelerator.
	* no.po: Same
2005-02-15 16:10:10 +00:00
Dmitry Mastrukov
1a48cf4a63 be.po: Updated Belarusian translation from Belarusian team <i18n@mova.org>. 2005-02-15 05:57:41 +00:00
Kjartan Maraas
667e73b7a8 Update Update
2005-02-15  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-02-15 00:24:41 +00:00
Roozbeh Pournader
0b0f957c10 Updated Persian translation.
2005-02-14  Roozbeh Pournader  <roozbeh@farsiweb.info>

        * fa.po: Updated Persian translation.
2005-02-14 15:18:57 +00:00
Priit Laes
506261744d Translation updated by Ivar Smolin.
2005-02-14  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-02-14 08:36:53 +00:00
David Lodge
37454ee50a Updated British translation.
2005-02-13  David Lodge <dave@cirt.net>

        * en_GB.po: Updated British translation.
2005-02-13 20:03:50 +00:00
Danilo Šegan
6d0e8a2fc4 Updated Serbian translation. 2005-02-12 11:08:21 +00:00
Raphael Higino
72cc241e83 Fixing some mistakes in last commit 2005-02-11 18:27:13 +00:00
Matthias Clasen
44ba256537 Stop scrolling when the pathbar goes away. (#167094, Rodney Dawes)
2005-02-11  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkpathbar.c (gtk_path_bar_finalize): Stop scrolling
	when the pathbar goes away.  (#167094, Rodney Dawes)
	(change_icon_theme): Use GTK_ICON_SIZE_MENU here as
	well  (Vincent Noel)
2005-02-11 17:31:44 +00:00
Matthias Clasen
16e254a83d Fix a reference. Sorry about that, Vincent & Vincent 2005-02-11 14:24:11 +00:00
Danilo Šegan
a985a833e8 Updated Serbian translation. 2005-02-11 12:56:15 +00:00
Priit Laes
43dc3dfc24 Translation updated by Ivar Smolin.
2005-02-11  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-02-11 07:23:39 +00:00
Matthias Clasen
e3d3ccaf91 Complete the fix for #165770, Vincent Untz:
2005-02-11  Matthias Clasen  <mclasen@redhat.com>

	Complete the fix for #165770, Vincent Untz:

	* gtk/gtkfilechooserbutton.c (FALLBACK_ICON_SIZE): Make the
	fallback size be 16, to be equal to the default for
	GTK_ICON_SIZE_MENU (in gtkiconfactory.c:init_icon_sizes()).
	(gtk_file_chooser_button_init):
	(change_icon_theme): Use GTK_ICON_SIZE_MENU instead of
	GTK_ICON_SIZE_SMALL_TOOLBAR.
2005-02-11 06:19:06 +00:00
Raphael Higino
12d2852088 Updated pt_BR translation 2005-02-10 20:21:18 +00:00
Maxim Dziumanenko
630ce00504 Update Ukrainian translation.
2005-02-09  Maxim Dziumanenko <mvd@mylinux.com.ua>

	* Update Ukrainian translation.
2005-02-09 18:08:28 +00:00
Matthias Clasen
8f161a56ca Fix RTL keynav for going from menubar to menu.
2005-02-09  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): Fix RTL
	keynav for going from menubar to menu.
2005-02-09 16:46:54 +00:00
Christian Rose
829989b72c Added "xh" to ALL_LINGUAS. Added Xhosa translation by Adi Attar
2005-02-08  Christian Rose  <menthos@menthos.com>

	* configure.in: Added "xh" to ALL_LINGUAS.
	* po/xh.po, po-properties/xh.po: Added Xhosa translation by
	Adi Attar <adi@canonical.com>.
2005-02-08 21:39:43 +00:00
Theppitak Karoonboonyanan
0c2990cb6b Updated Thai translation.
2005-02-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-02-08 18:08:43 +00:00
Rhys Jones
20fa1d1769 Updated Welsh (fuzzy-bashing, plural-forms standardisation).
2005-02-08  Rhys Jones  <rhys@sucs.org>

	* cy.po: Updated Welsh (fuzzy-bashing, plural-forms standardisation).
2005-02-08 07:06:49 +00:00
Nikos Charonitakis
84fc861fac Updated Greek translation 2005-02-07 23:16:52 +00:00
Matthias Clasen
d7b7d33347 Pass in the max number of bytes to read. (pnm_read_ascii_scanline): And
2005-02-07  Matthias Clasen  <mclasen@redhat.com>

	* io-pnm.c (pnm_read_next_value): Pass in the max number
	of bytes to read.
	(pnm_read_ascii_scanline): And use it here to enable
	parsing of pbm images without whitespace between the
	pixels.  (#165803, Samuel Hym)
2005-02-07 19:42:32 +00:00
David Lodge
8fde024e5f Updated British translation.
2005-02-07  David Lodge <dave@cirt.net>

        * en_GB.po: Updated British translation.
2005-02-07 11:18:45 +00:00
Alexander Shopov
f9d51379af Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2005-02-06  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2005-02-06 08:52:39 +00:00
Takeshi AIHANA
d1bacb5146 Fixed wrong translation with '|'.
2005-02-05  Takeshi AIHANA <aihana@gnome.gr.jp>
	* ja.po: Fixed wrong translation with '|'.
2005-02-05 14:51:40 +00:00
Laszlo Dvornik
163aa7723f Hungarian translation updated.
2005-02-05  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-02-05 10:43:43 +00:00
Takeshi AIHANA
5246386253 Updated Japanese translation for v2.6.2.
2005-02-05  Takeshi AIHANA <aihana@gnome.gr.jp>
	* ja.po: Updated Japanese translation for v2.6.2.
2005-02-05 09:08:57 +00:00
Matthias Clasen
4f057d0bdb Bump version 2005-02-04 19:42:44 +00:00
Matthias Clasen
00abd6a36b 2.6.2 2005-02-04 19:08:27 +00:00
Matthias Clasen
dfcb773476 Work better when there is not enough space. This avoids a nasty size
2005-02-04  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkpaned.c (gtk_paned_compute_position): Work better
        when there is not enough space. This avoids a nasty size
        allocation loop in the file chooser.  (#154007, reported
        by Milosz Derezynski, patch by Robert Ögren)
2005-02-04 17:45:05 +00:00
Matthias Clasen
3d67b0de18 Avoid spurious selection of RTL direction if the widget does not have
2005-02-04  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkentry.c (gtk_entry_create_layout): Avoid spurious
	selection of RTL direction if the widget does not have
	focus.  (#164125, Frederic Crozat)
2005-02-04 15:36:02 +00:00
Pauli Virtanen
83af87b41d Updated Finnish translation.
2005-02-04  Pauli Virtanen  <pauli.virtanen@hut.fi>

        * fi.po: Updated Finnish translation.
2005-02-04 10:11:14 +00:00
Tor Lillqvist
4e82deacd8 Use the wide character version of ImmGetCompositionString() here, too.
2005-02-03  Tor Lillqvist  <tml@novell.com>

	* modules/input/gtkimcontextime.c (get_pango_attr_list): Use the
	wide character version of ImmGetCompositionString() here,
	too. (#165278, Takuro Ashie)
2005-02-03 20:49:33 +00:00
Matthias Clasen
60bc8d0b77 Don't do one roundtrip per motion event. (#166173, pointed out by Chris
2005-02-03  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkmenu.c (gtk_menu_handle_scrolling): Don't do
	one roundtrip per motion event.  (#166173, pointed out
	by Chris Lee, patch by Søren Sandmann)
2005-02-03 18:10:49 +00:00
Mark McLoughlin
b6cd92f645 remove debug spew.
2005-02-03  Mark McLoughlin  <mark@skynet.ie>

        * gtk/gtkicontheme.c: (load_themes): remove debug spew.
2005-02-03 16:51:55 +00:00
Kostas Papadimas
4b08c83f0f Updated Greek Translation. 2005-02-03 16:32:15 +00:00
Matthias Clasen
503dd06986 Make the gdk_key array const (#166075, Tommi Komulainen)
2005-02-03  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkkeynames.c: Make the gdk_key array const (#166075,
	Tommi Komulainen)
2005-02-03 15:38:20 +00:00
Alexander Shopov
8d33536350 Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2005-02-02  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2005-02-02 18:56:09 +00:00
Federico Mena Quintero
42945febfd Don't select the first row if the chooser is not mapped. This happens when
2005-02-02  Federico Mena Quintero  <federico@ximian.com>

	* gtk/gtkfilechooserdefault.c (pending_select_paths_process):
	Don't select the first row if the chooser is not mapped.  This
	happens when it's acting on behalf of GtkFileChooserButton.  Also,
	don't select the first row if we are in SAVE or CREATE_FOLDER
	modes --- I had missed that (see the ChangeLog entry from
	2005-01-18).  Fixes #165264.
2005-02-02 18:22:35 +00:00
Tor Lillqvist
1b976c4464 Implement lazy extended input initialization on Win32, by Robert Ögren.
2005-02-02  Tor Lillqvist  <tml@novell.com>

	Implement lazy extended input initialization on Win32, by Robert
	Ögren. Fixes #163163, possibly #162334. Lazy initialization would
	be a good idea in any case even if it didn't fix any visible
	problems, though.

	The Wacom tablet driver seems to get confused if Wintab is
	initialized but no window is shown before the process exits. This
	is the case for some GIMP plug-ins, for instance.

	* gdk/win32/gdkinput-win32.c (_gdk_input_wintab_init_check): Made
	non-static (and renamed).
	(_gdk_input_init): Don't call _gdk_input_wintab_init_check().

	* gdk/win32/gdkinput-win32.h: Declare _gdk_input_wintab_init_check().

	* gdk/win32/gdkinput.c (gdk_devices_list,
	gdk_display_list_devices, gdk_input_set_extension_events): Call
	_gdk_input_wintab_init_check() here instead.
2005-02-02 18:13:41 +00:00
Ivan, Wong Yat Cheung
14ec6ddec3 Use a FIFO list for storing GdkSelProp of a single window so that
2005-02-02  Ivan, Wong Yat Cheung  <email@ivanwong.info>

	* gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
	of a single window so that gtk_clipboard_request_contents() can be
	called inside a GtkClipboardReceivedFunc(). (#163844)
2005-02-02 17:29:20 +00:00
Priit Laes
13882b5f8e Translation updated by Ivar Smolin.
2005-02-02  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-02-02 16:41:46 +00:00
Laurent Dhima
5d3e310dbc Updated Albanian translation.
2005-02-02  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-02-02 08:46:30 +00:00
Matthias Clasen
2bb62c29c3 Updates
Updates
2005-02-02 07:02:57 +00:00
Matthias Clasen
54099127ef Mark GdkEventOwnerChange and GdkOwnerChange as 2.6 additions. (#165823,
2005-02-02  Matthias Clasen  <mclasen@redhat.com>

	* gdk/tmpl/event_structs.sgml:
	* gdk/tmpl/events.sgml: Mark GdkEventOwnerChange and
	GdkOwnerChange as 2.6 additions.  (#165823, Masao Mutoh)
2005-02-02 06:23:00 +00:00
Matthias Clasen
b14361feef Look for icons in XDG_DATA_DIRS/pixmaps. (#165950, Thomas Zajic)
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
	in XDG_DATA_DIRS/pixmaps.  (#165950, Thomas Zajic)
2005-02-02 04:29:16 +00:00
Matthias Clasen
40ce4d2995 Set info->icon_list to NULL after freeing it. (#165800, Damon Chaplin)
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwindow.c (gtk_window_set_icon_name): Set info->icon_list
	to NULL after freeing it.  (#165800, Damon Chaplin)
2005-02-02 03:54:07 +00:00
Federico Mena Quintero
710acda91c Don't g_assert_not_reached() if we are in any other state. Another code
2005-02-01  Federico Mena Quintero  <federico@ximian.com>

	* gtk/gtkfilechooserdefault.c
	(browse_files_model_finished_loading_cb): Don't
	g_assert_not_reached() if we are in any other state.  Another code
	path may have triggered a folder reload.  Fixes #165556.
2005-02-02 00:52:14 +00:00
Michael Natterer
49bfb352bb depend on stable pango-1.8, not unstable 1.7
2005-02-01  Michael Natterer  <mitch@gimp.org>

	* configure.in: depend on stable pango-1.8, not unstable 1.7
2005-02-02 00:15:31 +00:00
Federico Mena Quintero
6a33d02463 Fix #165770:
2005-02-01  Federico Mena Quintero  <federico@ximian.com>

	Fix #165770:

	* gtk/gtkfilechooserdefault.c (FALLBACK_ICON_SIZE): Make the
	fallback size be 16, to be equal to the default for
	GTK_ICON_SIZE_MENU (in gtkiconfactory.c:init_icon_sizes()).
	(change_icon_theme): Use GTK_ICON_SIZE_MENU instead of
	GTK_ICON_SIZE_SMALL_TOOLBAR.
2005-02-01 23:55:04 +00:00
Matthias Clasen
3a7fcb54d5 Remove debug printf. (#165877, Carlos Garnacho Parro)
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_adjustment_changed):
	Remove debug printf.  (#165877, Carlos Garnacho Parro)
2005-02-01 18:52:09 +00:00
Matthias Clasen
91708cf600 Fix many instances of "the the" in docs and comments. (#165815, Masao
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* */*.c: Fix many instances of "the the" in docs and
	comments.  (#165815, Masao Mutoh)
2005-02-01 18:07:41 +00:00
Matthias Clasen
d223323e08 Add a --quiet option.
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/updateiconcache.c (main): Add a --quiet option.
2005-02-01 13:52:40 +00:00
Tor Lillqvist
40ebcb878c New functions, code blocks refactored out of update_keymap(). No
2005-02-01  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (handle_special, set_shift_vks,
	reset_after_dead, handle_dead): New functions, code blocks
	refactored out of update_keymap(). No functionality change.

	(update_keymap): Use ToUnicodeEx() when available (on NT-based
	Windows) instead of ToAsciiEx(). Makes keyboard input work in
	Unicode-only input locales that don't have any ANSI codepage, for
	instance Hindi and Bengali. Use _gdk_input_codepage only on
	Win9x. (#165723)

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
	WM_INPUTLANGCHANGE, use GetLocaleInfo() instead of
	TranslateCharsetInfo() to get the input locale's corresponding
	codepage, if any.
2005-02-01 11:33:58 +00:00
Matthias Clasen
8ec056217c Use NULL, not 0 to terminate NULL-terminated va lists. (#165683)
2005-01-31  Matthias Clasen  <mclasen@redhat.com>

	* modules/input/gtkimcontextxim.c: Use NULL, not 0 to terminate
	NULL-terminated va lists.  (#165683)
2005-01-31 19:55:10 +00:00
Martin Willemoes Hansen
2dfc05f941 Updated Danish translation.
* da.po: Updated Danish translation.
2005-01-31 11:00:03 +00:00
Žygimantas Beručka
b5920b0f66 Updated Lithuanian translation.
2005-01-31  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-01-31 10:18:09 +00:00
Alessio Frusciante
ee126f8b6f Updated Italian translation. 2005-01-30 18:36:47 +00:00
Priit Laes
c7952ccd91 Translation updated.
2005-01-29  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated.
2005-01-29 18:50:10 +00:00
Christian Rose
a59fdf547a Updated Swedish translation.
2005-01-28  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-01-28 20:31:44 +00:00
Manish Singh
a959f2a1ce update ancient IRC info.
Thu Jan 27 14:25:45 2005  Manish Singh  <yosh@gimp.org>

        * README.cvs-commits: update ancient IRC info.
2005-01-27 22:27:02 +00:00
Federico Mena Quintero
4cbee7b5b9 Oops, don't assert that we can't reach the end of the function; this
2005-01-27  Federico Mena Quintero  <federico@ximian.com>

	* gtk/gtkfilechooserdefault.c
	(gtk_file_chooser_default_select_path): Oops, don't assert that we
	can't reach the end of the function; this happens if we are still
	loading but don't need a path change.  Fixes #165213.
2005-01-27 20:02:40 +00:00
Kjartan Maraas
a4d2679444 Update Update
2005-01-27  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-01-27 15:40:22 +00:00
Matthias Clasen
0619f0576b Some visual tweaks to the about dialog, obey HIG spacing a bit more, add a
2005-01-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c: Some visual tweaks to the about dialog,
	obey HIG spacing a bit more, add a hand cursor when over the
	link button.  (#163979, Jorn Baayen)
2005-01-27 14:15:33 +00:00
Jordi Mallach
51914c6e89 Updated Catalan translation. 2005-01-27 14:02:51 +00:00
Frank Arnold
cc6cf7c77e Removed context string in translation. Added comment.
2005-01-26  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Removed context string in translation. Added comment.
2005-01-26 07:55:50 +00:00
Changwoo Ryu
0a67ab7d32 Updated Korean translation.
2005-01-26  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.
2005-01-26 07:29:08 +00:00
Matthias Clasen
c0f10b5ff6 Don't allow -1 as minimum-key-length. (gtk_entry_completion_set_model):
2005-01-26  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkentrycompletion.c (gtk_entry_completion_class_init):
	Don't allow -1 as minimum-key-length.
	(gtk_entry_completion_set_model): Add missing notification.
	(gtk_entry_completion_set_minimum_key_length): Add missing
	notification, allow setting minimum-key-length to 0.  (#165194,
	Vincent Ladeuil)
2005-01-26 06:50:05 +00:00
Matthias Clasen
1dc40fa709 Make sure the license dialog is initially displayed without a horizontal
2005-01-26  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c (display_license_dialog): Make sure
	the license dialog is initially displayed without a horizontal
	scrollbar.
	(gtk_about_dialog_class_init): Document the fact that the
	license text is not wrapped.  (#165012, Christian Rose)
2005-01-26 06:07:48 +00:00
Changwoo Ryu
8d8fe966e0 Removed CVS conflict indicator. Updated Korean translation.
2005-01-26  Changwoo Ryu  <cwryu@debian.org>

	* ChangeLog: Removed CVS conflict indicator.
	* ko.po: Updated Korean translation.
2005-01-26 05:12:56 +00:00
Matthias Clasen
3a4316602d Fix docs. (#165180, Jeff Franks)
2005-01-25  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkbutton.c (gtk_button_set_image): Fix docs.  (#165180,
	Jeff Franks)
2005-01-25 20:54:43 +00:00
Matthias Clasen
f5f1b8aab4 Fix docs. (#165163, Jeff Franks)
2005-01-25  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkwindow-x11.c (gdk_window_configure_finished): Fix
	docs.  (#165163, Jeff Franks)
2005-01-25 18:51:36 +00:00
Matthias Clasen
505441e464 Add bug ref 2005-01-25 18:45:16 +00:00
Matthias Clasen
361878c1dd Add note on limited availability.
2005-01-25  Matthias Clasen  <mclasen@redhat.com>

	* gtk/tmpl/gtksocket.sgml:
	* gtk/tmpl/gtkplug.sgml: Add note on limited
	availability.
2005-01-25 18:44:41 +00:00
Matthias Clasen
be8c820b40 Use the correct setter for a string GValue. (#165203, Damon Chaplin)
2005-01-25  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkimage.c (gtk_image_get_property): Use the correct setter
	for a string GValue.  (#165203, Damon Chaplin)
2005-01-25 18:40:27 +00:00
Hendrik Brandt
1ac0dbc65c Updated German translation.
2005-01-24  Hendrik Brandt  <heb@gnome-de.org>

        * po/de.po: Updated German translation.
2005-01-25 14:25:12 +00:00
Matthias Clasen
a049d45686 Initialize user_time from DESKTOP_STARTUP_ID. (#165131, Elijah Newren)
2005-01-24  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkdisplay-x11.c (_gdk_windowing_set_default_display):
	Initialize user_time from DESKTOP_STARTUP_ID.  (#165131,
	Elijah Newren)
2005-01-25 04:14:50 +00:00
Federico Mena Quintero
2e7aceb60b Removed leftover comments.
2005-01-24  Federico Mena Quintero  <federico@ximian.com>

	* gtk/gtkfilechooserdefault.c: Removed leftover comments.
2005-01-25 01:36:58 +00:00
Federico Mena Quintero
0b27d652f6 Fix #147785 and clean up the loading code:
2005-01-24  Federico Mena Quintero  <federico@ximian.com>

	Fix #147785 and clean up the loading code:

	* gtk/gtkfilechooserdefault.c (LoadState): Make the set of states
	be EMPTY, PRELOAD, LOADING, FINISHED.
	(gtk_file_chooser_default_init): Start in the LOAD_EMPTY state.
	(struct _GtkFileChooserDefault): Added a pending_select_paths
	field.
	(load_remove_timer): Add the new states.
	(load_setup_timer): Likewise.
	(load_timeout_cb): Likewise.  Switch to the LOAD_LOADING state.
	(browse_files_model_finished_loading_cb): Switch to the
	LOAD_FINISHED state.
	(enum PendingOp): Removed.
	(struct _GtkFileChooserDefault): Removed the pending_op and
	pending_select_path fields.
	(pending_select_paths_free): New utility function.
	(pending_select_paths_add): New utility function.
	(gtk_file_chooser_default_finalize): Call
	pending_select_paths_free().
	(pending_op_queue): Removed.
	(pending_op_process): Removed.
	(pending_select_paths_process): New function.
	(browse_files_model_finished_loading_cb): Call
	pending_select_paths_process().
	(center_selected_row_foreach_cb): Handle multiple selection by
	only centering the first row.
	(get_is_file_filtered): Constify.
	(gtk_file_chooser_default_select_path): Queue into a list of paths
	to select if we are not finished loading.
	(show_and_select_paths): New utility function.
	(up_folder_handler): Use pending_select_paths_add().
	(gtk_file_chooser_default_should_respond): Do not call
	pending_op_queue(); free the pending_selected_paths instead.
	(gtk_file_chooser_default_initial_focus): Don't queue a pending
	operation, and don't select the first row unconditionally --- this
	will happen when the folder is done loading.
	(shortcuts_row_activated_cb): Free the pending_select_paths.
	(pending_select_paths_store_selection): New utility function.
	(gtk_file_chooser_default_map): Call
	pending_select_paths_store_selection() to save the selection
	before reloading the folder.
	(select_func): Umm?  Call gtk_tree_selection_select_iter().  Don't
	move the cursor here; it will be done when processing the pending paths.

	* tests/testfilechooser.c (main): Add a button to the command
	window to unmap and remap the file chooser.
2005-01-25 01:34:31 +00:00
Alessio Frusciante
ef2919fe7f Updated italian translation. 2005-01-24 20:53:26 +00:00
Raphael Higino
7cbe12fa99 Updated pt_BR translation 2005-01-24 18:34:42 +00:00
Raphael Higino
f670396a79 Updated pt_BR translation 2005-01-24 18:30:09 +00:00
Matthias Clasen
f98b70be84 Document GtkWidget::style-set. (#164222, Alex Graveley)
2005-01-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwidget.c (gtk_widget_class_init): Document
	GtkWidget::style-set.  (#164222, Alex Graveley)
2005-01-24 15:14:38 +00:00
Frank Arnold
b05ae83531 Fix for #164724
2005-01-24  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Fix for #164724
2005-01-24 04:37:12 +00:00
Alessio Frusciante
a38be0f32a Updated Italian translation. 2005-01-23 21:15:16 +00:00
Matthias Clasen
80c7acf9c2 Close the loader before unreffing it in the error case. (#164915, Crispin
2005-01-22  Matthias Clasen  <mclasen@redhat.com>

	* gdk-pixbuf-loader.c (gdk_pixbuf_loader_new_with_type)
	(gdk_pixbuf_loader_new_with_mime_type): Close the loader
	before unreffing it in the error case.  (#164915, Crispin
	Flowerday)
2005-01-23 04:37:04 +00:00
Matthias Clasen
d63f16a923 Remove the accidentally added prototype for this unimplemented function.
2005-01-22  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkdisplay.h (gdk_display_add_client_message_filter_full):
	Remove the accidentally added prototype for this unimplemented
	function.  (#164893, Jeff Franks)
2005-01-23 04:27:39 +00:00
Matthias Clasen
73b39c9b3b Avoid spurious drags. (#164884)
2005-01-22  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_leave_notify): Avoid spurious
	drags.  (#164884)
2005-01-23 04:00:47 +00:00
Tor Lillqvist
e9068f0fe5 Merged from HEAD:
2005-01-23  Tor Lillqvist  <tml@novell.com>

	Merged from HEAD:

	Fix for #162790, by Iwan Wong:

	* gdk/win32/gdkdrawable-win32.c: Implement dashed lines
	correctly. Simplify the interface to render_line_horizontal() and
	render_line_vertical(). Need to draw lines "manually" also on
	NT-based Windowses if we have a dash offset or are drawing
	double-dashed lines.

	* gdk/win32/gdkprivate-win32.h: Keep also the dash offset,
	double-dash flag, and a brush for the background colour (used by
	the odd dashes in the double-dash line style) in the GdkGCWin32
	struct.

	* gdk/win32/gdkgc-win32.c: Set up above new fields.
2005-01-23 01:23:10 +00:00
Tor Lillqvist
49205d1377 Fix for #163702, from Ivan Wong:
* gdk/win32/gdkprivate-win32.h
	* gdk/win32/gdkglobals-win32.c: New flag _ignore_destroy_clipboard.

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): Handle
	WM_DESTROYCLIPBOARD. Unless _ignore_destroy_clipboard, generate a
	GDK_SELECTION_CLEAR event.

	* gdk/win32/gdkselection-win32.c
	(gdk_selection_owner_set_for_display): Set _ignore_destroy_clipboard
	when emptying the clipboard ourselves.

	(gdk_selection_send_notify_for_display): Remove the artifical
	GDK_SELECTION_CLEAR event generation.
2005-01-23 00:42:50 +00:00
Tor Lillqvist
37144a75fa Handle Greek tonos dead accent key. (#164859, reported and fix verified by
2005-01-23  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap): Handle Greek tonos
	dead accent key. (#164859, reported and fix verified by Daniel
	Atallah.)

	* gtk/gtkimcontextsimple.c (gtk_compose_seqs): Handle
	GDK_Greek_accentdieresis (tonos and dialytika) combining with iota
	and upsilon.
2005-01-23 00:23:14 +00:00
Tor Lillqvist
b7124b938c Don't call GetVolumeInformation() for network drives. They might be
2005-01-23  Tor Lillqvist  <tml@novell.com>

	* gtk/gtkfilesystemwin32.c (gtk_file_system_win32_volume_get_display_name):
	Don't call GetVolumeInformation() for network drives. They might
	be disconnected, and calling GetVolumeInformation() will then
	cause long delays. (#164448) It seems to be very hard to reliably
	find out whether a network drive is connected or not, so it's
	easier to just not try getting the volume name for them. See the
	bug report for discussion.
2005-01-23 00:09:00 +00:00
Funda Wang
e23002b7f4 Updated Simplified Chinese translation 2005-01-22 08:01:28 +00:00
Priit Laes
f2553b827c Translation updated by Ivar Smolin.
2005-01-21  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-01-21 17:41:34 +00:00
Kjartan Maraas
a3cc4b98f3 Update Update some.
2005-01-21  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* nn.po: Update some.
2005-01-21 11:45:42 +00:00
Matthias Clasen
a7cd9932b7 Don't loop forever here, even if the only focusable widgets are labels.
2005-01-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdialog.c (gtk_dialog_map): Don't loop forever
	here, even if the only focusable widgets are labels.
2005-01-20 19:52:15 +00:00
Miloslav Trmac
72f3a28e86 Updated Czech translation.
2005-01-20  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-01-20 19:31:34 +00:00
Frank Arnold
156bd41f65 Updated German translation.
2005-01-20  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Updated German translation.
2005-01-20 16:12:03 +00:00
Francisco Javier F. Serrador
059668029d Updated Spanish translation.
2005-01-20  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-01-20 14:56:59 +00:00
Matthias Clasen
dfc1602d67 Don't reverse the order of modules when putting them in gtk_modules.
2005-01-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkmodules.c (load_module): Don't reverse the order
	of modules when putting them in gtk_modules.  (#162676, Dennis
	Cranston, patch by Remus Draica)
2005-01-20 13:32:47 +00:00
Matthias Clasen
7a6ad8b8c8 Don't crash if the tree is empty. (#164669, Priit Laes)
2005-01-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreeview.c (gtk_tree_view_search_move): Don't crash
	if the tree is empty.  (#164669, Priit Laes)
2005-01-20 13:17:30 +00:00
Manish Singh
682d8c6da4 Call GDK_DISPLAY_XDISPLAY with a display, not a window. Clean up the
Wed Jan 19 18:57:02 2005  Manish Singh  <yosh@gimp.org>

        * gdk/x11/gdkwindow-x11.c (gdk_window_get_frame_extents): Call
        GDK_DISPLAY_XDISPLAY with a display, not a window. Clean up the
        function a bit too.
2005-01-20 02:58:52 +00:00
Manish Singh
2b37f960d0 Squash strict aliasing warning in _NET_VIRTUAL_ROOTS code.
Wed Jan 19 17:17:31 2005  Manish Singh  <yosh@gimp.org>

        * gdk/x11/gdkwindow-x11.c (gdk_window_get_frame_extents): Squash
        strict aliasing warning in _NET_VIRTUAL_ROOTS code.
2005-01-20 01:20:32 +00:00
Tor Lillqvist
e445f739c4 Handle keyboards with ShiftLock (and not CapsLock) correctly. (#161814)
2005-01-19  Tor Lillqvist  <tml@novell.com>

	* gdk/win32/gdkkeys-win32.c (update_keymap,
	gdk_keymap_translate_keyboard_state): Handle keyboards with
	ShiftLock (and not CapsLock) correctly. (#161814)
2005-01-19 22:52:01 +00:00
Matthias Clasen
bb0603d449 In save mode, don't return paths containing nonexisting directories.
2005-01-19  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_should_respond):
	In save mode, don't return paths containing nonexisting
	directories.  (#162443, Jean Marie Favreau)
2005-01-19 21:06:32 +00:00
Matthias Clasen
58c1ace70e Use GLib limit macros to avoid sparse warnings. Pointed out by Kjartan
2005-01-19  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkobject.c (gtk_object_add_arg_type): Use GLib limit
	macros to avoid sparse warnings. Pointed out by Kjartan Maraas.
2005-01-19 20:08:37 +00:00
Matthias Clasen
a948d8b057 Precache the _NET_VIRTUAL_ROOTS atom.
2005-01-19  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkdisplay-x11.c: Precache the _NET_VIRTUAL_ROOTS
	atom.

	* gdk/x11/gdkwindow-x11.c (gdk_window_get_frame_extents):
	Support _NET_VIRTUAL_ROOTS.  (#163910, Carsten Haitzler)
2005-01-19 19:56:30 +00:00
Vincent van Adrighem
4debf6f906 Translation updated by Tino Meinen.
2005-01-19  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-01-19 18:06:05 +00:00
Priit Laes
a47d1157be Translation updated by Ivar Smolin.
2005-01-19  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-01-19 16:46:30 +00:00
Kjartan Maraas
1a06a54641 Update Update
2005-01-19  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-01-19 14:17:27 +00:00
Manish Singh
e6d17f4584 Actually assign PENDING_OP_NONE.
Tue Jan 18 13:56:09 2005  Manish Singh  <yosh@gimp.org>

        * gtk/gtkfilechooserdefault.c (pending_op_queue): Actually assign
        PENDING_OP_NONE.
2005-01-18 21:57:16 +00:00
Manish Singh
d401f3f1bb disambiguate nested if/else.
Tue Jan 18 13:46:46 2005  Manish Singh  <yosh@gimp.org>

        * gdk/x11/gdkdrawable-x11.c (_gdk_x11_have_render_with_trapezoids):
        disambiguate nested if/else.
2005-01-18 21:48:45 +00:00
Federico Mena Quintero
cf06d201f0 Don't queue an operation to select the first file if we are in SAVE or
2005-01-18  Federico Mena Quintero  <federico@ximian.com>

	* gtk/gtkfilechooserdefault.c (pending_op_queue): Don't queue an
	operation to select the first file if we are in SAVE or
	CREATE_FOLDER modes.  Executing that operation would overwrite the
	contents of the save-name entry.
2005-01-18 21:43:16 +00:00
Matthias Clasen
f13bfda4db Add some more NULL checks, patch by Michael Natterer.
2005-01-18  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkstyle.c (gtk_default_draw_check)
	(gtk_default_draw_option, gtk_default_draw_handle): Add some
	more NULL checks, patch by Michael Natterer.
2005-01-18 16:43:45 +00:00
Søren Sandmann
2033e6f0ec Check for NULL detail and NULL widget.
Tue Jan 18 10:55:47 2005  Søren Sandmann  <sandmann@redhat.com>

	* gtk/gtkstyle.c (gtk_default_draw_handle): Check for NULL detail
	and NULL widget.

	* gtk/gtkstyle.c (gtk_default_draw_box): Check for NULL detail and
	NULL widget. (#164477, Michael Natterer)
2005-01-18 16:00:12 +00:00
Matthias Clasen
8521a936ac Avoid X errors when running against servers which implement XRender < 0.4.
2005-01-18  Matthias Clasen  <mclasen@redhat.com>

	Avoid X errors when running against servers which
	implement XRender < 0.4.  (#164427, Albert Chin)

	* gdk/x11/gdkprivate-x11.h:
	* gdk/x11/gdkdrawable-x11.c (_gdk_x11_have_render_with_trapezoids):
	New function to check for trapezoid support in XRender.
	(gdk_x11_draw_trapezoids, _gdk_x11_drawable_draw_xtrapezoids):
	Use it here.

	* gdk/x11/gdkdisplay-x11.h (struct _GdkDisplayX11): Add a
	separate have_render_with_trapezoids field.

	* gdk/x11/gdkdisplay-x11.c (gdk_display_open): Initialize it.
2005-01-18 15:22:23 +00:00
Adam Weinberger
bc61febe5b Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-01-18 05:47:40 +00:00
Matthias Clasen
3019e3374b Remove debug output. (#164376, Jens Finke)
2005-01-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconview.c: Remove debug output. (#164376, Jens Finke)
2005-01-18 03:47:52 +00:00
Federico Mena Quintero
3ee6a92800 Merged from HEAD:
2005-01-17  Federico Mena Quintero  <federico@ximian.com>

	Merged from HEAD:

	Fix #162617.

	* gtk/gtkfilesystemunix.c (STAT_NEEDED_MASK): Take out
	GTK_FILE_INFO_IS_HIDDEN; we don't need to stat() to know this.
	(gtk_file_system_unix_get_folder): Make error reporting more
	accurate.  Don't bail out if we can't read the directory.
	(fill_in_stats): Don't return an error; just assume we don't have
	stat info for this folder's files.
	(fill_in_names): Don't create the hash table for the names if we
	can't open the directory.
	(gtk_file_folder_unix_list_children): Don't emit the
	"finished-loading" signal --- we don't do asynchronous loads, so
	we are always finished loading.
	(gtk_file_folder_unix_get_info): Use helper functions; handle the
	case where we can't stat '/'.
	(get_icon_type_from_path): Don't call fill_in_stats() here; only
	use the info we have.
	(fill_in_mime_type): Don't return an error.  Don't do anything if
	we don't have the stat info.
2005-01-18 01:02:40 +00:00
Matthias Clasen
27851f1579 Save and restore the selected row in the bookmark list and the save folder
2005-01-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdefault.c (shortcuts_add_bookmarks): Save
	and restore the selected row in the bookmark list and the
	save folder combo.  (#164290)
2005-01-17 07:05:59 +00:00
Matthias Clasen
9b1e677d2f Fix argument order in docs.
2005-01-16  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_new_with_backend):
	Fix argument order in docs.
2005-01-17 04:28:02 +00:00
Vincent van Adrighem
9d6cb67aff Translation updated by Tino Meinen.
2005-01-16  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-01-16 18:35:10 +00:00
Miloslav Trmac
c018ec54f4 Updated Czech translation.
2005-01-16  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-01-16 15:59:28 +00:00
Matthias Clasen
0fb9454174 Some updates. 2005-01-16 04:13:02 +00:00
Matthias Clasen
4150e5cbe1 Prefer LTR over RTL if the keymap is neutral. (#164125, Phil Blundell)
2005-01-15  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktextview.c (gtk_text_view_check_keymap_direction):
	* gtk/gtkentry.c (gtk_entry_create_layout): Prefer LTR over RTL
	if the keymap is neutral.  (#164125, Phil Blundell)
2005-01-16 03:53:41 +00:00
Marcel Telka
9ad73f0152 Updated Slovak translation.
2005-01-15  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-01-15 17:02:30 +00:00
Laszlo Dvornik
53dd99416e Hungarian translation updated.
2005-01-15  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-01-15 12:26:22 +00:00
Funda Wang
6d43233717 Updated Simplified Chinese translation 2005-01-14 15:16:16 +00:00
Duarte Loreto
88614f43b5 Updated Portuguese translation.
2005-01-14  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-01-14 08:25:21 +00:00
Matthias Clasen
7ad308c721 Add an OS_LINUX conditional.
2005-01-13  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Add an OS_LINUX conditional.

	* gdk/Makefile.am (TESTS):
	* gdk-pixbuf/Makefile.am (TESTS):
	* gtk/Makefile.am (TESTS): Only run abicheck on Linux.  (#163917,
	Roger Leigh)
2005-01-13 15:18:22 +00:00
Matthias Clasen
820ec627e9 Make the headers-visible property readwrite instead of just writable, and
2005-01-13  Matthias Clasen <mclasen@redhat.com>

	* gtk/gtktreeview.c: (gtk_tree_view_class_init),
	(gtk_tree_view_set_headers_clickable): Make the headers-visible
	property readwrite instead of just writable, and remove the
	g_return_if_fail check that there is a model when setting this
	property.  (#163851, Richard Hult)
2005-01-13 14:12:14 +00:00
Raphael Higino
ef73798880 Updated pt_BR translation 2005-01-12 18:39:29 +00:00
Artur Flinta
3f16fc983f Updated Polish translation by GNOME PL Team.
2005-01-12  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-01-12 08:46:08 +00:00
Artur Flinta
3894ada19f Updated Polish translation by GNOME PL Team.
2005-01-12  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-01-12 07:29:51 +00:00
Laszlo Dvornik
950e94a7d3 Hungarian translation updated by Gabor Kelemen.
2005-01-11  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated by Gabor Kelemen.
2005-01-11 14:56:01 +00:00
Artur Flinta
901f09864a Updated Polish translation by GNOME PL Team.
2005-01-11  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-01-11 08:55:24 +00:00
Owen Taylor
4d97569882 Adding missing ChangeLog.pre* to EXTRA_DIST.
2005-01-10  Owen Taylor  <otaylor@redhat.com>

        * Makefile.am (EXTRA_DIST): Adding missing ChangeLog.pre*
        to EXTRA_DIST.
2005-01-10 16:04:27 +00:00
5924 changed files with 1231577 additions and 2607761 deletions

37
.cvsignore Normal file
View File

@@ -0,0 +1,37 @@
*.lo
config.log
config.h
config.h.in
libtool
config.status
stamp-h
stamp-h1
Makefile
Makefile.in
aclocal.m4
configure
config.h.win32
gtk-config-2.0
config.cache
ABOUT-NLS
intl
stamp-h.in
gtk+.spec
gtk+-2.0.pc
gtk+-2.0-uninstalled.pc
gtk+-linux-fb-2.0.pc
gtk+-nanox-2.0.pc
gtk+-x11-2.0.pc
gdk-2.0.pc
gdk-2.0-uninstalled.pc
gdk-linux-fb-2.0.pc
gdk-nanox-2.0.pc
gdk-x11-2.0.pc
gdk-pixbuf-2.0.pc
gdk-pixbuf-2.0-uninstalled.pc
gtk-zip.sh
missing
install-sh
mkinstalldirs
sgml
autom4te.cache

1
.gitignore vendored
View File

@@ -1 +0,0 @@
/subprojects/*/

View File

@@ -1,82 +0,0 @@
stages:
- build
- flatpak
- deploy
.cache-paths: &cache-paths
paths:
- _ccache/
- subprojects/gdk-pixbuf/
- subprojects/glib/
- subprojects/graphene/
- subprojects/libepoxy/
- subprojects/pango/
fedora-x86_64:
image: registry.gitlab.gnome.org/gnome/gtk/master:v2
stage: build
script:
- bash -x ./.gitlab-ci/test-docker.sh
artifacts:
when: on_failure
name: "gtk-${CI_COMMIT_REF_NAME}"
paths:
- "${CI_PROJECT_DIR}/_build/meson-logs"
cache:
key: "$CI_JOB_NAME"
<<: *cache-paths
.mingw-defaults: &mingw-defaults
stage: build
tags:
- win32
script:
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
cache:
key: "%CI_JOB_NAME%"
<<: *cache-paths
msys2-mingw32:
variables:
MSYSTEM: "MINGW32"
CHERE_INVOKING: "yes"
<<: *mingw-defaults
.flatpak-defaults: &flatpak-defaults
image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master
stage: flatpak
artifacts:
paths:
- "${APPID}-dev.flatpak"
expire_in: 1 day
script:
- bash -x ./.gitlab-ci/flatpak-build.sh "${APPID}"
flatpak:demo:
variables:
APPID: org.gtk.Demo
<<: *flatpak-defaults
flatpak:widget-factory:
variables:
APPID: org.gtk.WidgetFactory
<<: *flatpak-defaults
pages:
image: registry.gitlab.gnome.org/gnome/gtk/master:v2
stage: deploy
script:
- meson -Ddocumentation=true _build .
- ninja -C _build
- ninja -C _build gdk4-doc gsk4-doc gtk4-doc
- mkdir -p public/
- mv _build/docs/reference/gtk/html/ public/gtk/
- mv _build/docs/reference/gdk/html/ public/gdk/
- mv _build/docs/reference/gsk/html/ public/gsk/
artifacts:
paths:
- public
only:
- master

View File

@@ -1,82 +0,0 @@
FROM fedora:29
RUN dnf -y install \
hicolor-icon-theme \
adwaita-icon-theme \
atk-devel \
at-spi2-atk-devel \
avahi-gobject-devel \
cairo-devel \
cairo-gobject-devel \
ccache \
colord-devel \
cups-devel \
desktop-file-utils \
elfutils-libelf-devel \
fribidi-devel \
gcc \
gcc-c++ \
gdk-pixbuf2-devel \
gdk-pixbuf2-modules \
gettext \
git \
glib2-devel \
glibc-devel \
glibc-headers \
gobject-introspection-devel \
graphene-devel \
gstreamer1-devel \
gstreamer1-plugins-good \
gstreamer1-plugins-bad-free-devel \
gstreamer1-plugins-base-devel \
gtk-doc \
iso-codes \
itstool \
json-glib-devel \
lcov \
libattr-devel \
libepoxy-devel \
libffi-devel \
libmount-devel \
librsvg2 \
libselinux-devel \
libXcomposite-devel \
libXcursor-devel \
libXcursor-devel \
libXdamage-devel \
libXfixes-devel \
libXi-devel \
libXinerama-devel \
libxkbcommon-devel \
libXrandr-devel \
libXrender-devel \
libxslt \
mesa-dri-drivers \
mesa-libEGL-devel \
mesa-libwayland-egl-devel \
ninja-build \
pango-devel \
pcre-devel \
python3 \
python3-pip \
python3-wheel \
redhat-rpm-config \
sassc \
systemtap-sdt-devel \
vulkan-devel \
wayland-devel \
wayland-protocols-devel \
which \
xorg-x11-server-Xvfb \
&& dnf clean all
RUN pip3 install meson==0.49.0
ARG HOST_USER_ID=5555
ENV HOST_USER_ID ${HOST_USER_ID}
RUN useradd -u $HOST_USER_ID -ms /bin/bash user
USER user
WORKDIR /home/user
ENV LANG C.UTF-8

View File

@@ -1,44 +0,0 @@
#!/bin/bash
set -e
appid=$1
builddir=app
repodir=repo
flatpak-builder \
--stop-at=gtk \
${builddir} \
build-aux/flatpak/${appid}.json
flatpak-builder \
--run ${builddir} build-aux/flatpak/${appid}.json \
meson \
--prefix /app \
--libdir /app/lib \
--buildtype debug \
-Dx11-backend=true \
-Dwayland-backend=true \
-Dprint-backends=file \
-Dbuild-tests=false \
-Dbuild-examples=false \
-Dintrospection=false \
-Ddemos=true \
_build .
flatpak-builder \
--run ${builddir} build-aux/flatpak/${appid}.json \
ninja -C _build install
flatpak-builder \
--finish-only \
--repo=${repodir} \
${builddir} \
build-aux/flatpak/${appid}.json
flatpak build-bundle \
${repodir} \
${appid}-dev.flatpak \
--runtime-repo=https://flathub.org/repo/flathub.flatpakrepo \
${appid}

View File

@@ -1,11 +0,0 @@
#!/bin/bash
set -e
TAG="registry.gitlab.gnome.org/gnome/gtk/master:v2"
sudo docker build --build-arg HOST_USER_ID="$UID" --tag "${TAG}" \
--file "Dockerfile" .
sudo docker run --rm --security-opt label=disable \
--volume "$(pwd)/..:/home/user/app" --workdir "/home/user/app" \
--tty --interactive "${TAG}" bash

View File

@@ -1,32 +0,0 @@
#!/bin/bash
set -e
srcdir=$(pwd)
mkdir -p _ccache
export CCACHE_BASEDIR="$(pwd)"
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
ccache --zero-stats
ccache --show-stats
export CCACHE_DISABLE=true
meson \
-Dx11-backend=true \
-Dwayland-backend=true \
-Dbroadway-backend=true \
-Dvulkan=yes \
_build $srcdir
unset CCACHE_DISABLE
cd _build
ninja
ccache --show-stats
xvfb-run -a -s "-screen 0 1024x768x24" \
meson test \
--print-errorlogs \
--suite=gtk+ \
--no-suite=gtk+:gsk \
--no-suite=gtk+:a11y

View File

@@ -1,53 +0,0 @@
#!/bin/bash
set -e
if [[ "$MSYSTEM" == "MINGW32" ]]; then
export MSYS2_ARCH="i686"
else
export MSYS2_ARCH="x86_64"
fi
# Update everything
pacman --noconfirm -Suy
# Install the required packages
pacman --noconfirm -S --needed \
base-devel \
git \
mingw-w64-$MSYS2_ARCH-toolchain \
mingw-w64-$MSYS2_ARCH-ccache \
mingw-w64-$MSYS2_ARCH-pkg-config \
mingw-w64-$MSYS2_ARCH-gobject-introspection \
mingw-w64-$MSYS2_ARCH-meson \
mingw-w64-$MSYS2_ARCH-adwaita-icon-theme \
mingw-w64-$MSYS2_ARCH-atk \
mingw-w64-$MSYS2_ARCH-cairo \
mingw-w64-$MSYS2_ARCH-gdk-pixbuf2 \
mingw-w64-$MSYS2_ARCH-glib2 \
mingw-w64-$MSYS2_ARCH-graphene \
mingw-w64-$MSYS2_ARCH-json-glib \
mingw-w64-$MSYS2_ARCH-libepoxy \
mingw-w64-$MSYS2_ARCH-pango \
mingw-w64-$MSYS2_ARCH-fribidi \
mingw-w64-$MSYS2_ARCH-gst-plugins-bad \
mingw-w64-$MSYS2_ARCH-shared-mime-info
mkdir -p _ccache
export CCACHE_BASEDIR="$(pwd)"
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
# Build
ccache --zero-stats
ccache --show-stats
export CCACHE_DISABLE=true
meson \
-Denable-x11-backend=false \
-Denable-wayland-backend=false \
-Denable-win32-backend=true \
-Dvulkan=no \
_build
unset CCACHE_DISABLE
ninja -C _build
ccache --show-stats

View File

@@ -1,36 +0,0 @@
## Steps to reproduce
1. ...
2. ...
3. ...
<!--
You should try and reproduce with the demos applications available
under the `demos` directory, or the test programs in the `tests` directory.
Alternatively, please attach a *small and self-contained* example that
exhibits the issue.
-->
## Current behavior
<!--
Please describe the current behaviour
-->
## Expected outcome
<!--
Please describe the expected outcome
-->
## Version information
<!--
- Which version of GTK+ you are using
- What operating system and version
- For Linux, which distribution
- If you built GTK+ yourself, the list of options used to configure the build
-->
## Additional information
<!--
- Screenshots or screen recordings are useful for visual errors
- Please report any warning or message printed on the terminal
-->

View File

@@ -1,34 +0,0 @@
## Steps to reproduce
1. ...
2. ...
3. ...
<!--
You should try and reproduce with the demos applications available
under the `demos` directory, or the test programs in the `tests` directory.
Alternatively, please attach a *small and self-contained* example that
exhibits the issue.
-->
## Version information
<!--
- Which version of GTK+ you are using
- What operating system and version
- for Linux, which distribution
- If you built GTK+ yourself, the list of options used to configure the build
-->
## Warnings
<!--
- If the application generates warning messages before crashing please
report them here
-->
## Backtrace
<!--
- Attaching a stack trace obtained using GDB is appreciated; follow the
instructions on the wiki:
https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces
-->

39
AUTHORS
View File

@@ -1,12 +1,12 @@
Please do not mail any of the authors listed here
asking questions about this version of GTK+.
Original Authors
----------------
Peter Mattis <petm@xcf.berkeley.edu>
Spencer Kimball <spencer@xcf.berkeley.edu>
Josh MacDonald <jmacd@xcf.berkeley.edu>
Please do not mail the original authors asking questions about this
version of GTK+.
The GTK+ Team (in alphabetical order)
-------------------------------------
Shawn T. Amundson <amundson@gtk.org>
@@ -30,36 +30,3 @@ Owen Taylor <otaylor@gtk.org>
There are many others who have contributed patches; we thank them,
GTK+ is much better because of them.
Over time, GTK+ has incorporated some pieces of software which
started as independent projects. We list the original authors here:
MS-Windows theme engine
-----------------------
Raymond Penners
Dom Lachowicz
Pixbuf theme engine
-------------------
Owen Taylor
IME input method
----------------
Takuro Ashie
Kazuki IWAMOTO
Mac OS X backend
----------------
Anders Carlsson
DirectFB backend
----------------
Denis Oliver Kropp
Sven Neumann
Mike Emmel

View File

@@ -1,266 +0,0 @@
# Contribution guidelines
Thank you for considering contributing to the GTK project!
These guidelines are meant for new contributors, regardless of their level
of proficiency; following them allows the maintainers of the GTK project to
more effectively evaluate your contribution, and provide prompt feedback to
you. Additionally, by following these guidelines you clearly communicate
that you respect the time and effort that the people developing GTK put into
managing the project.
GTK is a complex free software GUI toolkit, and it would not exist without
contributions from the free and open source software community. There are
many things that we value:
- bug reporting and fixing
- documentation and examples
- tests
- new features
Please, do not use the issue tracker for support questions. If you have
questions on how to use GTK effectively, you can use:
- the `#gtk+` IRC channel on irc.gnome.org
- the [gtk](https://mail.gnome.org/mailman/listinfo/gtk-list) mailing list,
for general questions on GTK
- the [gtk-app-devel](https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list)
mailing list, for questions on application development with GTK
- the [gtk-devel](https://mail.gnome.org/mailman/listinfo/gtk-devel-list)
mailing list, for questions on developing GTK itself
You can also look at the GTK tag on [Stack
Overflow](https://stackoverflow.com/questions/tagged/gtk).
The issue tracker is meant to be used for actionable issues only.
## How to report bugs
### Security issues
You should not open a new issue for security related questions.
When in doubt, send an email to the [security](mailto:security@gnome.org)
mailing list.
### Bug reports
If you're reporting a bug make sure to list:
0. which version of GTK are you using?
0. which operating system are you using?
0. the necessary steps to reproduce the issue
0. the expected outcome
0. a description of the behavior; screenshots are also welcome
0. a small, self-contained example exhibiting the behavior; if this
is not available, try reproducing the issue using the GTK examples
or interactive tests
If the issue includes a crash, you should also include:
0. the eventual warnings printed on the terminal
0. a backtrace, obtained with tools such as GDB or LLDB
For small issues, such as:
- spelling/grammar fixes in the documentation
- typo correction
- comment clean ups
- changes to metadata files (CI, `.gitignore`)
- build system changes
- source tree clean ups and reorganizations
You should directly open a merge request instead of filing a new issue.
### Features and enhancements
Feature discussion can be open ended and require high bandwidth channels; if
you are proposing a new feature on the issue tracker, make sure to make
an actionable proposal, and list:
0. what you're trying to achieve
0. prior art, in other toolkits or applications
0. design and theming changes
If you're proposing the integration of new features it helps to have
multiple applications using shared or similar code, especially if they have
iterated over it various times.
Each feature should also come fully documented, and with tests.
## Your first contribution
### Prerequisites
If you want to contribute to the GTK project, you will need to have the
development tools appropriate for your operating system, including:
- Python 3.x
- Meson
- Ninja
- Gettext (19.7 or newer)
- a [C99 compatible compiler](https://wiki.gnome.org/Projects/GLib/CompilerRequirements)
Up-to-date instructions about developing GNOME applications and libraries
can be found on [the GNOME Developer Center](https://developer.gnome.org).
The GTK project uses GitLab for code hosting and for tracking issues. More
information about using GitLab can be found [on the GNOME
wiki](https://wiki.gnome.org/GitLab).
### Dependencies
In order to get GTK from Git installed on your system, you need to have the
required versions of all the software dependencies required by GTK; typically,
this means a recent version of GLib, Cairo, Pango, and ATK, as well as the
platform-specific dependencies for the windowing system you are using (Wayland,
X11, Windows, or macOS).
The core dependencies for GTK are:
- [GLib, GObject, and GIO](https://gitlab.gnome.org/GNOME/glib)
- [Cairo](http://cairographics.org)
- [Pango](https://gitlab.gnome.org/GNOME/pango)
- [GdkPixbuf](https://gitlab.gnome.org/GNOME/gdk-pixbuf)
- [Epoxy](https://github.com/anholt/libepoxy)
- [ATK](https://gitlab.gnome.org/GNOME/atk)
- [Graphene](https://github.com/ebassi/graphene)
GTK will attempt to download and build some of these dependencies if it
cannot find them on your system.
Additionally, you may want to look at projects that create a development
environment for you, like [jhbuild](https://wiki.gnome.org/HowDoI/Jhbuild)
and [gvsbuild](https://github.com/wingtk/gvsbuild).
### Getting started
You should start by forking the GTK repository from the GitLab web UI, and
cloning from your fork:
```sh
$ git clone https://gitlab.gnome.org/yourusername/gtk.git
$ cd gtk
```
**Note**: if you plan to push changes to back to the main repository and
have a GNOME account, you can skip the fork, and use the following instead:
```sh
$ git clone git@gitlab.gnome.org:GNOME/gtk.git
$ cd gtk
```
To compile the Git version of GTK on your system, you will need to
configure your build using Meson:
```sh
$ meson _builddir .
$ cd _builddir
$ ninja
```
Typically, you should work on your own branch:
```sh
$ git checkout -b your-branch
```
Once you've finished working on the bug fix or feature, push the branch
to the Git repository and open a new merge request, to let the GTK
maintainers review your contribution.
### Code reviews
Each contribution is reviewed by the core developers of the GTK project.
The [CODE-OWNERS](./docs/CODE-OWNERS) document contains the list of core
contributors to GTK and the areas for which they are responsible; you
should ensure to receive their review and signoff on your changes.
### Commit messages
The expected format for git commit messages is as follows:
```plain
Short explanation of the commit
Longer explanation explaining exactly what's changed, whether any
external or private interfaces changed, what bugs were fixed (with bug
tracker reference if applicable) and so forth. Be concise but not too
brief.
Closes #1234
```
- Always add a brief description of the commit to the _first_ line of
the commit and terminate by two newlines (it will work without the
second newline, but that is not nice for the interfaces).
- First line (the brief description) must only be one sentence and
should start with a capital letter unless it starts with a lowercase
symbol or identifier. Don't use a trailing period either. Don't exceed
72 characters.
- The main description (the body) is normal prose and should use normal
punctuation and capital letters where appropriate. Consider the commit
message as an email sent to the developers (or yourself, six months
down the line) detailing **why** you changed something. There's no need
to specify the **how**: the changes can be inlined.
- When committing code on behalf of others use the `--author` option, e.g.
`git commit -a --author "Joe Coder <joe@coder.org>"` and `--signoff`.
- If your commit is addressing an issue, use the
[GitLab syntax](https://docs.gitlab.com/ce/user/project/issues/automatic_issue_closing.html)
to automatically close the issue when merging the commit with the upstream
repository:
```plain
Closes #1234
Fixes #1234
Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1234
```
- If you have a merge request with multiple commits and none of them
completely fixes an issue, you should add a reference to the issue in
the commit message, e.g. `Bug: #1234`, and use the automatic issue
closing syntax in the description of the merge request.
### Commit access to the GTK repository
GTK is part of the GNOME infrastructure. At the current time, any
person with write access to the GNOME repository can merge changes to
GTK. This is a good thing, in that it encourages many people to work
on GTK, and progress can be made quickly. However, GTK is a fairly
large and complicated project on which many other things depend, so to
avoid unnecessary breakage, and to take advantage of the knowledge
about GTK that has been built up over the years, we'd like to ask
people committing to GTK to follow a few rules:
0. Ask first. If your changes are major, or could possibly break existing
code, you should always ask. If your change is minor and you've been
working on GTK for a while it probably isn't necessary to ask. But when
in doubt, ask. Even if your change is correct, somebody may know a
better way to do things. If you are making changes to GTK, you should
be subscribed to the [gtk-devel](https://mail.gnome.org/mailman/listinfo/gtk-devel-list)
mailing list; this is a good place to ask about intended changes.
The `#gtk+` IRC channel on irc.gnome.org is also a good place to find GTK
developers to discuss changes, but if you live outside of the EU/US time
zones, an email to the gtk-devel mailing list is the most certain and
preferred method.
0. Ask _first_.
0. Always write a meaningful commit message. Changes without a sufficient
commit message will be reverted.
0. Never push to the `master` branch, or any stable branches, directly; you
should always go through a merge request, to ensure that the code is
tested on the CI infrastructure at the very least. A merge request is
also the proper place to get a comprehensive code review from the core
developers of GTK.
If you have been contributing to GTK for a while and you don't have commit
access to the repository, you may ask to obtain it following the [GNOME account
process](https://wiki.gnome.org/AccountsTeam/NewAccounts).

19
COPYING
View File

@@ -1,15 +1,15 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -99,7 +99,7 @@ works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
@@ -411,7 +411,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -434,7 +434,7 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
@@ -463,8 +463,9 @@ convey the exclusion of warranty; and each file should have at least the
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307 USA.
Also add information on how to contact you by electronic and paper mail.

1728
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

4961
ChangeLog.pre-1-0 Normal file

File diff suppressed because it is too large Load Diff

9106
ChangeLog.pre-1-2 Normal file

File diff suppressed because it is too large Load Diff

28743
ChangeLog.pre-2-0 Normal file

File diff suppressed because it is too large Load Diff

1728
ChangeLog.pre-2-10 Normal file

File diff suppressed because it is too large Load Diff

7358
ChangeLog.pre-2-2 Normal file

File diff suppressed because it is too large Load Diff

11857
ChangeLog.pre-2-4 Normal file

File diff suppressed because it is too large Load Diff

7235
ChangeLog.pre-2-6 Normal file

File diff suppressed because it is too large Load Diff

1728
ChangeLog.pre-2-8 Normal file

File diff suppressed because it is too large Load Diff

55
HACKING Normal file
View File

@@ -0,0 +1,55 @@
If you want to hack on the GTK+ project, you'll need to have
the following packages installed:
- GNU autoconf 2.52
- GNU automake 1.4
- GNU libtool 1.4
- indent (GNU indent 1.9.1 is known good)
- GNU gettext 10.40
These should be available by ftp from ftp.gnu.org or any of the
fine GNU mirrors. Beta software can be found at alpha.gnu.org.
In order to get CVS gtk+ installed on your system, you need to have
the most recent CVS version of glib, pango, and atk installed as well.
The installation process of these libraries is similar to that of gtk+, but
needs to be fulfilled prior to installation of gtk+.
To compile a CVS version of gtk+ on your system, you will need to take
several steps to setup the tree for compilation. You can do all these
steps at once by running:
cvsroot/gtk+# ./autogen.sh
Basically this does the following for you:
cvsroot/gtk+# aclocal; automake; autoconf
The above commands create the "configure" script. Now you
can run the configure script in cvsroot/gtk+ to create all
the Makefiles.
Before running autogen.sh or configure, make sure you have libtool
in your path.
Note that autogen.sh runs configure for you. If you wish to pass
options like --prefix=/usr to configure you can give those options
to autogen.sh and they will be passed on to configure.
If at all possible, please use CVS to get the latest development version of
gtk+ and glib. You can do the following to get glib and gtk+ from cvs:
$ export CVSROOT=':pserver:anonymous@cvs.gnome.org:/cvs/gnome'
$ cvs login
(there is no password, just hit return)
$ cvs -z3 checkout glib
$ cvs -z3 checkout pango
$ cvs -z3 checkout atk
$ cvs -z3 checkout gtk+
For information about submitting patches and commiting changes
to CVS, see the README and README.cvs-commits files. In particular,
don't, under any circumstances, commit anything to CVS before
reading and understanding README.cvs-commmits.

39
INSTALL Normal file
View File

@@ -0,0 +1,39 @@
Prerequisites
=============
GTK+ requires the following packages:
- The GLib, Pango, and Atk libraries, available at the same location as GTK+
(Either Pango-1.0 or Pango-1.2 can be used with GTK+-2.2;
Pango-1.2 is recommended.)
- The TIFF, PNG, and JPEG image loading libraries. You most
likely have these installed on your system already. If not
these libraries are available from:
http://www.libtiff.org/
http://www.libpng.org/
http://www.ijg.org/
Simple install procedure
========================
% gzip -cd gtk+-2.6.7.tar.gz | tar xvf - # unpack the sources
% cd gtk+-2.6.7 # change to the toplevel directory
% ./configure # run the `configure' script
% make # build GTK
[ Become root if necessary ]
% make install # install GTK
The Details
===========
Complete information about installing GTK+ and related libraries can be found
in the file:
docs/reference/gtk/html/gtk-building.html
Or online at:
http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html

39
INSTALL.in Normal file
View File

@@ -0,0 +1,39 @@
Prerequisites
=============
GTK+ requires the following packages:
- The GLib, Pango, and Atk libraries, available at the same location as GTK+
(Either Pango-1.0 or Pango-1.2 can be used with GTK+-2.2;
Pango-1.2 is recommended.)
- The TIFF, PNG, and JPEG image loading libraries. You most
likely have these installed on your system already. If not
these libraries are available from:
http://www.libtiff.org/
http://www.libpng.org/
http://www.ijg.org/
Simple install procedure
========================
% gzip -cd gtk+-@GTK_VERSION@.tar.gz | tar xvf - # unpack the sources
% cd gtk+-@GTK_VERSION@ # change to the toplevel directory
% ./configure # run the `configure' script
% make # build GTK
[ Become root if necessary ]
% make install # install GTK
The Details
===========
Complete information about installing GTK+ and related libraries can be found
in the file:
docs/reference/gtk/html/gtk-building.html
Or online at:
http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html

191
Makefile.am Normal file
View File

@@ -0,0 +1,191 @@
## Makefile.am for GTK+
SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
# require automake 1.4
AUTOMAKE_OPTIONS = 1.7
EXTRA_DIST = \
HACKING \
makecopyright \
NEWS.pre-1-0 \
ChangeLog.pre-1-0 \
ChangeLog.pre-1-2 \
ChangeLog.pre-2-0 \
ChangeLog.pre-2-2 \
ChangeLog.pre-2-4 \
ChangeLog.pre-2-6 \
README.cvs-commits \
README.win32 \
config.h.win32 \
makefile.msc \
gtk-zip.sh.in \
sanitize-la.sh \
po/README.translators \
po/po2tbl.sed.in \
examples/aspectframe/Makefile \
examples/aspectframe/aspectframe.c \
examples/Makefile \
examples/README.1ST \
examples/extract.awk \
examples/extract.sh \
examples/arrow/Makefile \
examples/arrow/arrow.c \
examples/base/Makefile \
examples/base/base.c \
examples/buttonbox/Makefile \
examples/buttonbox/buttonbox.c \
examples/buttons/Makefile \
examples/buttons/buttons.c \
examples/buttons/info.xpm \
examples/calendar/Makefile \
examples/calendar/calendar.c \
examples/clist/Makefile \
examples/clist/clist.c \
examples/entry/Makefile \
examples/entry/entry.c \
examples/eventbox/Makefile \
examples/eventbox/eventbox.c \
examples/filesel/Makefile \
examples/filesel/filesel.c \
examples/gtkdial/Makefile \
examples/gtkdial/dial_test.c \
examples/gtkdial/gtkdial.c \
examples/gtkdial/gtkdial.h \
examples/helloworld/Makefile \
examples/helloworld/helloworld.c \
examples/helloworld2/Makefile \
examples/helloworld2/helloworld2.c \
examples/label/Makefile \
examples/label/label.c \
examples/list/Makefile \
examples/list/list.c \
examples/menu/Makefile \
examples/menu/menu.c \
examples/menu/itemfactory.c \
examples/notebook/Makefile \
examples/notebook/notebook.c \
examples/packbox/Makefile \
examples/packbox/packbox.c \
examples/paned/Makefile \
examples/paned/paned.c \
examples/pixmap/Makefile \
examples/pixmap/pixmap.c \
examples/progressbar/Makefile \
examples/progressbar/progressbar.c \
examples/radiobuttons/Makefile \
examples/radiobuttons/radiobuttons.c \
examples/rangewidgets/Makefile \
examples/rangewidgets/rangewidgets.c \
examples/rulers/Makefile \
examples/rulers/rulers.c \
examples/scribble-simple/Makefile \
examples/scribble-simple/scribble-simple.c \
examples/scribble-xinput/Makefile \
examples/scribble-xinput/scribble-xinput.c \
examples/scrolledwin/Makefile \
examples/scrolledwin/scrolledwin.c \
examples/selection/Makefile \
examples/selection/gettargets.c \
examples/selection/setselection.c \
examples/statusbar/Makefile \
examples/statusbar/statusbar.c \
examples/table/Makefile \
examples/table/table.c \
examples/text/Makefile \
examples/text/text.c \
examples/tictactoe/Makefile \
examples/tictactoe/tictactoe.c \
examples/tictactoe/tictactoe.h \
examples/tictactoe/ttt_test.c \
examples/tree/Makefile \
examples/tree/tree.c \
examples/wheelbarrow/Makefile \
examples/wheelbarrow/wheelbarrow.c \
examples/fixed/fixed.c \
examples/fixed/Makefile \
examples/frame/frame.c \
examples/frame/Makefile \
examples/spinbutton/spinbutton.c \
examples/spinbutton/Makefile \
examples/find-examples.sh
GDKTARGET=@gdktarget@
## Copy .pc files to target-specific names
gtk+-$(GDKTARGET)-2.0.pc: gtk+-2.0.pc
rm -f gtk+-$(GDKTARGET)-2.0.pc && \
cp gtk+-2.0.pc gtk+-$(GDKTARGET)-2.0.pc
gdk-$(GDKTARGET)-2.0.pc: gdk-2.0.pc
rm -f gdk-$(GDKTARGET)-2.0.pc && \
cp gdk-2.0.pc gdk-$(GDKTARGET)-2.0.pc
gtk+-$(GDKTARGET)-2.0-uninstalled.pc: gtk+-2.0-uninstalled.pc
rm -f gtk+-$(GDKTARGET)-2.0-uninstalled.pc && \
cp gtk+-2.0-uninstalled.pc gtk+-$(GDKTARGET)-2.0-uninstalled.pc
gdk-$(GDKTARGET)-2.0-uninstalled.pc: gdk-2.0-uninstalled.pc
rm -f gdk-$(GDKTARGET)-2.0-uninstalled.pc && \
cp gdk-2.0-uninstalled.pc gdk-$(GDKTARGET)-2.0-uninstalled.pc
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA= gdk-pixbuf-2.0.pc gdk-$(GDKTARGET)-2.0.pc gtk+-$(GDKTARGET)-2.0.pc
DISTCLEANFILES = \
gtk+-$(GDKTARGET)-2.0.pc \
gdk-$(GDKTARGET)-2.0.pc \
gtk+-$(GDKTARGET)-2.0-uninstalled.pc \
gdk-$(GDKTARGET)-2.0-uninstalled.pc
## copy the default target for this platform to gdk-2.0.pc and gtk+-2.0.pc
DEFAULT_GDKTARGET=x11
install-data-hook:
(cd $(DESTDIR)$(pkgconfigdir) && \
test -f gdk-$(DEFAULT_GDKTARGET)-2.0.pc && \
test -f gtk+-$(DEFAULT_GDKTARGET)-2.0.pc && \
rm -f gdk-2.0.pc && cp -f gdk-$(DEFAULT_GDKTARGET)-2.0.pc gdk-2.0.pc && \
rm -f gtk+-2.0.pc && cp -f gtk+-$(DEFAULT_GDKTARGET)-2.0.pc gtk+-2.0.pc) || \
(cd $(DESTDIR)$(pkgconfigdir) && \
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)
uninstall-local:
rm -f $(DESTDIR)$(pkgconfigdir)/gdk-2.0.pc
rm -f $(DESTDIR)$(pkgconfigdir)/gtk+-2.0.pc
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
.PHONY: files release sanity snapshot
files:
@files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \
echo $$p; \
done
@for subdir in $(SUBDIRS); do \
files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \
for file in $$files; do \
echo $$subdir/$$file; \
done; \
done
release:
rm -rf .deps */.deps
$(MAKE) distcheck
sanity:
./sanity_check $(VERSION)
snapshot:
$(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"`
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc

10632
NEWS

File diff suppressed because it is too large Load Diff

View File

@@ -1,903 +0,0 @@
Overview of Changes in GTK+ 2.0.0
=================================
* GtkTreeView fixes [Jonathan Blandford, Kristian Rietveld, Darin Adler]
* Build fixes [Anders Carlsson, Tor Lillqvist, Manish Singh]
* Bug fixes. [Thomas Leonard, Owen Taylor]
Overview of Changes in GTK+ 2.0.0 rc1
=====================================
* GtkTreeView fixes [Kristian Rietveld, Jonathan Blandford, Richard Hult]
* Text widget fixes [Havoc Pennington]
* Efficiency fixes when using Xft [Owen Taylor]
* Key handling fixes and other fixes for Win32 [Hans Breuer, Tor Lillqvist]
* Try to fix key handling without XKEYBOARD extension [Owen]
* Documentation fixes and improvements
[Matthias Clasen, Alexey Malyshev, Akira Tagoh, Vitaly Tishkov]
* Widget drawing improvements [Soeren Sandmann]
* Allow cycling between multiple menu bars with <Control>Tab [Owen]
* Try to build libraries with only shared library dependencies on Xft to
deal with transition to Xft2 [Owen]
* Portability fixes [Owen, Miroslaw Dobrzanski-Neumann]
* Don't use red as the default cursor color [Owen]
* Bug fixes, bug fixes, bug fixes.
Other contributors: Darin Adler, Jacob Berkman, Kevin Breit, Hans Breuer,
Anders Carlsson, Damon Chaplin, Finlay Dobbie, Jody Goldberg,
Andreas J. Guelzow, Scott Guilbeaux, Vlad Harchev, James Henstridge,
Tim Janik, Satyajit Kanungo, Charles Kerr, Sergey Kuzminov, Miles Lane,
Alexander Larsson, Paolo Maggi, Skip Montaro, Jan Mynarik, Sven Neumann,
Padraig O'Briain, Narayani Pattipati, Mark Patton, Havoc Pennington,
Ettore Perazzoli, Guillermo S. Romero, Manish Singh, Morten Welinder
Overview of Changes in GTK+ 1.3.15
==================================
* New stock and improved icon images
[Tuomas Kuosmanen, Jakub Steiner, Anders Carlsson]
* Widget drawing improvements for check and radio buttons,
spinbuttons [Soeren Sandmann]
* Clean up module search path algorithm, use GTK_PATH [Owen Taylor]
* Add GtkSetting for font name. [Richard Hestilow]
* Much improved key matching code, accelerators work independent
of group [Owen]
* Make mnemonics work for embedded GtkPlug widgets [Owen]
* Keynav improvements for GtkTreeView [Kristian Rietveld]
* Fix gtk_tree_view_scroll_to_cell() [Jonathan Blandford]
* Rename gtk_tree_view_get_iter_root() and gtk_tree_path_new_root()
to gtk_tree_view_get_iter_first() and gtk_tree_path_new_first(),
add compatibility macros.
* GtkTreeView bug fixes [Kristian, Anders, Damon Chaplin]
* GtkTextView bug fixes [Havoc Pennington]
* Pad class structures for future binary compatibility [Owen]
* Tutorial improvements [Sven Neumann, Matthias Clasen]
* Fixes for MULTIPLE selection target [Gregory Merchan, Owen]
* Fix problems with initial widget size [Owen]
* AIX compilation fixes [Miroslaw Dobrzanski-Neumann]
* Win32 fixes [Hans Breuer, Tor Lillqvist]
* Miscellaneous bug fixes
Other contributors: David L. Cooper, Eric Fischer, Jody Goldberg,
Satajyit Kanungo, Thomas Leonard, Mark Patton, Manish Singh,
Nicolas Setton
Overview of Changes in GTK+ 1.3.14
==================================
* Keyboard focus improvements [Owen Taylor]
* Code cleanup [Matthias Clasen, Manish Singh, Darin Adler]
* Fix accidentally exported variables [Mark McLoughlin]
* GtkTreeView fixes [Jonathan Blandford, Kristian Rietveld, John Harper, Darin]
* Default to yellow tooltips [Owen]
* RC file fixes for reloading, priorities [Owen, Matthias]
* GtkMenu behavior improvements and bug fixes [Owen, Arnaud Charlet]
* GtkTextView fixes [Havoc Pennington, Daniel Elstner, Dennis Bjorklund]
* Improve keynav for paned widgets, tooltips, spin buttons, notebooks,
scrolled windows [Soeren Sandmann, Padraig, Owen]
* Add Emacs/Default key themes [Owen]
* Win32 fixes [Hans Breuer, Tor Lillqvist]
* Ethiopic input methods [Daniel Yacob]
* Opaque paned window resizing [Soeren]
* Tweak table expansion behavior [Tim Janik]
* Fix GtkCalendar focus drawing [Bill Haneman]
* Allow themeable cursor thickness [Bill]
* Start of fixing of tutorial for GTK+-2.0 [Matthias]
* Add a ::adjust-bounds signal to GtkRange to allow spreadsheet style
scrollbars. [Jody Goldberg]
* Add the ability to turn on multiple selection for GtkFileSel [Manish]
* Bug fixes
Other contributors: Jacob Berkman, Padraig O'Briain, Anders Carlsson,
Johan Dahlin, Richard Hult, Stefan Kost, Alex Larsson, Thomas Leonard,
Paolo Maggi, Alexey Malyshev, Federico Mena Quintero, Skip Montaro,
Sven Neumann, Havoc Pennington, Laszlo Peter, Christian Rose, Joe Shaw,
Kevin Vandersloot, Morten Welinder, Peter Williams
Overview of Changes in GTK+ 1.3.13
==================================
* Tree view fixes. [Kristian Rietveld, Jonathan Blandford, Anders Carlsson]
* Tree view support for low-vision themes [Bill Haneman]
* Text view bug fixes. [Havoc Pennington]
* Win32 fixes and improvements. [Tor Lillqvist, Hans Breuer,
Archaeopteryx Software]
* Documentation improvements [Matthias Clasen, Havoc Pennington]
* Accelerate alpha compositing using RENDER extension if present,
and optimize the non-RENDER case a lot. [Owen Taylor]
* Add support for "optional keybindings" (action signal returns FALSE) [Owen]
* Fixed the infamous changing directory deletes filename bug
[Owen and a cast of thousands]
* Add mouse cursor hiding for text widgets [Anders Carlsson]
* Simple Hangul input module [Yusuke Tabata]
* Removed the scary startup warning.
* GdkPixbuf pixel handling fixes [Owen, Michael Hore, Jim Cape]
* Converted GtkFileSelection and GtkFontSelection to use GtKTreeView widgets
instead of the deprecated GtkCList [Owen]
* gtkhsv.h was installed by mistake, fixed that. [reported by Ross Burton]
* gdk_pixbuf_render_to_drawable() now also handles alpha pixbufs.
* Made Gtkimage draw GtkPixmap, GtkImage, GdkPixbuf insensitive, prelighted,
etc. [Havoc, Owen]
* Marked gtk_item_factory_path_from_widget() G_CONST_RETURN. [Matt Wilson]
* gtk_image_menu_item_new_from_stock() now falls back to
new_with_mnemonic, for consistency with gtk_button_new_from_stock()
[Havoc Pennington]
* GdkModifierType is now consistently used for modifier mask parameters
[Mark Patton]
* gtk_widget_set_accel_path() is now publically exported.
Other contributors: Darin Adler, Jeffrey Baker, Damon Chaplin, Brian Cameron,
Murray Cumming, James Henstridge, Jacob Berkman, Arnaud Charlet, Jeff Franks,
Jeff Garzik, Jody Goldberg, Diego Gonzalez, Melvin Hadasht, Raja Harinath,
Tim Janik, Mike Kestner, Mathieu Lacage, Alex Larsson, Ryan Lovett,
Mark McLoughlin, Sven Neumann, Padraig O'Briain, Xavier Ordoquy, Chris Phelps,
Detlef Reichl, Guillermo S. Romero, Federico Mena Quintero, Manish Singh,
HideToshi Tajima, Vitaly Tishkov, Jon Trowbridge, Sergey Vlasov.
Overview of Changes in GTK+ 1.3.12
==================================
* Fix problems with PNG saving [Michael Natterer]
* Cleanups of deprecated usages [Sebastian Wilhelmi]
* Win32 fixes [Tor Lillqvist]
* Documentation improvements [Matthias Clasen, Havoc Pennington,
Vitaly Tishkov]
* Frame buffer port fixes [Manish Singh]
* GtkTextView bug fixes [Havoc Pennington, Chris Phelps]
* Menu behavior improvements [Kristian Rietveld]
* Make focus line width configurable, focus color work on
dark themes. [Bill Haneman, Owen Taylor]
* Add state argument to gtk_paint_focus() [Bill]
* Added incremental revalidation to tree view, for better apparent speed
[Jonathan Blandford]
* Remove useless gtk_tree_view_column_cell_event() [Jonathan]
* Display XIM status in a separate window [HideToshi Tajima]
* Add GDK_DEBUG=nograbs to disable pointer, keyboard grabs [Jacob Berkman]
* Add menu of Unicode control characters to GtkEntry, GtkTextView
[Dov Grobgeld, Havoc]
* Pass key releases along to input methods [Owen]
* Many bug fixes
Other contributors: Darin Adler, Fabrice Bellet, Chris Blizzard,
Hans Breuer, Anders Carlsson, Damon Chaplin, Murray Cumming, Jeff Franks,
James Henstridge, Tim Janik, Alex Larsson, George Lebl, Kjartan, Maraas,
Sven Neumann, Seth Nickell, Padraig O'Briain, Soeren Sandmann, Manish Singh,
Matt Wilson
Overview of Changes in GTK+ 1.3.11
==================================
* Massive rework of accelerator API and implementation (Tim Janik)
* Major fixes to resizing and redrawing to eliminate hysteresis
and optimize. (Owen Taylor, Soeren Sandmann)
* Make many widgets NO_WINDOW to improve appearance and reduce
drawing overhead (Owen)
* Text view fixes (Havoc Pennington)
* Make child widgets in GtkTextView work (Havoc)
* GtkTreeModelSort fixage (Jonathan Blandford, Kristian Rietveld)
* Clean up GtkTreeView drag and drop support (Owen)
* Misc tree view fixes and improvements (Jonathan, Kristian, Anders, Matt Wilson)
* Add gtk_window_get/set_focus(), gtk_window_set_default() as public
functions (Owen, Damian Ivereigh)
* Fixes to GtkPlug/GtkSocket (Michael Meeks, Owen)
* Change button ordering in standard dialogs to correspond to
GNOME usability project proposal (Gregory Merchan)
* Add support for context sensitivity in input methods (Owen)
* Hook up gtk_im_context_set_use_preedit() (Hidetoshi Tajima)
* Fix gdk_window_scroll() and other aspects of big windows (Owen)
* Remove need for X connection for class initialization (Jacob Berkman)
* Propagate key events to parents of focused widget (Owen)
* Don't export normal GTK+ marshalers, export deprecated compat marshalers (Owen)
* Many Win32 Fixes and improvements (Hans Breuer, Tor Lillqvist)
* Bug and documentation fixing (Matthias Clasen, Anders Carlsson,
Jacob Berkman, others.)
Other Contributors:
Darin Adler, Marius Andreiana, Erwann Chenede, Murray Cumming, Janet Davis,
Daniel Egger, Daniel Elstner, Jeff Franks, Alex Larsson, George Lebl,
Sergey Kuzminov, Eric Lemings, Arkadiusz Miskiewicz, Padraig O'Briain, Sven Neumann,
Kristian Rietveld, Nicolas Setton, Manish Singh, Vitaly Tishkov, Sebastian Wilhelmi,
Michael Natterer
Overview of Changes in GTK+ 1.3.10
==================================
* GtkTextView fixes [Havoc Pennington]
* GtkTreeView fixes and improvements [Jonathan Blandford, Kristian,
Manish Singh, Joshua Pritikin, Oleg Maiboroda, James Henstridge]
* gtkdemo improvements [Kristian Rietveld]
* Drag and drop fixes to generic code and widgets
[Owen Taylor, Damian Ivereigh]
* Documentation improvement [Havoc Pennington, Matthias Clasen]
* Spelling fixes [Jacob Berkman]
* Move signals to the GtkEditable interface [Kristian]
* Further stock image improvements [Jakub Steiner]
* Support text chunks for the PGN loader, add gdk_pixbuf_get_option()
[Sven Neumann]
* Rename gdk_pixbuf_new_from_stream back to new_from_inline [Owen]
* Automatically call setlocale(), unless explicitly disabled [Owen]
* Property addition to various widgets [Michael Meeks, Owen]
* Support building with automake-1.4 [James]
* Make GtkRadioButton groups act as a single focus point [Owen]
* Move gdk_window_lookup etc. to be cross-platform [Matthias]
* Draw spinbuttons variably sized [Kristian]
* Separate GdkAtom out from X atoms for compatibility with future
multihead changes [Owen]
* Require gdk_threads_init() to be explicitly called instead
of piggybacking off of g_thread_init(). [Owen]
* Improvements to text-view/label/entry popup menus [Damian, Jacob, Owen]
* Bug fixes and cleanup [Matthias, others]
Other Contributors:
Mark McLoughin, Mikael Hermansson, Soeren Sandmann, Anders Carlsson,
Tim Janik, Murray Cumming, Hidetoshi Tajima, Padraig O'Briain,
Hans Breuer, Vitaly Tishkov, Dov Grobgeld
Overview of Changes in GTK+ 1.3.9
=================================
* Add editable text cells to GtkTreeView.
Keynav, drawing fixes in GtkTreeView [Jonathan Blandford]
* Text widget no longer always has a \n in it. [Havoc Pennington]
* Text widget bug fixes [Havoc, Dov Grobgeld, Hidetoshi Tajima]
* Allow -1 for width/height in gdk_pixbuf_render_*(). [Matthias Clasen]
* Minor fix for major resizing problems in recent releases [Owen Taylor]
* Restore ability to set _set properties to TRUE for
GtkCellRendererText, GtkTextTag [Owen]
* Cursor drawing improvements [Owen]
* Win32 fixes [Hans Breuer]
* Mark various functions as deprecated or private.
* Misc bug fixes, portability fixes, and cleanups.
Other Contributors:
Vitaly Tishkov, Christian Rose, Frank Belew, Jeff Franks, Sven Neumann,
Kristian Rietveld, Vitaly Tishkov, Joshua N. Pritikin, Matt Wilson,
James Henstridge, Detlef Reichl
Overview of Changes in GTK+ 1.3.8
=================================
* GtkTreeView and GtkTreeModel API cleanups/improvements [Jrb]
* GtkOptionMenu scrollwheel support [Alex]
* GtkModule search paths [Owen]
* Documenatation updates [Havoc,Jrb]
* Major Gdk cleanup [Owen]
* Miscellaneous other fixes/cleanups
Other Contributors:
Joshua N Pritikin, Padraig O'Briain, Jakub Steiner, Matthias Clasen,
Matt Wilson, James Henstridge
Overview of Changes in GTK+ 1.3.7
=================================
* Many Pixbuf (loader) improvements [Matthias Clasen, Soeren Sandmann]
* Added publically installed utility gdk-pixbuf-csource to generate
inlined pixbufs in C source code [Tim Janik]
* Optional movement of button children on press [Soeren, Owen Taylor]
* Interactive searching in GtkTreeView [Kristian Rietveld]
* Sorting/ordering improvements for GtkTreeView [Kris, Jonathan Blandford]
* Animation of expander motion for GtkTreeView [Anders Carlsson]
* Lots of misc GtkTreeView fixes and improvements [Jonathan]
* New/improved stock icons [Jakub Steiner]
* Code and API rework for window resizing [Havoc Pennington]
* Converted accel groups to GObject [James Henstridge]
* More property support improvements
* Add facility for "secondary" buttons in
GtkButtonBox/GtkDialog [Gregory Merchan]
* Disentangled child visability from MAPPED state [Owen]
* Plug/Socket improvements and port to the XEMBED protocol [Owen]
* Added priorities for styles in RC files,
support multiple parse contents [Owen]
* Made GdkVisual and GdkDevice GObjects [Alexander Larsson]
* Key binding improvements [Havoc]
* Added GtkWidget::event-after signal since normal event handling
is now aborted as soon as a handler returned TRUE [Tim]
* Dnd fixes and improved icon support [Owen]
* Removed GtkPacker widget
* Fixing missing paired getters/setters [Kris]
* Nuked remaining GtkArg cruft, implemented container/child properties [Tim]
* Added window grab groups [Owen]
* Many frame buffer improvements [Alex]
* Win32 fixes and improvements [Hans Breuer]
* Warning fixes [Darin Adler]
* Miscellaneous bug and API fixes [Matthias et. al]
Other Contributors:
Joshua N Pritikin, Hidetoshi Tajima, Manish Singh, ERDI Gergo, Jens Finke,
Chema Celorio, Lee Mallabone, Vitaly Tishkov, Sebastian Wilhelmi,
Nicola Girardi, Sven Neumann, Padraig O'Briain, Michael Natterer,
Suresh Chandrasekharan, Jonas Borgström, Jay Cox, Michael Meeks,
Mathias Hasselmann, Peter Williams, Thomas Broyer, Kjartan Maraas,
Joel Becker, Jeff Franks, Brian Cameron, Skip Montanaro
Overview of Changes in GTK+ 1.3.6
=================================
* Properly renders strikethrough text
* win32 fixes
* Added "scale" property to GtkTextTag and GtkCellRendererText to do
relative font scaling
* Added "format_value" signal to GtkScale to reformat value text
* framebuffer fixes
* Property support added to lots of widgets
* Many GtkTreeView new features and API/implementation fixes
* Lots of new_with_mnemonic() convenience functions
* Change GtkImageMenuItem API to be more consistent/useful
* Added lots of new stock items/icons
* Rewrote GtkRange/GtkScale/GtkScrollbar, includes support for
enabling/disabling extra scrollbar stepper arrows in gtkrc so NeXT
themes won't need broken hacks
* Convenience API for GtkRange similar to the one added to GtkSpinButton
a while back
* Make menubar/toolbar work properly with xthickness/ythickness of 1 or 0,
and move some attributes from program settings to user settings.
Allows nice 1-pixel-bevel themes.
* Moved ::focus virtual function from GtkContainer to GtkWidget
* Plenty of bug fixes
Overview of Changes in GTK+ 1.3.5
=================================
* New default theme based on Raleigh theme for 1.2.x.
* Dependency on the ATK library added as a step to
providing accessibility-enabling interfaces
* XEMBED-based GtkPlug/GtkSocket now basically works.
* Drag and drop of column headers in GtkTreeView
* GtkColorSelector work: hooks for saving and propagating palette, UI tweaks,
and API sanitation
* Key binding fixes
* Configurable padding/spacing in a lot of places
* Invisible text in GtkTextView fixed
* SHM segments now created with a mode of 0600
* Bug fixes
Overview of Changes in GTK+ 1.3.4
=================================
* Win32 fixes
* GtkTreeView improvements and fixes
* Fix glib-2.0.m4
* Miscellaneous bug fixes
Overview of Changes in GTK+ 1.3.3
=================================
[ 5600 lines of ChangeLog ]
* API cleanups
* Win32 work (Tor, Hans Breuer)
* Focus improvements (Owen)
* Frame buffer improvements (Alex)
* Work on GtkTextView (Havoc)
* Much work on GtkTreeView (Jonathan)
* Selectable labels (Havoc)
* Converted many arguments to properties (Lee Mallabone, John Margaglione)
* Add exact regions to GdkExposeEvent, propagate it. (Alex)
* Added ability to have resize grips in status bars (etc.) using
_NET_WM_MOVERESIZE protocol. (Havoc)
* Added mnemnonic mechanism to make setting underline accelerators
much easier. (Alex)
* Add per-style property mechanism to allow themes to change
geometry parameters. (Tim)
* Added global settings mechanisms for settings such as double-click
time. (Tim, Owen)
* Various support functions for new and old WM properties (Havoc, Alex)
* Add TRUE-stops-returns for boolean-returning signals (Ron Steinke)
Overview of Changes in GTK+ 1.3.2
=================================
GTK Core:
* New stock-icon and stock-item system. Use themeable pixbufs in
dialogs, buttons, etc. [Havoc]
* Theme engines reworked to use derivation and new object system. [Owen]
* Added GtkClipboard object for simple selection handling. [Owen]
* Make GtkEditable an interface, move implementation to GtkOldEditable for
compat. [Owen]
* Better handling of default directionality. [Robert]
* Use GSignal as backend for GtkSignal and other GObject stuff. [Tim]
* Move theme engines to GTypePlugin. [Owen]
GDK:
* Beginning of implementation of client parts of new window manager spec. [Owen]
* Make gdk_drawable_get_image() work with backing store. [Havoc]
Widgets:
* New text widget [Havoc]
- Adjustable tab handling.
- Ability to have scrolling side areas in new text widget for tabs/line numbers.
- Many cleanups and small improvements.
* Improvements to submenu navigation [Nils Barth/David Santiago] and
scrolling menus. [Alex]
* Simplification of progress bar API. [Havoc]
* Make GtkImage a generic image-display widget. [Havoc]
* New GtkTreeView tree widget. Model/view architecture, flexible rendering,
large datasets, etc. [Jonathan]
* New GtkMessageBox widget for message display. [Havoc]
* Allow labels to have contents set from XML-like markup language. [Havoc]
* Make dialogs derive from GtkDialog and use stock buttons. [Havoc]
Internationalization:
* Proper character set conversion for clipboard/selection. [Owen]
* New input method system via loadable modules; support on-the-spot
preedit in GtkEntry and new text widget; allow switching input methods
on the fly; include modules for XIM and demo Cyrillic-transliteration
module. [Owen]
* VIQR, Thai, and Inuktitut input methods. [Robert]
* Convert po files to UTF-8. [Robert]
gdk-pixbuf:
* Full-alpha compositing for gdk-pixbuf on drawable. [Havoc]
* Add simple saving to gdk-pixbuf. [David Welton/Havoc]
* Add improved error handling with GError to gdk-pixbuf. [Havoc]
Ports:
* Much work on Win32 Port. [Tor/Hans]
* Much work on Linux-FB Port. [Elliot/Alex]
Misc:
* Start of new gtk-demo demo program. [Owen/Jonathan]
* Bug fixes and more bug fixes.
Overview of Changes in GTK+ 1.3.1:
* GTK+ now uses the Pango library for text manipulation. All
strings in GTK+ now are in Unicode, languages written
from right-to-left, and complex-text languages are now supported.
* The gdk-pixbuf library for image loading and manipulation is
has been integrated with GTK+.
* The GTK+ object system has mostly been moved to GLib, separating
it from the GUI code. Many significant enhancements have been
made as part of this.
* A new text widget is now included. This started as a port
of the Tk text widget, and includes such features of the Tk
text widget as tags, marks, and unicode text support. It
has been enhanced to support model-view operation and the
full power of Pango.
* The GDK library has been extensively revised to support multiple
windowing systems. The only fully functional backend in 1.3.1
is the X11 backend, however, ports to Win32, Linux-framebuffer,
Nano-X, BeOS, and MacOS exist in various states of completion,
and at least some of these will be finished and integrated in
before the final GTK+-2.0 release.
* 32-bit coordinates are now supported throughout GDK and GTK+
(they are emulated where not supported by the windowing system.)
* Many minor bug fixes and enhancements. Incompatible changes
are documented in docs/Changes-2.0.txt
Overview of Changes in GTK+ 1.2.8:
* GNU Make 3.79 bug workaround
* FAQ and tutorial updates and improvements
* Miscellaneous bug fixes: CList, Calendar, rc-files, FontSelection
Overview of Changes in GTK+ 1.2.7:
* More header cleanups.
* Fixed activation bug for insensitive widgets.
* Locale fixes to RC file parsing code.
* Miscellaneous bugfixes for Item Factory, CList, CTree, X Selections,
HScale, VScale, Pixmap, Viewport, OptionMenu, Entry and Notebook.
* Upgrade to libtool 1.3.4.
Overview of Changes in GTK+ 1.2.6:
* container queue_resize fixes
* gtk[vh]scale: minor fixups
* rename idle to idle_id in testgtk to avoid conflicts with
broken libs
* More consistent naming of gtkrc files
* Added language support: ro, uk
Overview of Changes in GTK+ 1.2.5:
* more GtkCTree and GtkWindow bug fixes.
* more redraw/resize queue fixes, better expose event
discarding code.
* more miscellaneous bugs fixed
* new configure.in option --disable-rebuilds to completely disable
rebuilds of autogenerated sources.
* check for 5.002 now, to avoid failing autogeneration build rules due
to old perl versions.
* fonts (and fontsets) are cached now.
* more autogeneration make rules and dependency fixups, we should be
save with autogeneration up to make -j12 now ;)
* new window position GTK_WIN_POS_CENTER_ALWAYS, which will recenter the
GtkWindow on every size change.
* major rework of window manager hints handling code, fixed a bunch of
races with the new resizing code.
* the new wm hints and resizing code is absolutely perfect and bug free now,
it only lacks testing ;)
* fixed up various rc style memory problems.
* gtk_widget_modify_style() now properly changes the style of realized widgets
and references the style passed into it. if people worked around this bug,
this will introduce a slight memory leak in their code.
The code should typically look like:
GtkRcStyle *rc_style = gtk_rc_style_new ();
[...]
gtk_widget_modify_style (widget, rc_style);
gtk_rc_style_unref (rc_style);
* fix problems with positioning menus offscreen.
* GtkText fixes for some crashes and drawing errors.
* Better handling for unexpected window destroys in GDK and GTK+.
This should make it possible to use a GtkPlug and catch the
case where its parent socket is randomly killed.
* FAQ updates.
* FileSelection i18n patches, RadioButton fixups.
* many translation improvements.
* miscellaneous other bugs fixed.
Overview of Changes in GTK+ 1.2.4:
* DnD improvements (drags can be canceled with Esc now).
* suppressed configure event reordering in Gdk.
* rewrite of Gtk's configure event handling.
* major improvements for the object argument system (Elena Devdariani).
* major bugfixes for threading, GtkNotebook, GtkItemFactory, GtkCList and
GtkCTree.
* tutorial/FAQ updates, new file generation.txt on autogenerated sources.
* configure's --with-glib= is "officially" unsupported.
* upgrade to libtool 1.3.3.
* various buglets fixed.
Overview of Changes in GTK+ 1.2.3:
* Upgrade to libtool 1.3
* Check for dgettext (for systems with old versions of GNU Gettext)
* Many bug fixes (see ChangeLog for details)
Overview of Changes in GTK+ 1.2.2:
* Improved Dnd behaviour with Motif applications.
* Bug fixes for the Gtk selection code.
* Minor bug fixes to the Gdk Atom cache and Dnd code (with --display option).
* Bug fixes and leak plugs for the Gdk IM code.
* Added gtk_object_get() facility to retrieve object arguments easily.
The var args list expects ("arg-name", &value) pairs.
* Fixed mapping for GdkInputCondition<->GIOCondition, this should fix
problems where closed pipes were no longer signaling GDK_INPUT_READ on
systems with a native poll().
* Some cleanups to GtkLabel's memory allocation code (shouldn't leak memory
anymore).
* We don't attempt to lookup xpm color "None" anymore, this should prevent
eXodus (commercial X windows server) from popping up a color dialog every
time a transparent pixmap is created.
* Fixed bug where Gtk timeout/idle handlers would execute without the global
Gdk lock being held.
* Other minor bug fixes.
Overview of Changes in GTK+ 1.2.1:
* Many Bug fixes have been applied to the menu and accelerator code.
* GtkItemFactory can "adopt" foreign menu items now and manage their
accelerator installation. This is often required to get GtkItemFactory
like accelerator propagation between different windows with the same
menu hierarchy and for centralized parsing and saving of accelerators.
* GtkCList/GtkCTree buttons should always display correctly now.
* Miscellaneous other bug fixes.
What's New in GTK+ 1.2.0 (since 1.0.x):
* New widgets: GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,
GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket
* Many new features and robustness for existing widgets
* Theme support
* New DND implementation
* Internationalization of standard dialogs
* New key binding system
* Tearoff menus and menu accelerators
* Wide character support for entry and text
* Resizing code has been overhauled
* Queued redraws of partial areas
* Far better support for object arguments
* Speed optimizations
* Runtime loading of dynamic modules
* Support for GLib log domains
* Tutorial improvements
* A bug fix or two
Overview of Changes in GTK+ 1.1.16:
* Major fixes and improvements for handlebox
* A change to the way widget->requisition works. Now,
widget->requisition is always what the widget requested,
unmodified by the usize. See Changes-1.2.txt for details.
This correct various bugs with gtk_widget_set_usize().
* Fixes for XIM on X11R5 systems
* Don't allow cut-and-paste of text in password-style entries
* --enable-debug is now on by default for the development release.
(When compiling for "production", use --enable-debug=minimum)
* Handle systems where Helvetica is not present more gracefully
* Fixes for memory leaks
* CList and CTree fixes
* Bug fixes for drawing problems.
* Miscellaneous bug fixes to GtkLabel, GtkCList, GtkCTree,
GtkColorsel, Focusing, DND
* Tutorial improvements
Overview of Changes in GTK+ 1.1.15:
* Tutorial Updates
* Added --libs gthread to gtk-config
* Bug fixes
What is new in GTK+ 1.1.14:
* Additions to docs/Changes-1.2.txt
* Just warn when loading theme engine fails
* CLAMP GtkScale digits to a meaningful range
* GTK_LOCALDIR is now defined in a better fashion
* New functions (feature freeze, we know...):
gtk_menu_set_title()
gtk_toggle_button_get_active()
* Some locale fixups in gtkrc code
* Fixes to make gtk_radio_button_set_group() keep only
one radio button in the group active
* Foreign windows are now always treated as viewable; this fixes
a problem where updating didn't occur properly in GtkPlug
* DND fixes for 64 bit architectures, and for specifying operations
with modifier keys.
* Major revisions to GtkLayout: avoid having to create window
for NO_WINDOW children, adjust allocations of children as
scrolled so queued draws work, and a resize is queued instead
of allocating directly in a put() or move()
What is new in GTK+ 1.1.13:
* Dnd and selection bug fixes and memory purification.
* Widget sensitivity fixups.
* Tooltips windows are now named "gtk-tooltips" so rc file rules
can match tooltips windows. Fixed interaction of tooltips and NO_WINDOW
widgets.
* Spin buttons now update their values upon value retrieval.
* Overhaul of the resizing vs. redrawing logic to reduce redrawing needs
a lot. Gtk makes full use of the draw_area coalescing code now, which
got minorly improved as well.
* Containers map their Gdk windows after their children now to reduce
expose event generation.
* Gdk event queue fixups, this solves the double-click problems people were
recently having.
* Account for the fact that GSource's are only properly reentrant from
within dispatch(), thus we don't do Gdk event processing from within
check() or prepare() anymore.
* Rc files feature a bg_pixmap value of "<none>" now.
* Improved session management support in Gdk.
* Automatic disabling of NLS if no gettext is found should work now.
* Removed deprecated functions, docs/Changes-1.2.txt gives an overview.
* Gtk+ development now requires GNU autoconf 2.13, GNU automake 1.4
and GNU libtool 1.2d.
* More bug fixes all over the place.
What is new in GTK+ 1.1.12:
* Korean translation added
* Fixed memory leaks
* A few other bug fixes
What is new in GTK+ 1.1.11:
* Dutch, Japanese, Swedish, Polish, and Norwegian translations
* Removed deprecated _interp variants: gtk_container_foreach_interp,
gtk_idle_add_interp, gtk_timeout_add_interp, gtk_signal_connect_interp
* Lots of cast corrections
* Many fixes
What is new in GTK+ 1.1.9:
* Check for broken glibc 2.0 mb functions and avoid them
* Label and Entry display fixes
* Move main thread back to GDK, for locking when translating events
* Bug fixes
What is new in GTK+ 1.1.8:
* Added support for gettext and the localization of the standard
dialogs.
* Added line-wrapping for the label, and JUSTIFY_FILL
* Support reordering via drag and drop in CList and CTree.
* Replaced GtkDrawWindow widget with a GTK_USER_DRAW flag
* Extended gtkpaned API to support minimum sizes and proportional
resizing.
* Changed the handling of shared memory segments so as to
remove the need for GTK+ to set up signal handlers.
* Re-implemented event loop in terms of the event loop
that has been added to GLib 1.1.8
* Added 'grab_focus' signal to allow keyboard accelerators
for entries.
* Load locale specific RC files if present.
* Bug fixes.
What is new in GTK+ 1.1.7:
* Fixed memory mis-allocation in default files code
* Various event handling fixes
* Wide character support for entry and text
* Destroy widgets _after_ propagating unrealize signals through
widget hierarchy
* Only build XIM-support if available
* Tutorial and examples updates
* Added gtk_drag_source_unset()
What is new in GTK+ 1.1.6:
* The signal system now features emission hooks with special semantics,
refer to the ChangeLog for this.
* Minor? speedups and memory reductions to the emission handling of the
signal system.
* _interp() function variants are deprecated now. the corresponding *_full()
variants are provided for a long time now.
* Dnd abort timeout increased to 10 minutes.
* GtkScrolledWindow inherits from GtkBin now.
* GTK_POLICY_NEVER is implemented for scrolled windows now.
* Lots of API clean ups.
* Incremental freezing abilities.
* Integrated widgets from the GNOME tree: GtkLayout, GtkPlug and GtkSocket.
* New window functions for transient relationship, default size, and
geometry hints
* Default rc files are now read in (<sysconfdir/etc/gtkrc and ~/.gtkrc)
GTK_RC_FILES environment variable and functions are provided to configure
this behavior
* Read doc/Changes-1.2.txt to properly adapt your code.
* Bug Fixes.
What is new in GTK+ 1.1.5:
* Theme integration
* Widget style modification is now handled through GtkRcStyles
* GtkPixmaps now grey out pixmaps when insensitive
* Notebook enhancements
* Shadow configurability for menubars and handleboxes
* DND enhancements
* gtkfilesel now supports automounters better
* Implementation of expose compression
* Queued redraws of partial areas
* Scrolledwindow (+Viewport) source incompatibilities, children that are added
to a scrolled window don't get an automatic viewport anymore. a convenience
function gtk_scrolled_window_add_with_viewport() is supplied for this task
* Deprecated functions will now issue a message, informing the programmer about
the use of this function. These functions will get removed in future versions
* Non-functional functions got removed entirely
* gtk_widget_new() and gtk_object_new() will now auto-construct new objects.
A new function gtk_object_default_construct() is provided now which should
be called after every gtk_type_new() to perform the auto-construction
* Improved argument support of several widgets
* Bug Fixes
What is new in GTK+ 1.1.3:
* GtkCList/GtkCTree now have the ability to:
- hide/show individual columns
- disable/enable column resizing
- set min and max for column widths
- set expander style of the ctree
- set/get row and cell styles
- set spacing between tree expander and cell contents in ctree
- toggle auto_resize for columns
* Must enhanced DND support, removed old DND code
* Idle functions are now implemented via GHook, giving a slight speed
improvement
* An environment variable GTK_MODULES which takes a colon separated
list of module names GTK+ will now automatically load at gtk_init() startup
* GtkFontSel now has support for an extra 'base' filter
* New function gdk_window_set_root_origin to get the real geometry taking
into account window manager offsets
* New function gtk_text_set_line_wrap to toggle line wrapping
* New function gtk_widget_add_events which safely adds additional
events to a widget's event mask
* New function gdk_event_get_time to get the timestamp from a generic
event
* New widget GtkCalendar
* New widget GtkInvisible - InputOnly offscreen windows used for reliable
pointer grabs and selection handling in DND code
* New functions gtk_object_remove_no_notify[_by_id] to remove a certain
data portion without invocation of its destroy notifier
* gtk_spin_button_construct is now deprecated, use gtk_spin_button_configure
instead
* gtk_clist_set_border is now deprecated, use gtk_clist_set_shadow_type
instead
* Removed functions gtk_object_set_data_destroy[_by_id]
* Documentation additions/updates
* HTML and plain text files are now included in the distribution
* Bug fixes, typeness corrections, and general fixups
What is new in GTK+ 1.1.2:
* Gtk+ is now featuring runtime loading of dynamic modules via the
--gtk-modules= command line switch. such modules have to export a
G_MODULE_EXPORT void gtk_module_init (gint *argc, gchar ***argv);
function which will be invoked to initialize the module. since such
modules may create new widget types, they are always resident.
* The tutorial has been updated again.
* Changes to menus including tearoff menus and accelerators.
* Better support for modal dialogs.
* Removed CAN_FOCUS by default from scrollbars and button children of toolbar.
* More improvements and fixes for GtkCList and GtkCTree (i.e. row sorting).
* GtkCTree rows can be unselectable now.
* The GtkCTree API has undergone major renames (see ChangeLog entry from Lars
Hamann on Tue Aug 18 00:29:13 1998).
* A bunch of varargs functions changed to get va_lists working on systems that
implement va_lists as arrays.
* Improvements to the gdkrgb code.
* Improvements to Gdk color handling so we greatly reduce server traffic and
don't leak colors anymore.
* Improved internal widget tree iterators (the GtkContainer::foreach signal
vanished because of this).
* Option menus can have the keyboard focus now.
* More fixups to the text widget.
* GtkFileSelection should behave much more nicely in combination with AFS now.
* Support for label underlining.
* Support for GLib 1.1.3 log domains.
* Documentation improvements.
* Configuration fixes on various platforms.
* Miscellaneous fixes to XInput support.
* Build with shared library dependencies on Linux
* Fix for a major bug in the type systems memory allocation code that could
cause random crashes.
* Libtool update to version 1.2b.
* Lots of bugfixes and cleanups again ;)
What is new in GTK+ 1.1.1:
* Tutorial updates and additions.
* Key binding support for GtkListItems and GtkList.
* Extended selection mode and autoscrolling for GtkLists.
* A GtkCtree now operates on GtkCTreeNode* structures rather than GList*.
* GtkCTreeNodes can now be created from GNode trees.
* Bug fixes for GtkNotebook, GtkCList, GtkCombo and GdkWindow reparentation.
What is new in GTK+ 1.1.0:
* New widget GtkFontSelector.
* New featureful progress bar.
* New container widget GtkPacker.
* New object GtkItemFactory, GtkMenuFactory is deprecated.
* New key binding system, configurable via rcfiles, similar to styles.
* New widget GtkCTree with drag selections and keyboard movement and
and horizontal scrolling. Features also implemented for GtkCList.
* Significant speedups to widget creation and destruction through caching
colormap and visual queries to the XServer.
* Speedups for type creation and especially gtk_type_is_a() checks.
* Speedups in signal lookup, creation and emissions and connection handling.
* Minor speedups with object data allocation and destruction.
* Additions to the signal handling API (e.g. *_emitv).
* Support for rc-file reparsing.
* Resizing logic is now implemented on container widget basis, rather than
for toplevel GtkWindows only.
* Buttons support relief styles now.
* Some widgets are now allocated through memchunks to behave more memory wise.
* Newly included file gtkfeatures.h which defines compatibility macros to
test for certain API features upon program compilation.
* Child arguments support for container widgets.
* Far better support for object arguments, revamp of the underlying
mechanism for speed and reusability. Child/object arguments don't
need to be preceded by the "GtkType::" portion anymore.
* Removed GtkAcceleratorTable in favour of GtkAccelGroup, accelerator display
is now performed by a new widget GtkAccelLabel.
* Overhaul of the resizing code. Resizing behaviour can now be specified
on GtkContainer basis, so the underlying algorithm isn't only available
for GtkWindows.
* GtkTables are now fully resizable.
* The GtkType system now supports an additional base class initialization
function.
* GtkStyles and key bindings can now be looked up depending on the base
types of a widget, through a new keyword `class' in rc files.
* GtkButton derives from GtkBin (finally).
* More descriptive error messages on rc parsing.
* Runtime information is available to query enum/flag definition values.
* Upgrade to libtool-1.2
* Legions of bug fixes, memory leaks, segfaults, of-by-something errors...
including those that already went into the 1.0.x branch.
* A big bunch of features and cosmetic fixups that just got lost in
the masses of changesonfigure problem when cross-compiling

File diff suppressed because it is too large Load Diff

158
README Normal file
View File

@@ -0,0 +1,158 @@
General Information
===================
This is GTK+ version 2.6.7. 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.
GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without any
license fees or royalties.
The official ftp site is:
ftp://ftp.gtk.org/pub/gtk
The official web site is:
http://www.gtk.org/
Information about mailing lists can be found at
http://www.gtk.org/mailinglists.html
Installation
============
See the file 'INSTALL'
Release notes
=============
* GTK+ 2.6 supports clipboard persistency. To make use of this feature,
a clipboard manager following the specification at
http://www.freedesktop.org/wiki/Standards/clipboard-manager-spec
must be running. A sample implementation of such a clipboard manager
is available at
http://people.imendio.com/andersca/archives/clipboard-manager-0.3.tar.gz
Applications can use the function gdk_display_supports_clipboard_persistence()
to find out if clipboard persistence is available.
* Notification on clipboard ownership changes via GdkOwnerChange events
requires the XFIXES X extension. Applications can use the function
gdk_display_supports_selection_notification() to find out if ownerchip
change notification is available.
* The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme
specification. Setting the XDG_DATA_DIRS environtment variable may be
necessary if your icons aren't installed in the default location
/usr/share/icons.
* The icon theme code in GTK+ 2.6 can make use of mmap()able cache files
to avoid a lot of disk searching overhead. GTK+ includes a utility named
gtk-update-icon-cache to generate these cache files. For further details,
see the gtk-update-icon-cache man page or the GTK+ documentation.
* To reduce code size and improve efficiency, GTK+, when compiled
with the GNU toolchain, has separate internal and external entry
points for exported functions. The internal names, which begin with
IA__, may be seen when debugging a GTK+ program.
* The following functions have been deprecated in GTK+ 2.6:
gdk_pango_context_set_colormap
gtk_cell_renderer_editing_canceled
* The new GtkFileChooser widget emphasizes simplicity and thus does
not provide a navigation entry by default when opening files.
Experienced command line users will likely want to make heavy use of
the location dialog brought up by the Control-L key shortcut.
* The GTK+ libraries use an '_' prefix to indicate private symbols that
must not be used by applications. On some platforms, symbols beginning
with prefixes such as _gtk, _gdk, and _pango will be exported
from the library, on others not. In no case can applications
use these private symbols. In addition to that, GTK+ 2.6 makes several
symbols private which were not in any installed header files and
were never intended to be exported.
* The gdk_pixbuf_xlib library included in the contrib/ directory
and the framebuffer GDK backend included in the gdk/linux-fb directory
of GTK+ are provided on an as-is basis and have not been tested at all.
No guarantees about the degree of workingness or about future
compatibility are provided.
* On Unix, the assumption of GLib and GTK+ by default is that filenames on
the filesystem are encoded in UTF-8 rather than the encoding of the locale;
the GTK+ developers consider that having filenames whose interpretation
depends on the current locale is fundamentally a bad idea.
If you have filenames encoded in the encoding of your locale, then you
may want to set the G_FILENAME_ENCODING environment variable:
G_FILENAME_ENCODING=@locale
export G_FILENAME_ENCODING
(Earlier versions of GLib 2.x required a different environment variable
setting; G_BROKEN_FILENAMES=1 to achieve the same effect; this
is still supported, but G_FILENAME_ENCODING is preferred.)
Best integration of GTK+ 2.6 with the environment is achieved by
using a UTF-8 locale.
On Windows, filenames passed to GTK+ should always be in UTF-8, as
in GLib 2.6. This is different than in previous versions of GTK+
where the system codepage was used. As in GLib, for DLL ABI
stability, applications built against previous versions of GTK+ will
use entry points providing the old semantics.
When compiling against GTK+ 2.6, applications intended to be
portable to Windows must take the UTF-8 file name encoding into
consideration, and use the gstdio wrappers to access files whose
names have been constructed from strings returned from GTK+ or GLib.
How to report bugs
==================
Bugs should be reported to the GNOME bug tracking system.
(http://bugzilla.gnome.org, product gtk+.) You will need to create an
account for yourself.
In the bug report please include:
* Information about your system. For instance:
- What operating system and version
- What version of X
- For Linux, what version of the C library
And anything else you think is relevant.
* How to reproduce the bug.
If you can reproduce it with one of the tests or demos built with GTK+,
such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise,
please include a short test program that exhibits the behavior. As a
last resort, you can also provide a pointer to a larger piece of software
that can be downloaded.
* If the bug was a crash, the exact text that was printed out when the
crash occured.
* Further information such as stack traces may be useful, but is not
necessary. If you do send a stack trace, and the error is an X error,
it will be more useful if the stacktrace is produced running the test
program with the --sync command line option.
Patches
=======
Patches should also be submitted to bugzilla.gnome.org. If the patch
fixes an existing bug, add the patch as an attachment to that bug
report.
Otherwise, enter a new bug report that describes the patch, and attach
the patch to that bug report.
Bug reports containing patches should include the PATCH keyword in their
keyword fields. If the patch adds to or changes the GTK+ programming
interface, the API keyword should also be included.
Patches should be in unified diff form. (The -u option to GNU diff.)

54
README.cvs-commits Normal file
View File

@@ -0,0 +1,54 @@
GTK+ is part of the GNOME CVS repository. At the current time, any
person with write access to the GNOME repository, can make changes to
GTK+. This is a good thing, in that it encourages many people to work
on GTK+, and progress can be made quickly. However, GTK+ is a fairly
large and complicated package that many other things depend on, so to
avoid unnecessary breakage, and to take advantage of the knowledge
about GTK+ that has been built up over the last 4 years, we'd like
to ask people commiting to GTK+ to follow a few rules:
0) Ask first. If your changes are major, or could possibly break existing
code, you should always ask. If your change is minor and you've
been working on GTK+ for a while it probably isn't necessary
to ask. But when in doubt, ask. Even if your change is correct,
somebody may know a better way to do things.
If you are making changes to GTK+, you should be subscribed
to gtk-devel-list@gnome.org. (Subscription address:
gtk-devel-list-request@gnome.org.) This is a good place to ask
about intended changes.
#gtk+ on GIMPNet (irc.gimp.org, irc.us.gimp.org, irc.eu.gimp.org, ...)
is also a good place to find GTK+ developers to discuss changes with,
however, email to gtk-devel-list is the most certain and preferred
method.
1) Ask _first_.
2) There must be a ChangeLog for every commit. (If you discover that
you only committed half the files you meant to and need to fix that
up, or something, you don't need a new ChangeLog entry. But in general,
ChangeLog entries are mandatory.) Changes with out ChangeLog entries
will be reverted.
3) There _must_ be a ChangeLog for every commit.
Notes:
* If you are going to be changing many files in an experimental fashion,
it probably is a good idea to create a separate branch for your changes.
* The ChangeLog entries should preferrably match in date format
with the existing entries. You can set how emacs does this
by using customize mode:
- M-x customize
- set Programming/Tools/ChangeLog/Add Log Time Format to
'Old Format'
Or, set the add-log-time-format to 'current-time-string in
your .emacs file.
Owen Taylor
13 Aug 1998
17 Apr 2001

158
README.in Normal file
View File

@@ -0,0 +1,158 @@
General Information
===================
This is GTK+ version @GTK_VERSION@. 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.
GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without any
license fees or royalties.
The official ftp site is:
ftp://ftp.gtk.org/pub/gtk
The official web site is:
http://www.gtk.org/
Information about mailing lists can be found at
http://www.gtk.org/mailinglists.html
Installation
============
See the file 'INSTALL'
Release notes
=============
* GTK+ 2.6 supports clipboard persistency. To make use of this feature,
a clipboard manager following the specification at
http://www.freedesktop.org/wiki/Standards/clipboard-manager-spec
must be running. A sample implementation of such a clipboard manager
is available at
http://people.imendio.com/andersca/archives/clipboard-manager-0.3.tar.gz
Applications can use the function gdk_display_supports_clipboard_persistence()
to find out if clipboard persistence is available.
* Notification on clipboard ownership changes via GdkOwnerChange events
requires the XFIXES X extension. Applications can use the function
gdk_display_supports_selection_notification() to find out if ownerchip
change notification is available.
* The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme
specification. Setting the XDG_DATA_DIRS environtment variable may be
necessary if your icons aren't installed in the default location
/usr/share/icons.
* The icon theme code in GTK+ 2.6 can make use of mmap()able cache files
to avoid a lot of disk searching overhead. GTK+ includes a utility named
gtk-update-icon-cache to generate these cache files. For further details,
see the gtk-update-icon-cache man page or the GTK+ documentation.
* To reduce code size and improve efficiency, GTK+, when compiled
with the GNU toolchain, has separate internal and external entry
points for exported functions. The internal names, which begin with
IA__, may be seen when debugging a GTK+ program.
* The following functions have been deprecated in GTK+ 2.6:
gdk_pango_context_set_colormap
gtk_cell_renderer_editing_canceled
* The new GtkFileChooser widget emphasizes simplicity and thus does
not provide a navigation entry by default when opening files.
Experienced command line users will likely want to make heavy use of
the location dialog brought up by the Control-L key shortcut.
* The GTK+ libraries use an '_' prefix to indicate private symbols that
must not be used by applications. On some platforms, symbols beginning
with prefixes such as _gtk, _gdk, and _pango will be exported
from the library, on others not. In no case can applications
use these private symbols. In addition to that, GTK+ 2.6 makes several
symbols private which were not in any installed header files and
were never intended to be exported.
* The gdk_pixbuf_xlib library included in the contrib/ directory
and the framebuffer GDK backend included in the gdk/linux-fb directory
of GTK+ are provided on an as-is basis and have not been tested at all.
No guarantees about the degree of workingness or about future
compatibility are provided.
* On Unix, the assumption of GLib and GTK+ by default is that filenames on
the filesystem are encoded in UTF-8 rather than the encoding of the locale;
the GTK+ developers consider that having filenames whose interpretation
depends on the current locale is fundamentally a bad idea.
If you have filenames encoded in the encoding of your locale, then you
may want to set the G_FILENAME_ENCODING environment variable:
G_FILENAME_ENCODING=@locale
export G_FILENAME_ENCODING
(Earlier versions of GLib 2.x required a different environment variable
setting; G_BROKEN_FILENAMES=1 to achieve the same effect; this
is still supported, but G_FILENAME_ENCODING is preferred.)
Best integration of GTK+ 2.6 with the environment is achieved by
using a UTF-8 locale.
On Windows, filenames passed to GTK+ should always be in UTF-8, as
in GLib 2.6. This is different than in previous versions of GTK+
where the system codepage was used. As in GLib, for DLL ABI
stability, applications built against previous versions of GTK+ will
use entry points providing the old semantics.
When compiling against GTK+ 2.6, applications intended to be
portable to Windows must take the UTF-8 file name encoding into
consideration, and use the gstdio wrappers to access files whose
names have been constructed from strings returned from GTK+ or GLib.
How to report bugs
==================
Bugs should be reported to the GNOME bug tracking system.
(http://bugzilla.gnome.org, product gtk+.) You will need to create an
account for yourself.
In the bug report please include:
* Information about your system. For instance:
- What operating system and version
- What version of X
- For Linux, what version of the C library
And anything else you think is relevant.
* How to reproduce the bug.
If you can reproduce it with one of the tests or demos built with GTK+,
such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise,
please include a short test program that exhibits the behavior. As a
last resort, you can also provide a pointer to a larger piece of software
that can be downloaded.
* If the bug was a crash, the exact text that was printed out when the
crash occured.
* Further information such as stack traces may be useful, but is not
necessary. If you do send a stack trace, and the error is an X error,
it will be more useful if the stacktrace is produced running the test
program with the --sync command line option.
Patches
=======
Patches should also be submitted to bugzilla.gnome.org. If the patch
fixes an existing bug, add the patch as an attachment to that bug
report.
Otherwise, enter a new bug report that describes the patch, and attach
the patch to that bug report.
Bug reports containing patches should include the PATCH keyword in their
keyword fields. If the patch adds to or changes the GTK+ programming
interface, the API keyword should also be included.
Patches should be in unified diff form. (The -u option to GNU diff.)

159
README.md
View File

@@ -1,159 +0,0 @@
GTK+ — The GTK toolkit
======================
[![Build Status](https://gitlab.gnome.org/GNOME/gtk/badges/master/build.svg)](https://gitlab.gnome.org/GNOME/gtk/pipelines)
General information
-------------------
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.
GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without any
license fees or royalties.
The official download location
- https://download.gnome.org/sources/gtk+
The official web site
- https://www.gtk.org
The official developers blog
- https://blog.gtk.org
Information about mailing lists can be found at
- http://www.gtk.org/mailing-lists.php
Nightly documentation can be found at
- Gtk: https://gnome.pages.gitlab.gnome.org/gtk/gtk/
- Gdk: https://gnome.pages.gitlab.gnome.org/gtk/gdk/
- Gsk: https://gnome.pages.gitlab.gnome.org/gtk/gsk/
Building and installing
-----------------------
In order to build GTK+ you will need:
- [a C99 compatible compiler](https://wiki.gnome.org/Projects/GLib/CompilerRequirements)
- [Python 3](https://www.python.org/)
- [Meson](http://mesonbuild.com)
- [Ninja](https://ninja-build.org)
You will also need various dependencies, based on the platform you are
building for:
- [GLib](https://download.gnome.org/sources/glib)
- [GdkPixbuf](https://download.gnome.org/sources/gdk-pixbuf)
- [GObject-Introspection](https://download.gnome.org/sources/gobject-introspection)
- [Cairo](https://www.cairographics.org)
- [Pango](https://download.gnome.org/sources/pango)
- [Epoxy](https://github.com/anholt/libepoxy)
- [Graphene](https://github.com/ebassi/graphene)
- [ATK](https://download.gnome.org/sources/atk)
- [Xkb-common](https://github.com/xkbcommon/libxkbcommon)
If you are building the X11 backend, you will also need:
- Xlib, and the following X extensions:
- xrandr
- xrender
- xi
- xext
- xfixes
- xcursor
- xdamage
- xcomposite
- [atk-bridge-2.0](https://download.gnome.org/sources/at-spi2-atk)
If you are building the Wayland backend, you will also need:
- Wayland-client
- Wayland-protocols
- Wayland-cursor
- Wayland-EGL
Once you have all the necessary dependencies, you can build GTK+ by using
Meson:
```sh
$ meson _build .
$ cd _build
$ ninja
```
You can run the test suite using:
```sh
$ meson test
```
And, finally, you can install GTK+ using:
```
$ sudo ninja install
```
Complete information about installing GTK+ and related libraries
can be found in the file:
```
docs/reference/gtk/html/gtk-building.html
```
Or [online](https://developer.gnome.org/gtk4/stable/gtk-building.html)
How to report bugs
------------------
Bugs should be reported on the [issues page](https://gitlab.gnome.org/GNOME/gtk/issues/new).
In the bug report please include:
* Information about your system. For instance:
- which version of GTK+ you are using
- what operating system and version
- for Linux, which distribution
- if you built GTK+, the list of options used to configure the build
And anything else you think is relevant.
* How to reproduce the bug.
If you can reproduce it with one of the demo applications that are
built in the demos/ subdirectory, on one of the test programs that
are built in the tests/ subdirectory, that will be most convenient.
Otherwise, please include a short test program that exhibits the
behavior. As a last resort, you can also provide a pointer to a
larger piece of software that can be downloaded.
* If the bug was a crash, the exact text that was printed out
when the crash occurred.
* Further information such as stack traces may be useful, but
is not necessary.
Release notes
-------------
The release notes for GTK+ are part of the migration guide in the API
reference. See:
- [3.x release notes](https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html)
- [4.x release notes](https://developer.gnome.org/gtk4/unstable/gtk-migrating-3-to-4.html)
Licensing terms
---------------
GTK+ is released under the terms of the GNU Lesser General Public License,
version 2.1 or, at your option, any later version, as published by the Free
Software Foundation.
Please, see the `COPYING` file for further information.

93
README.win32 Normal file
View File

@@ -0,0 +1,93 @@
The Win32 backend in GTK+ is not as stable or correct as the X11
one.
For prebuilt runtime and developer packages see
http://www.gimp.org/win32/downloads.html .
There is also a gtk-1-3-win32-production branch of GTK+ that was
branched off from before the addition of the no-flicker and other
functionality that was new in GTK+ 2.0.0. The vesion number used for
that branch is 1.3.0. It corresponds most closely to GTK 1.2.7 on
Unix. For new code, you shouldn't be using that.
Building GTK+ on Win32
======================
There are two ways to build GTK+ for win32.
1) Use the autoconf-generated configure script, and the resulting
Makefiles (which use libtool and gcc to do the compilation). I use
this myself, but it can be hard to setup correctly.
Personally I run configure with:
CC='gcc -mpentium -fnative-struct' CPPFLAGS='-I/target/include' CFLAGS=-O2 LDFLAGS='-L/target/lib' ./configure --disable-static --prefix=/target --with-gdktarget=win32 --with-wintab=/src/wtkit126 --with-ie55=/src/workshop/ie55_lib --host=i386-pc-mingw32
Then, in theory, you can just say "make", like on Unix. In reality,
there are a few hickups that require manual intervention, and it's
best to run make separately in each subdirectory. At least for me,
when libtool creates an .exe file, it puts the real .exe in the .libs
directory, and leaves a wrapper .exe in the work directory. For some
reason that wrapper doesn't work for me, it doesn't do anything. So, I
always do a "cp .libs/*.exe ." after running a make that has produced
some exes.
Another issue is with the gdk-pixbuf.loaders file. It's probably best
to do a "make install" in the gdk-pixbuf directory, and let that set
up a mostly correct gdk-pixbuf.loaders in the target directory. Then
copy that back to the source directory. It's needed in gtk/stock-icons
where make runs gdk-pixbuf-csource.
Etc, you get the idea. It can be a bit of a pain.
2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
makefile.msc in gdk and gtk. Be prepared to manually edit various
makefile.msc files, and the makefile snippets in build/win32.
Alternative 1 also generates Microsoft import libraries (.lib), if you
have lib.exe available. It might also work for cross-compilation from
Unix.
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 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
===================
To use GTK+ on Win32, you also need either one of the above mentioned
compilers. Other compilers might work, but don't count on it. Look for
prebuilt developer packages (DLLs, import libraries, headers) on the
above website.
Multi-threaded use of GTK+ on Win32
===================================
Multi-threaded GTK+ programs might work on Windows in special simple
cases, but not in general. Sorry. If you have all GTK+ and GDK calls
in the same thread, it might work. Otherwise, probably not at
all. Possible ways to fix this are being investigated.
Wintab
======
The tablet support uses the Wintab API. The Wintab development kit can
be downloaded from http://www.pointing.com. Pass the --with-wintab
flag to configure if you use that. If you use nmake and you don't care
for Wintab, undefine HAVE_WINTAB in config.h.win32 and remove
references to the wntab32x library from the makefile before building.
ActiveIMM
=========
If you want to build a GTK+ that supports ActiveIMM (the Input Method
Manager for non-EastAsia locales that can be used on Win9x/NT4), you
need the dimm.h header file. That is somewhat difficult to find, but
http://msdn.microsoft.com/downloads/samples/internet/wizard/ seems to
be a good place to look nowadays. If you use "autoconfiscated" build,
pass the --with-ie55 flag to configure specifying the location of the
ie55_lib directory created by downloading the IE5.5 headers and libs
from the above URL.
--Tor Lillqvist <tml@iki.fi>

78
acconfig.h Normal file
View File

@@ -0,0 +1,78 @@
/* acconfig.h
This file is in the public domain.
Descriptive text for the C preprocessor macros that
the distributed Autoconf macros can define.
No software package will use all of them; autoheader copies the ones
your configure.in uses into your configuration header file templates.
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). Although this order
can split up related entries, it makes it easier to check whether
a given entry is in the file.
Leave the following blank line there!! Autoheader needs it. */
/* Other stuff */
#undef ENABLE_NLS
#undef GTK_COMPILED_WITH_DEBUGGING
#undef HAVE_CATGETS
#undef HAVE_DIMM_H
#undef HAVE_GETTEXT
#undef HAVE_IPC_H
#undef HAVE_LC_MESSAGES
#undef HAVE_PROGRESSIVE_JPEG
#undef HAVE_PWD_H
#undef HAVE_SHM_H
#undef HAVE_STPCPY
#undef HAVE_XSHM_H
#undef HAVE_SHAPE_EXT
#undef HAVE_SOLARIS_XINERAMA
#undef HAVE_SYS_SELECT_H
#undef HAVE_SYS_TIME_H
#undef HAVE_XFREE_XINERAMA
#undef HAVE_XINERAMA
#undef HAVE_WINTAB
#undef HAVE_XCONVERTCASE
#undef HAVE_XFT
#undef HAVE_SIGSETJMP
#undef NO_FD_SET
#undef RESOURCE_BASE
#undef USE_GMODULE
#undef USE_MMX
/* Define to use XKB extension */
#undef HAVE_XKB
/* Define to use shadowfb in the linux-fb port */
#undef ENABLE_SHADOW_FB
/* Define to use a fb manager in the linux-fb port */
#undef ENABLE_FB_MANAGER
#undef XINPUT_NONE
#undef XINPUT_GXI
#undef XINPUT_XFREE
/* Define as the return type of signal handlers (int or void). */
#undef RETSIGTYPE
/* Most machines will be happy with int or void. IRIX requires '...' */
#undef SIGNAL_ARG_TYPE
#undef GETTEXT_PACKAGE
/* #undef PACKAGE */
/* #undef VERSION */
/* Leave that blank line there!! Autoheader needs it.
If you're adding to this file, keep in mind:
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). */

79
acinclude.m4 Normal file
View File

@@ -0,0 +1,79 @@
# autoconf 2.13 / 2.50 compatibility macro
# GLIB_AC_DIVERT_BEFORE_HELP(STUFF)
# ---------------------------------
# Put STUFF early enough so that they are available for $ac_help expansion.
# Handle both classic (<= v2.13) and modern autoconf
AC_DEFUN([GLIB_AC_DIVERT_BEFORE_HELP],
[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
[ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
[AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
$1
AC_DIVERT_POP()])])])
# GTK_ADD_LIB(VAR,LIBNAME)
# ---------------------------------
# Helper macro to add a -lBlah to a variable, avoiding repeats
# Note that this needs to be quoted when used in an enclosing macro
AC_DEFUN([GTK_ADD_LIB],
[ case "$$1 " in
*-l$2[[\ \ ]]*) ;;
*) $1="-l$2 $$1" ;;
esac
])
# Checks the location of the XML Catalog
# Usage:
# JH_PATH_XML_CATALOG([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# Defines XMLCATALOG and XML_CATALOG_FILE substitutions
AC_DEFUN([JH_PATH_XML_CATALOG],
[
# check for the presence of the XML catalog
AC_ARG_WITH([xml-catalog],
AC_HELP_STRING([--with-xml-catalog=CATALOG],
[path to xml catalog to use]),,
[with_xml_catalog=/etc/xml/catalog])
jh_found_xmlcatalog=true
XML_CATALOG_FILE="$with_xml_catalog"
AC_SUBST([XML_CATALOG_FILE])
AC_MSG_CHECKING([for XML catalog ($XML_CATALOG_FILE)])
if test -f "$XML_CATALOG_FILE"; then
AC_MSG_RESULT([found])
else
jh_found_xmlcatalog=false
AC_MSG_RESULT([not found])
fi
# check for the xmlcatalog program
AC_PATH_PROG(XMLCATALOG, xmlcatalog, no)
if test "x$XMLCATALOG" = xno; then
jh_found_xmlcatalog=false
fi
if $jh_found_xmlcatalog; then
ifelse([$1],,[:],[$1])
else
ifelse([$2],,[AC_MSG_ERROR([could not find XML catalog])],[$2])
fi
])
# Checks if a particular URI appears in the XML catalog
# Usage:
# JH_CHECK_XML_CATALOG(URI, [FRIENDLY-NAME], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
AC_DEFUN([JH_CHECK_XML_CATALOG],
[
AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl
AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog])
if $jh_found_xmlcatalog && \
AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then
AC_MSG_RESULT([found])
ifelse([$3],,,[$3
])dnl
else
AC_MSG_RESULT([not found])
ifelse([$4],,
[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],
[$4])
fi
])

112
autogen.sh Executable file
View File

@@ -0,0 +1,112 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir
PROJECT=Gtk+
TEST_TYPE=-d
FILE=gdk
DIE=0
have_libtool=false
if libtoolize --version < /dev/null > /dev/null 2>&1 ; then
libtool_version=`libtoolize --version | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
case $libtool_version in
1.4*|1.5*)
have_libtool=true
;;
esac
fi
if $have_libtool ; then : ; else
echo
echo "You must have libtool 1.4 installed to compile $PROJECT."
echo "Install the appropriate package for your distribution,"
echo "or get the source tarball at http://ftp.gnu.org/gnu/libtool/"
DIE=1
fi
(gtkdocize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have gtk-doc installed to compile $PROJECT."
echo "Install the appropriate package for your distribution,"
echo "or get the source tarball at http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/"
DIE=1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile $PROJECT."
echo "Install the appropriate package for your distribution,"
echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/"
DIE=1
}
if automake-1.7 --version < /dev/null > /dev/null 2>&1 ; then
AUTOMAKE=automake-1.7
ACLOCAL=aclocal-1.7
else
echo
echo "You must have automake 1.7.x installed to compile $PROJECT."
echo "Install the appropriate package for your distribution,"
echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/"
DIE=1
fi
if test "$DIE" -eq 1; then
exit 1
fi
test $TEST_TYPE $FILE || {
echo "You must run this script in the top-level $PROJECT directory"
exit 1
}
if test -z "$AUTOGEN_SUBDIR_MODE"; then
if test -z "$*"; then
echo "I am going to run ./configure with no arguments - if you wish "
echo "to pass any to it, please specify them on the $0 command line."
fi
fi
if test -z "$ACLOCAL_FLAGS"; then
acdir=`$ACLOCAL --print-ac-dir`
m4list="glib-2.0.m4 glib-gettext.m4"
for file in $m4list
do
if [ ! -f "$acdir/$file" ]; then
echo "WARNING: aclocal's directory is $acdir, but..."
echo " no file $acdir/$file"
echo " You may see fatal macro warnings below."
echo " If these files are installed in /some/dir, set the ACLOCAL_FLAGS "
echo " environment variable to \"-I /some/dir\", or install"
echo " $acdir/$file."
echo ""
fi
done
fi
rm -rf autom4te.cache
$ACLOCAL $ACLOCAL_FLAGS || exit $?
libtoolize --force || exit $?
gtkdocize || exit $?
autoheader || exit $?
$AUTOMAKE --add-missing || exit $?
autoconf || exit $?
cd $ORIGDIR || exit $?
if test -z "$AUTOGEN_SUBDIR_MODE"; then
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@" || exit $?
echo
echo "Now type 'make' to compile $PROJECT."
fi

View File

@@ -1,74 +0,0 @@
{
"app-id": "org.gtk.Demo",
"runtime": "org.gnome.Platform",
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"command": "gtk4-demo",
"tags": ["devel", "development", "nightly"],
"rename-icon": "gtk4-demo",
"desktop-file-name-prefix": "(Development) ",
"finish-args": [
"--device=dri",
"--share=ipc",
"--socket=x11",
"--socket=wayland",
"--talk-name=org.gtk.vfs", "--talk-name=org.gtk.vfs.*",
"--talk-name=ca.desrt.conf", "--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
"cleanup": [
"/include",
"/lib/pkgconfig", "/share/pkgconfig",
"/share/aclocal",
"/man", "/share/man", "/share/gtk-doc",
"*.la", ".a",
"/lib/girepository-1.0",
"/share/gir-1.0",
"/share/doc"
],
"modules": [
{
"name" : "wayland",
"buildsystem" : "autotools",
"builddir" : true,
"config-opts" : [
"--disable-documentation"
],
"sources" : [
{
"type" : "git",
"url" : "https://github.com/wayland-project/wayland.git"
}
]
},
{
"name": "graphene",
"buildsystem": "meson",
"builddir": true,
"config-opts": [
"--libdir=/app/lib",
"-Dtests=false",
"-Dbenchmarks=false"
],
"sources": [
{
"type": "git",
"url": "https://github.com/ebassi/graphene.git"
}
]
},
{
"name": "gtk",
"buildsystem": "meson",
"builddir": true,
"config-opts": [
"--libdir=/app/lib"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.gnome.org/GNOME/gtk.git"
}
]
}
]
}

View File

@@ -1,74 +0,0 @@
{
"app-id": "org.gtk.WidgetFactory",
"runtime": "org.gnome.Platform",
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"command": "gtk4-widget-factory",
"tags": ["devel", "development", "nightly"],
"rename-icon": "gtk4-widget-factory",
"desktop-file-name-prefix": "(Development) ",
"finish-args": [
"--device=dri",
"--share=ipc",
"--socket=x11",
"--socket=wayland",
"--talk-name=org.gtk.vfs", "--talk-name=org.gtk.vfs.*",
"--talk-name=ca.desrt.conf", "--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
"cleanup": [
"/include",
"/lib/pkgconfig", "/share/pkgconfig",
"/share/aclocal",
"/man", "/share/man", "/share/gtk-doc",
"*.la", ".a",
"/lib/girepository-1.0",
"/share/gir-1.0",
"/share/doc"
],
"modules": [
{
"name" : "wayland",
"buildsystem" : "autotools",
"builddir" : true,
"config-opts" : [
"--disable-documentation"
],
"sources" : [
{
"type" : "git",
"url" : "https://github.com/wayland-project/wayland.git"
}
]
},
{
"name": "graphene",
"buildsystem": "meson",
"builddir": true,
"config-opts": [
"--libdir=/app/lib",
"-Dtests=false",
"-Dbenchmarks=false"
],
"sources": [
{
"type": "git",
"url": "https://github.com/ebassi/graphene.git"
}
]
},
{
"name": "gtk",
"buildsystem": "meson",
"builddir": true,
"config-opts": [
"--libdir=/app/lib"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.gnome.org/GNOME/gtk.git"
}
]
}
]
}

View File

@@ -1,26 +0,0 @@
#!/bin/sh
gtk_api_version=$1
gtk_abi_version=$2
gtk_libdir=$3
gtk_datadir=$4
# Package managers set this so we don't need to run
if [ -z "$DESTDIR" ]; then
echo Compiling GSettings schemas...
glib-compile-schemas ${gtk_datadir}/glib-2.0/schemas
echo Updating desktop database...
update-desktop-database -q ${gtk_datadir}/applications
echo Updating icon cache...
gtk-update-icon-cache -q -t -f ${gtk_datadir}/icons/hicolor
echo Updating module cache for print backends...
mkdir -p ${gtk_libdir}/gtk-4.0/4.0.0/printbackends
gio-querymodules ${gtk_libdir}/gtk-4.0/4.0.0/printbackends
echo Updating module cache for input methods...
mkdir -p ${gtk_libdir}/gtk-4.0/4.0.0/immodules
gio-querymodules ${gtk_libdir}/gtk-4.0/4.0.0/immodules
fi

View File

@@ -1,317 +0,0 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* always defined to indicate that i18n is enabled */
#define ENABLE_NLS 1
/* The prefix for our gettext translation domains. */
#mesondefine GETTEXT_PACKAGE
/* Disable deprecation warnings from glib */
#mesondefine GLIB_DISABLE_DEPRECATION_WARNINGS
/* Define the location where the catalogs will be installed */
#mesondefine GTK_LOCALEDIR
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#mesondefine HAVE_BIND_TEXTDOMAIN_CODESET
/* Have the cloudproviders library */
#mesondefine HAVE_CLOUDPROVIDERS
/* define if we have colord */
#mesondefine HAVE_COLORD
/* Define to 1 if you have the <crt_externs.h> header file. */
#mesondefine HAVE_CRT_EXTERNS_H
/* Define to 1 if CUPS 1.6 API is available */
#mesondefine HAVE_CUPS_API_1_6
/* Define to 1 if you have the `dcgettext' function. */
#mesondefine HAVE_DCGETTEXT
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
*/
#mesondefine HAVE_DECL_ISINF
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
*/
#mesondefine HAVE_DECL_ISNAN
/* Define to 1 if you have the <dlfcn.h> header file. */
#mesondefine HAVE_DLFCN_H
/* Have the ffmpeg library */
#mesondefine HAVE_FFMPEG
/* Define to 1 if you have the <ftw.h> header file. */
#mesondefine HAVE_FTW_H
/* Define to 1 if you have the `getpagesize' function. */
#mesondefine HAVE_GETPAGESIZE
/* Define to 1 if you have the `getresuid' function. */
#mesondefine HAVE_GETRESUID
/* Define if gio-unix is available */
#mesondefine HAVE_GIO_UNIX
/* Define if GStreamer support is available */
#mesondefine HAVE_GSTREAMER
/* Define to 1 if you have the `httpGetAuthString' function. */
#mesondefine HAVE_HTTPGETAUTHSTRING
/* Define if cups http_t authstring field is accessible */
#mesondefine HAVE_HTTP_AUTHSTRING
/* Define to 1 if you have the <inttypes.h> header file. */
#mesondefine HAVE_INTTYPES_H
/* Define to 1 if the system has the type `IPrintDialogCallback'. */
#mesondefine HAVE_IPRINTDIALOGCALLBACK
/* Define to 1 if you have the <locale.h> header file. */
#mesondefine HAVE_LOCALE_H
/* Define to 1 if you have the `lstat' function. */
#mesondefine HAVE_LSTAT
/* Define to 1 if you have the `mallinfo' function. */
#mesondefine HAVE_MALLINFO
/* Define to 1 if you have the <memory.h> header file. */
#mesondefine HAVE_MEMORY_H
/* Define to 1 if you have the `mkstemp' function. */
#mesondefine HAVE_MKSTEMP
/* Define to 1 if you have a working `mmap' system call. */
#mesondefine HAVE_MMAP
/* Define to 1 if you have the `nearbyint' function. */
#mesondefine HAVE_NEARBYINT
/* Define to 1 if you have the `posix_fallocate' function. */
#mesondefine HAVE_POSIX_FALLOCATE
/* Have the Xrandr extension library */
#mesondefine HAVE_RANDR
/* Have the Xrandr 1.5 extension library */
#mesondefine HAVE_RANDR15
/* Define to 1 if you have the `rint' function. */
#mesondefine HAVE_RINT
/* Define to 1 if you have the `round' function. */
#mesondefine HAVE_ROUND
/* Define to 1 if you have the `sincos' function. */
#mesondefine HAVE_SINCOS
/* Define to 1 if you have the `log2` function */
#mesondefine HAVE_LOG2
/* Define to 1 if you ahve the `exp2` function */
#mesondefine HAVE_EXP2
/* Define to 1 if you have the <stdint.h> header file. */
#mesondefine HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#mesondefine HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#mesondefine HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#mesondefine HAVE_STRING_H
/* Define to 1 if you have the <sys/mman.h> header file. */
#mesondefine HAVE_SYS_MMAN_H
/* Define to 1 if you have the <sys/param.h> header file. */
#mesondefine HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#mesondefine HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#mesondefine HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#mesondefine HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#mesondefine HAVE_UNISTD_H
/* Have the XCOMPOSITE X extension */
#mesondefine HAVE_XCOMPOSITE
/* Have the Xcursor library */
#mesondefine HAVE_XCURSOR
/* Have the XDAMAGE X extension */
#mesondefine HAVE_XDAMAGE
/* Have the XFIXES X extension */
#mesondefine HAVE_XFIXES
/* Define to 1 if XFree Xinerama is available */
#mesondefine HAVE_XFREE_XINERAMA
/* Have XGenericEvent */
#mesondefine HAVE_XGENERICEVENTS
/* Define to use XKB extension */
#mesondefine HAVE_XKB
/* Have the SYNC extension library */
#mesondefine HAVE_XSYNC
/* Define to 1 if you have the `_lock_file' function */
#mesondefine HAVE__LOCK_FILE
/* Define to 1 if you have the `flockfile' function */
#mesondefine HAVE_FLOCKFILE
/* Define if _NL_MEASUREMENT_MEASUREMENT is available */
#mesondefine HAVE__NL_MEASUREMENT_MEASUREMENT
/* Define if _NL_PAPER_HEIGHT is available */
#mesondefine HAVE__NL_PAPER_HEIGHT
/* Define if _NL_PAPER_WIDTH is available */
#mesondefine HAVE__NL_PAPER_WIDTH
/* Define if _NL_TIME_FIRST_WEEKDAY is available */
#mesondefine HAVE__NL_TIME_FIRST_WEEKDAY
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#mesondefine LT_OBJDIR
/* Define if <X11/extensions/XIproto.h> needed for xReply */
#mesondefine NEED_XIPROTO_H_FOR_XREPLY
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#mesondefine NO_MINUS_C_MINUS_O
/* Define to the address where bug reports for this package should be sent. */
#mesondefine PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#mesondefine PACKAGE_NAME
/* Define to the full name and version of this package. */
#mesondefine PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#mesondefine PACKAGE_TARNAME
/* Define to the home page for this package. */
#mesondefine PACKAGE_URL
/* Define to the version of this package. */
#mesondefine PACKAGE_VERSION
/* Use NSBundle functions to determine load paths for libraries, translations,
etc. */
#mesondefine QUARTZ_RELOCATION
/* Define to 1 if you have the ANSI C header files. */
#mesondefine STDC_HEADERS
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable general extensions on Solaris. */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif
/* Define to 1 if XInput 2.0 is available */
#mesondefine XINPUT_2
/* Define to 1 if XInput 2.2 is available */
#mesondefine XINPUT_2_2
/* Define to 1 if the X Window System is missing or not being used. */
#mesondefine X_DISPLAY_MISSING
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#mesondefine _FILE_OFFSET_BITS
/* defines how to decorate public symbols while building */
#mesondefine _GDK_EXTERN
/* Define for large files, on AIX-style hosts. */
#mesondefine _LARGE_FILES
/* Define to 1 if on MINIX. */
#mesondefine _MINIX
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#mesondefine _POSIX_1_SOURCE
/* Define to 1 if you need to in order for `stat' and other things to work. */
#mesondefine _POSIX_SOURCE
/* Define to `int' if <sys/types.h> doesn't define. */
#mesondefine gid_t
/* Define to `int' if <sys/types.h> doesn't define. */
#mesondefine uid_t
/* Define to 1 if linux/memfd.h exists */
#mesondefine HAVE_LINUX_MEMFD_H
#mesondefine HAVE_LINUX_INPUT_H
#mesondefine HAVE_DEV_EVDEV_INPUT_H
#mesondefine GTK_SYSCONFDIR
#mesondefine GTK_LOCALEDIR
#mesondefine GTK_DATADIR
#mesondefine GTK_LIBDIR
#mesondefine GTK_PRINT_BACKENDS
#mesondefine HAVE_HARFBUZZ
#mesondefine HAVE_PANGOFT
#mesondefine ISO_CODES_PREFIX
#mesondefine MALLOC_IS_ALIGNED16
#mesondefine HAVE_POSIX_MEMALIGN
#mesondefine HAVE_MEMALIGN
#mesondefine HAVE_ALIGNED_ALLOC
#mesondefine HAVE__ALIGNED_MALLOC

289
config.h.win32.in Normal file
View File

@@ -0,0 +1,289 @@
/* config.h.win32.in. Merged from two versions generated by configure for gcc and MSVC. */
/* config.h.in. Generated from configure.in by autoheader. */
/* acconfig.h
This file is in the public domain.
Descriptive text for the C preprocessor macros that
the distributed Autoconf macros can define.
No software package will use all of them; autoheader copies the ones
your configure.in uses into your configuration header file templates.
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). Although this order
can split up related entries, it makes it easier to check whether
a given entry is in the file.
Leave the following blank line there!! Autoheader needs it. */
/* Other stuff */
#define ENABLE_NLS 1
#define GTK_COMPILED_WITH_DEBUGGING "yes"
/* #undef HAVE_CATGETS */
/* #undef HAVE_DIMM_H */
#define HAVE_GETTEXT 1
/* #undef HAVE_IPC_H */
/* #undef HAVE_LC_MESSAGES */
#define HAVE_PROGRESSIVE_JPEG 1
/* #undef HAVE_PWD_H */
/* #undef HAVE_SHM_H */
/* #undef HAVE_STPCPY */
/* #undef HAVE_XSHM_H */
/* #undef HAVE_SHAPE_EXT */
/* #undef HAVE_SYS_SELECT_H */
#ifndef _MSC_VER
#define HAVE_SYS_TIME_H 1
#else /* _MSC_VER */
/* #undef HAVE_SYS_TIME_H */
#endif /* _MSC_VER */
#define HAVE_WINSOCK_H 1
#define HAVE_WINTAB 1
/* #undef HAVE_XCONVERTCASE */
/* #undef HAVE_XFT */
/* #undef HAVE_SIGSETJMP */
#define NO_FD_SET 1
/* #undef RESOURCE_BASE */
#ifndef _MSC_VER
#define USE_GMODULE 1
#define USE_MMX 1
#endif
/* Define to use X11R6 additions to XIM */
/* #undef USE_X11R6_XIM */
/* Define to use XKB extension */
/* #undef HAVE_XKB */
/* Define to use shadowfb in the linux-fb port */
/* #undef ENABLE_SHADOW_FB */
/* Define to use a fb manager in the linux-fb port */
/* #undef ENABLE_FB_MANAGER */
/* #undef XINPUT_NONE */
/* #undef XINPUT_GXI */
/* #undef XINPUT_XFREE */
/* Define as the return type of signal handlers (int or void). */
#define RETSIGTYPE void
/* Most machines will be happy with int or void. IRIX requires '...' */
/* #undef SIGNAL_ARG_TYPE */
#define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@"
/* #undef PACKAGE */
/* #undef VERSION */
/* Leave that blank line there!! Autoheader needs it.
If you're adding to this file, keep in mind:
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
/* #undef CRAY_STACKSEG_END */
/* Define if using `alloca.c'. */
/* #undef C_ALLOCA */
/* always defined to indicate that i18n is enabled */
#define ENABLE_NLS 1
/* Define if you have `alloca', as a function or macro. */
#define HAVE_ALLOCA 1
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
/* #undef HAVE_ALLOCA_H */
/* Define if you have the <argz.h> header file. */
/* #undef HAVE_ARGZ_H */
/* Define if you have the `bind_textdomain_codeset' function. */
/* #undef HAVE_BIND_TEXTDOMAIN_CODESET */
/* Is the wctype implementation broken */
/* #undef HAVE_BROKEN_WCTYPE */
/* Define if you have the `dcgettext' function. */
#define HAVE_DCGETTEXT 1
/* Define if you have the <dlfcn.h> header file. */
/* #undef HAVE_DLFCN_H */
/* Define if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* Define if you have the `getpagesize' function. */
#ifndef _MSC_VER
#define HAVE_GETPAGESIZE 1
#else /* _MSC_VER */
/* #undef HAVE_GETPAGESIZE */
#endif /* _MSC_VER */
/* Define if you have the `getresuid' function. */
/* #undef HAVE_GETRESUID */
/* Define if the GNU gettext() function is already present or preinstalled. */
#define HAVE_GETTEXT 1
/* Define if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
/* Define if your <locale.h> file defines LC_MESSAGES. */
/* #undef HAVE_LC_MESSAGES */
/* Define if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* Define if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define if you have the `lstat' function. */
/* #undef HAVE_LSTAT */
/* Define if you have the <malloc.h> header file. */
#define HAVE_MALLOC_H 1
/* Define if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define if you have a working `mmap' system call. */
/* #undef HAVE_MMAP */
/* Define if you have the `munmap' function. */
/* #undef HAVE_MUNMAP */
/* Define if you have the <nl_types.h> header file. */
/* #undef HAVE_NL_TYPES_H */
/* Define if you have the `putenv' function. */
#define HAVE_PUTENV 1
/* Define if you have the <pwd.h> header file. */
/* #undef HAVE_PWD_H */
/* Define if you have the `setenv' function. */
/* #undef HAVE_SETENV */
/* Define if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
/* Define if you have the <stdint.h> header file. */
#ifndef _MSC_VER
#define HAVE_STDINT_H 1
#else /* _MSC_VER */
/* #undef HAVE_STDINT_H */
#endif /* _MSC_VER */
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the `strcasecmp' function. */
#ifndef _MSC_VER
#define HAVE_STRCASECMP 1
#else /* _MSC_VER */
/* #undef HAVE_STRCASECMP */
#endif /* _MSC_VER */
/* Define if you have the `strchr' function. */
#define HAVE_STRCHR 1
/* Define if you have the `strdup' function. */
#define HAVE_STRDUP 1
/* Define if you have the <strings.h> header file. */
/* #undef HAVE_STRINGS_H */
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define if you have the <sys/param.h> header file. */
/* #undef HAVE_SYS_PARAM_H */
/* Define if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define if you have the <sys/time.h> header file. */
#ifndef _MSC_VER
#define HAVE_SYS_TIME_H 1
#else /* _MSC_VER */
/* #undef HAVE_SYS_TIME_H */
#endif /* _MSC_VER */
/* Define if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
/* #undef HAVE_SYS_WAIT_H */
/* Define if you have the <unistd.h> header file. */
#ifndef _MSC_VER
#define HAVE_UNISTD_H 1
#else /* _MSC_VER */
/* #undef HAVE_UNISTD_H */
#endif /* _MSC_VER */
/* Have wchar.h include file */
#define HAVE_WCHAR_H 1
/* Have wctype.h include file */
#define HAVE_WCTYPE_H 1
/* Define if you have the <winsock.h> header file. */
#define HAVE_WINSOCK_H 1
/* Define if you have the `__argz_count' function. */
/* #undef HAVE___ARGZ_COUNT */
/* Define if you have the `__argz_next' function. */
/* #undef HAVE___ARGZ_NEXT */
/* Define if you have the `__argz_stringify' function. */
/* #undef HAVE___ARGZ_STRINGIFY */
/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
/* #undef STACK_DIRECTION */
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `int' if <sys/types.h> doesn't define. */
#define gid_t int
/* Define as `__inline' if that's what the C compiler calls it, or to nothing
if it is not supported. */
/* #undef inline */
/* Define to `long' if <sys/types.h> does not define. */
/* #undef off_t */
/* Define to `unsigned' if <sys/types.h> does not define. */
/* #undef size_t */
/* Define to `int' if <sys/types.h> doesn't define. */
#define uid_t int

1766
configure.in Normal file

File diff suppressed because it is too large Load Diff

2
contrib/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Makefile
Makefile.in

5
contrib/Makefile.am Normal file
View File

@@ -0,0 +1,5 @@
SUBDIRS =
if USE_X11
SUBDIRS += gdk-pixbuf-xlib
endif

View File

@@ -0,0 +1,7 @@
Makefile
Makefile.in
*.la
*.lo
.libs
.deps
gdk-pixbuf-xlib-2.0.pc

View File

@@ -0,0 +1,177 @@
2005-04-12 Matthias Clasen <mclasen@redhat.com>
* === Releases 2.6.7 ====
2005-04-10 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.6 ===
2005-04-09 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.5 ===
2005-03-01 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.4 ===
2005-02-28 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.3 ===
2005-02-04 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.2 ===
2005-01-08 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.1 ===
2004-12-16 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.0 ===
2004-12-02 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.6 ===
2004-11-12 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.5 ===
2004-10-27 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.4 ===
2004-09-19 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.3 ===
2004-08-25 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.2 ===
2004-08-01 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.1 ===
Tue Jul 20 23:26:10 2004 Matthias Clasen <maclas@gmx.de>
* gdk-pixbuf-xlibrgb.c: Include config.h first. (#148034)
Sun Jul 18 20:17:41 2004 Soeren Sandmann <sandmann@daimi.au.dk>
* === released 2.5.0 ==
Tue Mar 9 09:33:54 2004 Owen Taylor <otaylor@redhat.com>
* === Released 2.3.6 ===
Wed Mar 3 15:50:28 2004 Owen Taylor <otaylor@redhat.com>
* Makefile.am (libgdk_pixbuf_xlib_2_0_la_LIBADD): Add
a shared library dependency on libgdk-pixbuf (#124687)
Tue Feb 24 14:45:03 2004 Owen Taylor <otaylor@redhat.com>
* === Released 2.3.3 ===
Fri Feb 13 10:32:09 2004 Owen Taylor <otaylor@redhat.com>
* gdk-pixbuf-xlibrgb.h: Remove a couple of unneeded
#includes. Isn't unsupported code fun?
(133833, Gregory Merchan)
Tue Oct 7 23:30:00 2003 Matthias Clasen <maclas@gmx.de>
* gdk-pixbuf-xlib.h: Add C++ guards. (123955, Harring Figueiredo)
2002-08-06 jacob berkman <jacob@ximian.com>
* Makefile.am (lib_LTLIBRARIES): link against xlibs
2002-01-25 Federico Mena Quintero <federico@ximian.com>
Merge from gdk-pixbuf stable.
* gdk-pixbuf-xlib-drawable.c (rgb565msb): Fixed the endianness
conversion --- swap the individual 16 bit values instead of taking
everying as a 32 bit value.
(rgb565lsb): Likewise.
(rgb555lsb): Likewise.
(rgb555msb): Likewise.
2001-11-26 Akira TAGOH <tagoh@redhat.com>
* Makefile.am (libgdk_pixbuf_xlib_1_3_la_LDFLAGS):
Added -version-info.
2001-05-19 Havoc Pennington <hp@pobox.com>
* gdk-pixbuf-xlibrgb.c: docs
2001-06-04 Havoc Pennington <hp@redhat.com>
* gdk-pixbuf-xlibrgb.c (xlib_rgb_init): remove C++ comment,
reported by Dan McNichol
Mon Jan 8 11:41:41 2001 Owen Taylor <otaylor@redhat.com>
* Makefile.am (INCLUDES): Add @x_cflags@ (#36310)
2001-01-02 Havoc Pennington <hp@redhat.com>
* gdk-pixbuf-xlib-2.0.pc.in (Description): fix up description a bit.
2000-10-06 Havoc Pennington <hp@redhat.com>
* gdk-pixbuf-xlib.c: Put display/screen here, instead of in
the main gdk-pixbuf library as it was in 1.0; since the io-xpm
loader doesn't use these variables anymore it should be OK
2000-09-26 Federico Mena Quintero <federico@helixcode.com>
* gdk-pixbuf/gdk-pixbuf-xlib-drawable.c
(gdk_pixbuf_xlib_get_from_drawable): Do not use
gdk_screen_{width,height}(). Thanks to John Harper for pointing
this out.
2000-08-26 Federico Mena Quintero <federico@helixcode.com>
* gdk-pixbuf/gdk-pixbuf-xlibrgb.c: Added API reference docs.
2000-08-25 Federico Mena Quintero <federico@helixcode.com>
* gdk-pixbuf/gdk-pixbuf-xlib-drawable.c (handle_x_error): Return
0.
(xlib_window_is_viewable): Return FALSE in the last case.
* gdk-pixbuf/gdk-pixbuf-xlib-render.c: Updated the inline docs.
* gdk-pixbuf/gdk-pixbuf-xlib.c: Added API docs.
2000-08-25 John Harper <john@dcs.warwick.ac.uk>
Work to create an Xlib version of gdk-pixbuf (with the Xlib
port of GdkRGB for rendering):
* configure.in: check for X libraries, set and substitute
GDK_PIXBUF_XLIB_{LIBDIR,INCLUDEDIR,LIBS} variables
* gdk_pixbuf_xlibConf.sh.in: new file -- gnome-config details
for the gdk-pixbuf-xlib library
* Makefile.am: build and install gdk_pixbuf_xlibConf.sh
* gdk-pixbuf/gdk-pixbuf-xlib-render.c,
gdk-pixbuf/gdk-pixbuf-xlib.c, gdk-pixbuf/gdk-pixbuf-xlib.h,
gdk-pixbuf/gdk-pixbuf-xlib-private.h,
gdk-pixbuf/gdk-pixbuf-xlib-drawable.c: new files, ported the
GDK dependent parts of gdk-pixbuf to use Xlib. Functions that
were called gdk_pixbuf_FOO are now gdk_pixbuf_xlib_FOO
* gdk-pixbuf/gdk-pixbuf-xlibrgb.c,
gdk-pixbuf/gdk-pixbuf-xlibrgb.h: added Chris Blizzard's Xlib
port of GdkRGB (from Mozilla CVS)
* gdk-pixbuf/Makefile.am: build a library libgdk_pixbuf_xlib.la
including the non-GDK dependent objects from libgdk_pixbuf.la
plus the Xlib ports and xlibrgb

View File

@@ -0,0 +1,35 @@
lib_LTLIBRARIES=libgdk_pixbuf_xlib-2.0.la
INCLUDES = \
-I$(top_srcdir) -I$(top_builddir) \
-I$(top_srcdir)/gdk-pixbuf \
-I$(top_srcdir)/contrib \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
$(GDK_PIXBUF_XLIB_DEP_CFLAGS)
libgdk_pixbuf_xlib_2_0_la_LDFLAGS = \
-export-dynamic \
-version-info $(LT_VERSION_INFO)
libgdk_pixbuf_xlib_2_0_la_LIBADD = \
$(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
$(GDK_PIXBUF_XLIB_DEP_LIBS)
libgdk_pixbuf_xlib_2_0_la_SOURCES = \
gdk-pixbuf-xlib-private.h \
gdk-pixbuf-xlib.c \
gdk-pixbuf-xlib-render.c \
gdk-pixbuf-xlib-drawable.c \
gdk-pixbuf-xlibrgb.c
libgdk_pixbuf_xlibincludedir=$(includedir)/gtk-2.0/gdk-pixbuf-xlib
libgdk_pixbuf_xlibinclude_HEADERS = \
gdk-pixbuf-xlib.h \
gdk-pixbuf-xlibrgb.h
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gdk-pixbuf-xlib-2.0.pc
EXTRA_DIST = gdk-pixbuf-xlib-2.0.pc.in

View File

@@ -0,0 +1,11 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: GdkPixbuf Xlib
Description: GdkPixbuf rendering for Xlib
Version: @VERSION@
Requires: gobject-2.0,gmodule-2.0,gdk-pixbuf-2.0
Libs: -L${libdir} -lgdk_pixbuf_xlib-@GTK_API_VERSION@
Cflags: -I${includedir}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,30 @@
/* GdkPixbuf library - Xlib header file
*
* Authors: John Harper <john@dcs.warwick.ac.uk>
*
* 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 GDK_PIXBUF_XLIB_PRIVATE_H
#define GDK_PIXBUF_XLIB_PRIVATE_H
#include "gdk-pixbuf-xlib.h"
#include <X11/Xlib.h>
extern Display *gdk_pixbuf_dpy;
extern int gdk_pixbuf_screen;
#endif

View File

@@ -0,0 +1,398 @@
/* GdkPixbuf library - Rendering functions
*
* Copyright (C) 1999 The Free Software Foundation
*
* Author: Federico Mena-Quintero <federico@gimp.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.
*/
/* Trivially ported to Xlib(RGB) by John Harper. */
#include <config.h>
#include "gdk-pixbuf-private.h"
#include "gdk-pixbuf-xlib-private.h"
/**
* gdk_pixbuf_xlib_render_threshold_alpha:
* @pixbuf: A pixbuf.
* @bitmap: Bitmap where the bilevel mask will be painted to.
* @src_x: Source X coordinate.
* @src_y: source Y coordinate.
* @dest_x: Destination X coordinate.
* @dest_y: Destination Y coordinate.
* @width: Width of region to threshold.
* @height: Height of region to threshold.
* @alpha_threshold: Opacity values below this will be painted as zero; all
* other values will be painted as one.
*
* Takes the opacity values in a rectangular portion of a pixbuf and thresholds
* them to produce a bi-level alpha mask that can be used as a clipping mask for
* a drawable.
*
**/
void
gdk_pixbuf_xlib_render_threshold_alpha (GdkPixbuf *pixbuf, Pixmap bitmap,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
int alpha_threshold)
{
GC gc;
XColor color;
int x, y;
guchar *p;
int start, start_status;
int status;
XGCValues gcv;
g_return_if_fail (pixbuf != NULL);
g_return_if_fail (pixbuf->colorspace == GDK_COLORSPACE_RGB);
g_return_if_fail (pixbuf->n_channels == 3 || pixbuf->n_channels == 4);
g_return_if_fail (pixbuf->bits_per_sample == 8);
g_return_if_fail (bitmap != 0);
g_return_if_fail (width >= 0 && height >= 0);
g_return_if_fail (src_x >= 0 && src_x + width <= pixbuf->width);
g_return_if_fail (src_y >= 0 && src_y + height <= pixbuf->height);
g_return_if_fail (alpha_threshold >= 0 && alpha_threshold <= 255);
if (width == 0 || height == 0)
return;
gc = XCreateGC (gdk_pixbuf_dpy, bitmap, 0, &gcv);
if (!pixbuf->has_alpha) {
color.pixel = (alpha_threshold == 255) ? 0 : 1;
XSetForeground (gdk_pixbuf_dpy, gc, color.pixel);
XFillRectangle (gdk_pixbuf_dpy, bitmap, gc,
dest_x, dest_y, width, height);
XFreeGC (gdk_pixbuf_dpy, gc);
return;
}
color.pixel = 0;
XSetForeground (gdk_pixbuf_dpy, gc, color.pixel);
XFillRectangle (gdk_pixbuf_dpy, bitmap, gc,
dest_x, dest_y, width, height);
color.pixel = 1;
XSetForeground (gdk_pixbuf_dpy, gc, color.pixel);
for (y = 0; y < height; y++) {
p = (pixbuf->pixels + (y + src_y) * pixbuf->rowstride + src_x * pixbuf->n_channels
+ pixbuf->n_channels - 1);
start = 0;
start_status = *p < alpha_threshold;
for (x = 0; x < width; x++) {
status = *p < alpha_threshold;
if (status != start_status) {
if (!start_status)
XDrawLine (gdk_pixbuf_dpy, bitmap, gc,
start + dest_x, y + dest_y,
x - 1 + dest_x, y + dest_y);
start = x;
start_status = status;
}
p += pixbuf->n_channels;
}
if (!start_status)
XDrawLine (gdk_pixbuf_dpy, bitmap, gc,
start + dest_x, y + dest_y,
x - 1 + dest_x, y + dest_y);
}
XFreeGC (gdk_pixbuf_dpy, gc);
}
/* Creates a buffer by stripping the alpha channel of a pixbuf */
static guchar *
remove_alpha (GdkPixbuf *pixbuf, int x, int y, int width, int height, int *rowstride)
{
guchar *buf;
int xx, yy;
guchar *src, *dest;
g_assert (pixbuf->n_channels == 4);
g_assert (pixbuf->has_alpha);
g_assert (width > 0 && height > 0);
g_assert (x >= 0 && x + width <= pixbuf->width);
g_assert (y >= 0 && y + height <= pixbuf->height);
*rowstride = 4 * ((width * 3 + 3) / 4);
buf = g_new (guchar, *rowstride * height);
for (yy = 0; yy < height; yy++) {
src = pixbuf->pixels + pixbuf->rowstride * (yy + y) + x * pixbuf->n_channels;
dest = buf + *rowstride * yy;
for (xx = 0; xx < width; xx++) {
*dest++ = *src++;
*dest++ = *src++;
*dest++ = *src++;
src++;
}
}
return buf;
}
/**
* gdk_pixbuf_xlib_render_to_drawable:
* @pixbuf: A pixbuf.
* @drawable: Destination drawable.
* @gc: GC used for rendering.
* @src_x: Source X coordinate within pixbuf.
* @src_y: Source Y coordinate within pixbuf.
* @dest_x: Destination X coordinate within drawable.
* @dest_y: Destination Y coordinate within drawable.
* @width: Width of region to render, in pixels.
* @height: Height of region to render, in pixels.
* @dither: Dithering mode for XlibRGB.
* @x_dither: X offset for dither.
* @y_dither: Y offset for dither.
*
* Renders a rectangular portion of a pixbuf to a drawable while using the
* specified GC. This is done using XlibRGB, so the specified drawable must
* have the XlibRGB visual and colormap. Note that this function will ignore
* the opacity information for images with an alpha channel; the GC must already
* have the clipping mask set if you want transparent regions to show through.
*
* For an explanation of dither offsets, see the XlibRGB documentation. In
* brief, the dither offset is important when re-rendering partial regions of an
* image to a rendered version of the full image, or for when the offsets to a
* base position change, as in scrolling. The dither matrix has to be shifted
* for consistent visual results. If you do not have any of these cases, the
* dither offsets can be both zero.
**/
void
gdk_pixbuf_xlib_render_to_drawable (GdkPixbuf *pixbuf,
Drawable drawable, GC gc,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
XlibRgbDither dither,
int x_dither, int y_dither)
{
guchar *buf;
int rowstride;
g_return_if_fail (pixbuf != NULL);
g_return_if_fail (pixbuf->colorspace == GDK_COLORSPACE_RGB);
g_return_if_fail (pixbuf->n_channels == 3 || pixbuf->n_channels == 4);
g_return_if_fail (pixbuf->bits_per_sample == 8);
g_return_if_fail (drawable != 0);
g_return_if_fail (gc != 0);
g_return_if_fail (width >= 0 && height >= 0);
g_return_if_fail (src_x >= 0 && src_x + width <= pixbuf->width);
g_return_if_fail (src_y >= 0 && src_y + height <= pixbuf->height);
if (width == 0 || height == 0)
return;
/* This will have to be modified once we support other image types.
* Also, GdkRGB does not have gdk_draw_rgb_32_image_dithalign(), so we
* have to pack the buffer first. Sigh.
*/
if (pixbuf->has_alpha)
buf = remove_alpha (pixbuf, src_x, src_y, width, height, &rowstride);
else {
buf = pixbuf->pixels + src_y * pixbuf->rowstride + src_x * 3;
rowstride = pixbuf->rowstride;
}
xlib_draw_rgb_image_dithalign (drawable, gc,
dest_x, dest_y,
width, height,
dither,
buf, rowstride,
x_dither, y_dither);
if (pixbuf->has_alpha)
g_free (buf);
}
/**
* gdk_pixbuf_xlib_render_to_drawable_alpha:
* @pixbuf: A pixbuf.
* @drawable: Destination drawable.
* @src_x: Source X coordinate within pixbuf.
* @src_y: Source Y coordinates within pixbuf.
* @dest_x: Destination X coordinate within drawable.
* @dest_y: Destination Y coordinate within drawable.
* @width: Width of region to render, in pixels.
* @height: Height of region to render, in pixels.
* @alpha_mode: If the image does not have opacity information, this is ignored.
* Otherwise, specifies how to handle transparency when rendering.
* @alpha_threshold: If the image does have opacity information and @alpha_mode
* is GDK_PIXBUF_ALPHA_BILEVEL, specifies the threshold value for opacity
* values.
* @dither: Dithering mode for XlibRGB.
* @x_dither: X offset for dither.
* @y_dither: Y offset for dither.
*
* Renders a rectangular portion of a pixbuf to a drawable. This is done using
* XlibRGB, so the specified drawable must have the XlibRGB visual and colormap.
*
* When used with #GDK_PIXBUF_ALPHA_BILEVEL, this function has to create a bitmap
* out of the thresholded alpha channel of the image and, it has to set this
* bitmap as the clipping mask for the GC used for drawing. This can be a
* significant performance penalty depending on the size and the complexity of
* the alpha channel of the image. If performance is crucial, consider handling
* the alpha channel yourself (possibly by caching it in your application) and
* using gdk_pixbuf_xlib_render_to_drawable() or GdkRGB directly instead.
**/
void
gdk_pixbuf_xlib_render_to_drawable_alpha (GdkPixbuf *pixbuf, Drawable drawable,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
GdkPixbufAlphaMode alpha_mode,
int alpha_threshold,
XlibRgbDither dither,
int x_dither, int y_dither)
{
Pixmap bitmap = 0;
GC gc;
XGCValues gcv;
g_return_if_fail (pixbuf != NULL);
g_return_if_fail (pixbuf->colorspace == GDK_COLORSPACE_RGB);
g_return_if_fail (pixbuf->n_channels == 3 || pixbuf->n_channels == 4);
g_return_if_fail (pixbuf->bits_per_sample == 8);
g_return_if_fail (drawable != 0);
g_return_if_fail (width >= 0 && height >= 0);
g_return_if_fail (src_x >= 0 && src_x + width <= pixbuf->width);
g_return_if_fail (src_y >= 0 && src_y + height <= pixbuf->height);
if (width == 0 || height == 0)
return;
gc = XCreateGC (gdk_pixbuf_dpy, drawable, 0, &gcv);
if (pixbuf->has_alpha) {
/* Right now we only support GDK_PIXBUF_ALPHA_BILEVEL, so we
* unconditionally create the clipping mask.
*/
bitmap = XCreatePixmap (gdk_pixbuf_dpy,
RootWindow (gdk_pixbuf_dpy,
gdk_pixbuf_screen),
width, height, 1);
gdk_pixbuf_xlib_render_threshold_alpha (pixbuf, bitmap,
src_x, src_y,
0, 0,
width, height,
alpha_threshold);
XSetClipMask (gdk_pixbuf_dpy, gc, bitmap);
XSetClipOrigin (gdk_pixbuf_dpy, gc, dest_x, dest_y);
}
gdk_pixbuf_xlib_render_to_drawable (pixbuf, drawable, gc,
src_x, src_y,
dest_x, dest_y,
width, height,
dither,
x_dither, y_dither);
if (bitmap)
XFreePixmap (gdk_pixbuf_dpy, bitmap);
XFreeGC (gdk_pixbuf_dpy, gc);
}
/**
* gdk_pixbuf_xlib_render_pixmap_and_mask:
* @pixbuf: A pixbuf.
* @pixmap_return: Return value for the created pixmap.
* @mask_return: Return value for the created mask.
* @alpha_threshold: Threshold value for opacity values.
*
* Creates a pixmap and a mask bitmap which are returned in the @pixmap_return
* and @mask_return arguments, respectively, and renders a pixbuf and its
* corresponding tresholded alpha mask to them. This is merely a convenience
* function; applications that need to render pixbufs with dither offsets or to
* given drawables should use gdk_pixbuf_xlib_render_to_drawable_alpha() or
* gdk_pixbuf_xlib_render_to_drawable(), and
* gdk_pixbuf_xlib_render_threshold_alpha().
*
* If the pixbuf does not have an alpha channel, then *@mask_return will be set
* to None.
**/
void
gdk_pixbuf_xlib_render_pixmap_and_mask (GdkPixbuf *pixbuf,
Pixmap *pixmap_return,
Pixmap *mask_return,
int alpha_threshold)
{
g_return_if_fail (pixbuf != NULL);
if (pixmap_return) {
GC gc;
XGCValues gcv;
*pixmap_return = XCreatePixmap (gdk_pixbuf_dpy,
RootWindow (gdk_pixbuf_dpy,
gdk_pixbuf_screen),
pixbuf->width,
pixbuf->height,
xlib_rgb_get_depth ());
gc = XCreateGC (gdk_pixbuf_dpy, *pixmap_return, 0, &gcv);
gdk_pixbuf_xlib_render_to_drawable (pixbuf, *pixmap_return, gc,
0, 0, 0, 0,
pixbuf->width,
pixbuf->height,
XLIB_RGB_DITHER_NORMAL,
0, 0);
XFreeGC (gdk_pixbuf_dpy, gc);
}
if (mask_return) {
if (pixbuf->has_alpha) {
*mask_return = XCreatePixmap (gdk_pixbuf_dpy,
RootWindow (gdk_pixbuf_dpy,
gdk_pixbuf_screen),
pixbuf->width,
pixbuf->height, 1);
gdk_pixbuf_xlib_render_threshold_alpha (pixbuf,
*mask_return,
0, 0, 0, 0,
pixbuf->width,
pixbuf->height,
alpha_threshold);
} else
*mask_return = 0;
}
}

View File

@@ -0,0 +1,63 @@
/* GdkPixbuf library - Initialization functions
*
* Author: John Harper <john@dcs.warwick.ac.uk>
*
* 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.
*/
#include <config.h>
#include <X11/Xlib.h>
#include <gdk-pixbuf/gdk-pixbuf-private.h>
#include "gdk-pixbuf-xlib-private.h"
Display *gdk_pixbuf_dpy = NULL;
int gdk_pixbuf_screen = -1;
/**
* gdk_pixbuf_xlib_init:
* @display: X display to use.
* @screen_num: Screen number.
*
* Initializes the gdk-pixbuf Xlib machinery by calling xlib_rgb_init(). This
* function should be called near the beginning of your program, or before using
* any of the gdk-pixbuf-xlib functions.
**/
void
gdk_pixbuf_xlib_init (Display *display, int screen_num)
{
xlib_rgb_init (display, ScreenOfDisplay (display, screen_num));
gdk_pixbuf_dpy = display;
gdk_pixbuf_screen = screen_num;
}
/**
* gdk_pixbuf_xlib_init_with_depth:
* @display: X display to use.
* @screen_num: Screen number.
* @prefDepth: Preferred depth for XlibRGB.
*
* Similar to gdk_pixbuf_xlib_init(), but also lets you specify the preferred
* depth for XlibRGB if you do not want it to use the default depth it picks.
**/
void
gdk_pixbuf_xlib_init_with_depth (Display *display,
int screen_num, int prefDepth)
{
xlib_rgb_init_with_depth (display, ScreenOfDisplay (display, screen_num),
prefDepth);
gdk_pixbuf_dpy = display;
gdk_pixbuf_screen = screen_num;
}

View File

@@ -0,0 +1,91 @@
/* GdkPixbuf library - Xlib header file
*
* Authors: John Harper <john@dcs.warwick.ac.uk>
*
* 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 GDK_PIXBUF_XLIB_H
#define GDK_PIXBUF_XLIB_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf-xlib/gdk-pixbuf-xlibrgb.h>
#include <X11/Xlib.h>
/* init */
void gdk_pixbuf_xlib_init (Display *display, int screen_num);
void gdk_pixbuf_xlib_init_with_depth (Display *display, int screen_num,
int prefDepth);
/* render */
void gdk_pixbuf_xlib_render_threshold_alpha (GdkPixbuf *pixbuf, Pixmap bitmap,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
int alpha_threshold);
void gdk_pixbuf_xlib_render_to_drawable (GdkPixbuf *pixbuf,
Drawable drawable, GC gc,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
XlibRgbDither dither,
int x_dither, int y_dither);
void gdk_pixbuf_xlib_render_to_drawable_alpha (GdkPixbuf *pixbuf,
Drawable drawable,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height,
GdkPixbufAlphaMode alpha_mode,
int alpha_threshold,
XlibRgbDither dither,
int x_dither, int y_dither);
void gdk_pixbuf_xlib_render_pixmap_and_mask (GdkPixbuf *pixbuf,
Pixmap *pixmap_return,
Pixmap *mask_return,
int alpha_threshold);
/* drawable */
GdkPixbuf *gdk_pixbuf_xlib_get_from_drawable (GdkPixbuf *dest,
Drawable src,
Colormap cmap, Visual *visual,
int src_x, int src_y,
int dest_x, int dest_y,
int width, int height);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* GDK_PIXBUF_XLIB_H */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,193 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "MPL"); you may not use this file except in
* compliance with the MPL. You may obtain a copy of the MPL at
* http://www.mozilla.org/MPL/
*
* Software distributed under the MPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
* for the specific language governing rights and limitations under the
* MPL.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Library General Public License (the "LGPL"), in
* which case the provisions of the LGPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the LGPL and not to allow others to use
* your version of this file under the MPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the LGPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the MPL or the LGPL.
*/
/*
* This code is derived from GdkRgb.
* For more information on GdkRgb, see http://www.levien.com/gdkrgb/
* Raph Levien <raph@acm.org>
*/
/* Ported by Christopher Blizzard to Xlib. With permission from the
* original authors of this file, the contents of this file are also
* redistributable under the terms of the Mozilla Public license. For
* information about the Mozilla Public License, please see the
* license information at http://www.mozilla.org/MPL/
*/
/* This code is copyright the following authors:
* Raph Levien <raph@acm.org>
* Manish Singh <manish@gtk.org>
* Tim Janik <timj@gtk.org>
* Peter Mattis <petm@xcf.berkeley.edu>
* Spencer Kimball <spencer@xcf.berkeley.edu>
* Josh MacDonald <jmacd@xcf.berkeley.edu>
* Christopher Blizzard <blizzard@redhat.com>
* Owen Taylor <otaylor@redhat.com>
* Shawn T. Amundson <amundson@gtk.org>
*/
#ifndef __XLIB_RGB_H__
#define __XLIB_RGB_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <glib.h>
typedef struct _XlibRgbCmap XlibRgbCmap;
struct _XlibRgbCmap {
unsigned int colors[256];
unsigned char lut[256]; /* for 8-bit modes */
};
void
xlib_rgb_init (Display *display, Screen *screen);
void
xlib_rgb_init_with_depth (Display *display, Screen *screen, int prefDepth);
unsigned long
xlib_rgb_xpixel_from_rgb (guint32 rgb);
void
xlib_rgb_gc_set_foreground (GC gc, guint32 rgb);
void
xlib_rgb_gc_set_background (GC gc, guint32 rgb);
typedef enum
{
XLIB_RGB_DITHER_NONE,
XLIB_RGB_DITHER_NORMAL,
XLIB_RGB_DITHER_MAX
} XlibRgbDither;
void
xlib_draw_rgb_image (Drawable drawable,
GC gc,
int x,
int y,
int width,
int height,
XlibRgbDither dith,
unsigned char *rgb_buf,
int rowstride);
void
xlib_draw_rgb_image_dithalign (Drawable drawable,
GC gc,
int x,
int y,
int width,
int height,
XlibRgbDither dith,
unsigned char *rgb_buf,
int rowstride,
int xdith,
int ydith);
void
xlib_draw_rgb_32_image (Drawable drawable,
GC gc,
int x,
int y,
int width,
int height,
XlibRgbDither dith,
unsigned char *buf,
int rowstride);
void
xlib_draw_gray_image (Drawable drawable,
GC gc,
int x,
int y,
int width,
int height,
XlibRgbDither dith,
unsigned char *buf,
int rowstride);
XlibRgbCmap *
xlib_rgb_cmap_new (guint32 *colors, int n_colors);
void
xlib_rgb_cmap_free (XlibRgbCmap *cmap);
void
xlib_draw_indexed_image (Drawable drawable,
GC gc,
int x,
int y,
int width,
int height,
XlibRgbDither dith,
unsigned char *buf,
int rowstride,
XlibRgbCmap *cmap);
/* Below are some functions which are primarily useful for debugging
and experimentation. */
Bool
xlib_rgb_ditherable (void);
void
xlib_rgb_set_verbose (Bool verbose);
/* experimental colormap stuff */
void
xlib_rgb_set_install (Bool install);
void
xlib_rgb_set_min_colors (int min_colors);
Colormap
xlib_rgb_get_cmap (void);
Visual *
xlib_rgb_get_visual (void);
XVisualInfo *
xlib_rgb_get_visual_info (void);
int
xlib_rgb_get_depth (void);
Display *
xlib_rgb_get_display (void);
Screen *
xlib_rgb_get_screen (void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __XLIB_RGB_H__ */

18
debian/README.debian vendored Normal file
View File

@@ -0,0 +1,18 @@
libgtk1 for Debian
----------------------
The GIMP Tool Kit (gtk) is a set of widgets to help you program
programs for the X Windowing System easily and powerfully.
gtk is the moving force behind The GNU Image Manipulation Program (The
GIMP) -- the number one freely-available image editing and creation
program available.
gtk is rapidly under development, and the source tree has officially
been separated from The GIMP now, as other teams of programmers
are beginning to write software using its great widget set -- like
GNOME, a desktop interface for X, and gzilla, a freely available
web browser for X.
Ben Gertzfield <che@debian.org>, Mon, 29 Sep 1997 13:11:45 -0700

62
debian/build vendored Executable file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/perl -w
# Adjust debian/changelog and build a new
# Debian package of a CVS archive.
# Written 17 November 1998 by Ben Gertzfield
# <che@debian.org>
# This work is released under the GNU
# General Public License, version 2 or
# later.
use strict;
use diagnostics;
use File::Copy;
my $maintainer = 'Ben Gertzfield <che@debian.org>';
my @date = localtime;
my $datestr = sprintf("%d%.2d%.2d", $date[5] + 1900, $date[4] + 1, $date[3]);
my $revision = '01';
open (CHANGELOG, 'debian/changelog') or die "Couldn't open debian/changelog: $!\n";
$_ = <CHANGELOG>;
chomp;
close CHANGELOG;
my ($package, $last_date, $last_revision) = /^(.*?) \((.*?)\.(.*)?\)/;
if ($last_date eq $datestr) {
$revision = sprintf("%.2d", $last_revision + 1);
}
my $new_version = "$datestr.$revision";
copy('debian/changelog', 'debian/changelog.old') or die "Couldn't copy debian/changelog to debian/changelog.old: $!\n";
open(NEWCHANGELOG, ">debian/changelog") or die "Couldn't open debian/changelog for writing: $!\n";
print NEWCHANGELOG "$package ($new_version) unstable; urgency=low\n\n * CVS snapshot build at " . scalar localtime() . "\n\n -- $maintainer " . `date -R` . "\n";
open(OLDCHANGELOG, "debian/changelog.old") or die "Couldn't open debian/changelog.old: $!\n";
while (<OLDCHANGELOG>) {
print NEWCHANGELOG;
}
close OLDCHANGELOG;
close NEWCHANGELOG;
unlink('debian/changelog.old') or die "Couldn't unlink debian/changelog.old: $!\n";
open(NEWVERSION, '>debian/version') or die "Couldn't open debian/version for writing: $!\n";
print NEWVERSION "$new_version\n";
close NEWVERSION;
system('dpkg-buildpackage -b -rfakeroot -us -uc');
unlink 'debian/version' or die "Couldn't unlink debian/version: $!\n";

10
debian/changelog vendored Normal file
View File

@@ -0,0 +1,10 @@
gtk+-cvs (19981116.01) unstable; urgency=low
* First test build from CVS
-- Ben Gertzfield <che@debian.org> Tue, 17 Nov 1998 12:02:13 -0800
Local variables:
mode: debian-changelog
add-log-mailing-address: "che@debian.org"
End:

81
debian/control vendored Normal file
View File

@@ -0,0 +1,81 @@
Source: gtk+-cvs
Priority: extra
Section: libs
Maintainer: Ben Gertzfield <che@debian.org>
Standards-Version: 2.4.0.0
Package: libgtk-cvs-1.1
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
Conflicts: libgtk-dev (<< 1:1.0.2), libgtk1.1
Description: CVS build of the GIMP Toolkit set of widgets for X
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
The GIMP Toolkit is a freely available set of widgets for X.
GTK is easy to use, and has been implemented in such projects as
The GNU Image Manipulation Program (The GIMP), GNOME, a GNU
desktop set of utilities for X, and gzilla, a GNU web-browser.
.
This is the unstable 1.1 branch of GTK. It is not intended for use
with stable projects!
Package: libgtk-cvs-dev
Architecture: any
Section: devel
Depends: libgtk-cvs-1.1 (=${Source-Version}), libglib-cvs-dev
Suggests: libgtk-cvs-doc
Provides: libgtk1.1-dev
Replaces: libgtk1.1-dev
Conflicts: libgtk-dev, libgtk1 (<< 1:1.0.4), libgtk1.1-dev
Description: CVS build of development files for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains the header files and static libraries for the
GIMP Toolkit set of widgets for X.
.
This is the unstable, 1.1 branch of GTK+. This is not intended for
use with stable releases of programs!
.
Install this package if you wish to develop your own X programs using
the GIMP Toolkit 1.1, or if you wish to compile your own plug-ins for
The GIMP.
Package: libgtk-cvs-doc
Architecture: all
Section: doc
Conflicts: libgtk-dev (<< 1:0.99.4), libgtk-doc, libgtk1.1-doc
Description: CVS build of documentation for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains lots of info-files, HTML docs, FAQs, and
other handy documentation about the GIMP Toolkit set of widgets
for X.
.
This package documents the unstable 1.1 release of the GIMP Toolkit.
.
Install this package if you want to have lots of info about the
GIMP toolkit when you're programming.
Package: libgtk-cvs-dbg
Architecture: any
Section: devel
Depends: libgtk-cvs-1.1 (= ${Source-Version}), libgtk-cvs-dev (= ${Source-Version})
Suggests: libgtk-cvs-doc
Conflicts: libgtk1.1-dbg
Description: CVS build of debugging files for the GIMP Toolkit
**THIS IS NOT AN OFFICIAL DEBIAN PACKAGE! THIS IS AN AUTOMATED CVS
BUILD OF THE GTK+ LIBRARIES! BEWARE! IT MAY NOT WORK!**
.
This package contains the debugging static libraries for the
GIMP Toolkit set of widgets for X.
.
This is the unstable, 1.1 branch of GTK+. This is not intended for
use with stable releases of programs!
.
Install this package if you wish to debug your own X programs using
the GIMP Toolkit 1.1, or if you wish to debug your own plug-ins for
The GIMP.

8
debian/copyright vendored Normal file
View File

@@ -0,0 +1,8 @@
This package was debianized by Ben Gertzfield <che@debian.org> on
Tue, 17 Nov 1998 12:07:17 -0800
It was produced from the CVS repository at cvs.gimp.org.
It may be redistributed under the terms of the GNU LGPL, Version 2 or
later, found on Debian systems in the file /usr/doc/copyright/LGPL.

9
debian/libgtk-cvs-dev.files vendored Normal file
View File

@@ -0,0 +1,9 @@
usr/lib/libgdk.so
usr/lib/libgdk.a
usr/lib/libgtk.so
usr/lib/libgtk.a
usr/include/gdk/
usr/include/gtk/
usr/bin/gtk-config
usr/man/man1/gtk-config.1
usr/share/aclocal/gtk.m4

5
debian/libgtk-cvs-dev.postinst vendored Normal file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
set -e
#DEBHELPER#

6
debian/libgtk-cvs-dev.prerm vendored Normal file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
set -e
install-info --quiet --remove gtk
#DEBHELPER#

8
debian/libgtk-cvs-doc.files vendored Normal file
View File

@@ -0,0 +1,8 @@
usr/info/gdk.info
usr/info/gtk.info
usr/info/gtk.info-1
usr/info/gtk.info-2
usr/info/gtk.info-3
usr/info/gtk.info-4
usr/info/gtk.info-5

11
debian/libgtk-cvs-doc.postinst vendored Normal file
View File

@@ -0,0 +1,11 @@
#!/bin/sh
set -e
install-info --quiet --description="The GIMP Toolkit." \
--section "The GIMP" "The GIMP" /usr/info/gtk.info.gz
install-info --quiet --description="The GIMP Drawing Kit." \
--section "The GIMP" "The GIMP" /usr/info/gdk.info.gz
#DEBHELPER#

7
debian/libgtk-cvs-doc.prerm vendored Normal file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
set -e
install-info --quiet --remove gtk
install-info --quiet --remove gdk
#DEBHELPER#

7
debian/postinst vendored Normal file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
set -e
ldconfig
#DEBHELPER#

160
debian/rules vendored Executable file
View File

@@ -0,0 +1,160 @@
#!/usr/bin/make -f
# debian/rules file for gtk+ Debian package
# written April 1998 by Ben Gertzfield <che@debian.org
build: build-stamp
build-stamp:
dh_testdir
./autogen.sh --prefix=/usr --with-xinput=xfree
$(MAKE)
cd docs && make distdocs
cd ..
touch build-stamp
build-dbg: build-dbg-stamp
build-dbg-stamp:
dh_testdir
./configure --prefix=/usr --with-xinput=xfree --enable-debug=yes
$(MAKE)
touch build-dbg-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp build-dbg-stamp install-stamp install-dbg-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
cd docs
-$(MAKE) maintainer-clean
cd ..
-$(MAKE) distclean
find . -name '*.o' -o -name '_libs' -o -name '*.lo' -o -name '*.a' -o -name '.deps' | xargs rm -rf
dh_clean
clean-dbg:
dh_testdir
dh_testroot
rm -f build-stamp build-dbg-stamp install-stamp install-dbg-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
cd docs
-$(MAKE) maintainer-clean
cd ..
-$(MAKE) distclean
find . -name '*.o' -o -name '_libs' -o -name '*.lo' -o -name '*.a' -o -name '.deps' | xargs rm -rf
dh_clean -k
install: install-stamp
install-stamp: build
dh_testdir
dh_testroot
dh_clean
$(MAKE) prefix=`pwd`/debian/tmp/usr install
touch install-stamp
install-dbg: install-dbg-stamp
install-dbg-stamp: build-dbg
dh_testdir
dh_testroot
dh_clean -k
$(MAKE) prefix=`pwd`/debian/libgtk-cvs-dbg/usr install
touch install-dbg-stamp
# Build architecture-independent files here.
binary-indep: build install libgtk-cvs-doc
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install libgtk-cvs-dev libgtk-cvs-1.1 libgtk-cvs-dbg
libgtk-cvs-1.1: build
dh_testdir -plibgtk-cvs-1.1
dh_testroot -plibgtk-cvs-1.1
dh_installdirs -plibgtk-cvs-1.1
# Add here commands to install the files into debian/tmp
rm -rf debian/tmp/usr/bin debian/tmp/usr/include debian/tmp/usr/info debian/tmp/usr/lib/glib debian/tmp/usr/share/aclocal debian/tmp/usr/man debian/tmp/usr/lib/*.la
dh_installdocs -plibgtk-cvs-1.1
dh_installchangelogs -plibgtk-cvs-1.1
dh_strip -plibgtk-cvs-1.1
dh_compress -plibgtk-cvs-1.1
dh_fixperms -plibgtk-cvs-1.1
dh_installdeb -plibgtk-cvs-1.1
dh_shlibdeps -plibgtk-cvs-1.1
dh_gencontrol -plibgtk-cvs-1.1
dh_makeshlibs -plibgtk-cvs-1.1 -V 'libgtk-cvs-1.1 (='`cat debian/version`')'
dh_md5sums -plibgtk-cvs-1.1
dh_builddeb -plibgtk-cvs-1.1
libgtk-cvs-dev: build
dh_testdir -plibgtk-cvs-dev
dh_testroot -plibgtk-cvs-dev
dh_clean -plibgtk-cvs-dev -k
dh_installdirs -plibgtk-cvs-dev
# Add here commands to install the files into debian/tmp
dh_movefiles -plibgtk-cvs-dev
cp gtk-config debian/tmp/usr/bin
dh_installdocs -plibgtk-cvs-dev
dh_installchangelogs -plibgtk-cvs-dev
dh_strip -plibgtk-cvs-dev
dh_compress -plibgtk-cvs-dev
dh_fixperms -plibgtk-cvs-dev
dh_installdeb -plibgtk-cvs-dev
dh_shlibdeps -plibgtk-cvs-dev
dh_gencontrol -plibgtk-cvs-dev
dh_md5sums -plibgtk-cvs-dev
dh_builddeb -plibgtk-cvs-dev
libgtk-cvs-doc:
dh_testdir -plibgtk-cvs-doc
dh_testroot -plibgtk-cvs-doc
dh_clean -plibgtk-cvs-doc -k
dh_installdirs -plibgtk-cvs-doc usr/doc/libgtk-cvs-doc/faq-html \
usr/doc/libgtk-cvs-doc/tutorial-html usr/doc/libgtk-cvs-doc/italian-tutorial-html usr/doc/libgtk-cvs-doc/french-tutorial-html usr/doc/libgtk-cvs-doc/gdk-html
dh_movefiles -plibgtk-cvs-doc
cp docs/html/gtkfaq*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/faq-html
cp docs/html/gtk_tut-*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/gtk_tut.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/tutorial-html
cp docs/html/gtk_tut_it*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/italian-tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/italian-tutorial-html
cp docs/html/gtk_tut_fr*.html debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/french-tutorial-html
cp docs/html/*.gif debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/french-tutorial-html
cp docs/html/gdk* debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/gdk-html
cp docs/text/*.txt debian/libgtk-cvs-doc/usr/doc/libgtk-cvs-doc/
dh_installdocs -plibgtk-cvs-doc docs/{debugging,developers,styles,text_widget,widget_system,gtk-config,refcounting}.txt TODO NEWS
dh_installchangelogs -plibgtk-cvs-doc
dh_strip -plibgtk-cvs-doc
dh_compress -plibgtk-cvs-doc
dh_fixperms -plibgtk-cvs-doc
dh_installdeb -plibgtk-cvs-doc
dh_shlibdeps -plibgtk-cvs-doc
dh_gencontrol -plibgtk-cvs-doc
dh_md5sums -plibgtk-cvs-doc
dh_builddeb -plibgtk-cvs-doc
libgtk-cvs-dbg: clean-dbg install-dbg
dh_testdir -plibgtk-cvs-dbg
dh_testroot -plibgtk-cvs-dbg
dh_installdirs -plibgtk-cvs-dbg
# Add here commands to install the files into debian/libgtk-cvs-dbg
rm -rf debian/libgtk-cvs-dbg/usr/bin debian/libgtk-cvs-dbg/usr/include debian/libgtk-cvs-dbg/usr/info debian/libgtk-cvs-dbg/usr/lib/glib debian/libgtk-cvs-dbg/usr/man debian/libgtk-cvs-dbg/usr/share debian/libgtk-cvs-dbg/usr/lib/*.{la,so*}
for file in `find debian/libgtk-cvs-dbg/usr/lib -name '*.a'` ; do \
mv $$file debian/libgtk-cvs-dbg/usr/lib/`basename $$file .a`_g.a; \
done
dh_installdocs -plibgtk-cvs-dbg
dh_installchangelogs -plibgtk-cvs-dbg
dh_compress -plibgtk-cvs-dbg
dh_fixperms -plibgtk-cvs-dbg
dh_installdeb -plibgtk-cvs-dbg
dh_shlibdeps -plibgtk-cvs-dbg
dh_gencontrol -plibgtk-cvs-dbg
dh_md5sums -plibgtk-cvs-dbg
dh_builddeb -plibgtk-cvs-dbg
source diff:
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary

11
demos/.cvsignore Normal file
View File

@@ -0,0 +1,11 @@
Makefile
Makefile.in
.libs
.deps
testanimation
test-inline-pixbufs.h
testpixbuf-drawable
testpixbuf-scale
testpixbuf-save
testpixbuf
pixbuf-demo

85
demos/Makefile.am Normal file
View File

@@ -0,0 +1,85 @@
## Makefile.am for gtk+/demos
SUBDIRS = gtk-demo
INCLUDES = \
-I$(top_srcdir) \
-I$(top_builddir)/gdk \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
DEPS = \
$(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
$(top_builddir)/gdk/$(gdktargetlib) \
$(top_builddir)/gtk/$(gtktargetlib)
LDADDS = \
$(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
$(top_builddir)/gdk/$(gdktargetlib) \
$(top_builddir)/gtk/$(gtktargetlib)
noinst_PROGRAMS = \
testpixbuf-drawable \
testanimation \
testpixbuf-save \
testpixbuf-scale \
pixbuf-demo
# Need to build test-inline-pixbufs.h for testpixbuf
if HAVE_PNG
noinst_PROGRAMS += testpixbuf
BUILT_SOURCES = test-inline-pixbufs.h
endif
if CROSS_COMPILING
pixbuf_csource=$(GDK_PIXBUF_CSOURCE)
pixbuf_csource_deps=
else
pixbuf_csource=GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders $(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource
pixbuf_csource_deps=$(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource $(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders
endif
test-inline-pixbufs.h: $(pixbuf_csource_deps) apple-red.png gnome-foot.png
$(pixbuf_csource) --raw --build-list \
apple_red $(srcdir)/apple-red.png \
gnome_foot $(srcdir)/gnome-foot.png \
> test-inline-pixbufs.h \
|| (rm -f test-inline-pixbufs.h && false)
testpixbuf_DEPENDENCIES = $(DEPS)
testpixbuf_drawable_DEPENDENCIES = $(DEPS)
testpixbuf_save_DEPENDENCIES = $(DEPS)
testpixbuf_scale_DEPENDENCIES = $(DEPS)
testanimation_DEPENDENCIES = $(DEPS)
pixbuf_demo_DEPENDENCIES = $(DEPS)
testpixbuf_LDADD = $(LDADDS)
testpixbuf_drawable_LDADD = $(LDADDS)
testpixbuf_save_LDADD = $(LDADDS)
testpixbuf_scale_LDADD = $(LDADDS)
testanimation_LDADD = $(LDADDS)
pixbuf_demo_LDADD = $(LDADDS)
testpixbuf_SOURCES = testpixbuf.c pixbuf-init.c
testpixbuf_drawable_SOURCES = testpixbuf-drawable.c pixbuf-init.c
testpixbuf_save_SOURCES = testpixbuf-save.c
testpixbuf_scale_SOURCES = testpixbuf-scale.c pixbuf-init.c
testanimation_SOURCES = testanimation.c pixbuf-init.c
pixbuf_demo_SOURCES = pixbuf-demo.c pixbuf-init.c
EXTRA_DIST = \
apple-red.png \
background.jpg \
gnome-applets.png \
gnome-calendar.png \
gnome-foot.png \
gnome-gimp.png \
gnome-gmush.png \
gnome-gsame.png \
gnu-keys.png
DISTCLEANFILES = test-inline-pixbufs.h

BIN
demos/apple-red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
demos/background.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
demos/gnome-applets.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
demos/gnome-calendar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
demos/gnome-foot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
demos/gnome-gimp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
demos/gnome-gmush.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
demos/gnome-gsame.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
demos/gnu-keys.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,7 @@
Makefile
Makefile.in
.libs
.deps
gtk-demo
demos.h
geninclude.pl

View File

@@ -0,0 +1,89 @@
## Makefile.am for gtk+/demos
democodedir=$(datadir)/gtk-2.0/demo
## These should be in the order you want them to appear in the
## demo app, which means alphabetized by demo title, not filename
demos = \
appwindow.c \
button_box.c \
changedisplay.c \
clipboard.c \
colorsel.c \
dialog.c \
drawingarea.c \
editable_cells.c \
entry_completion.c \
expander.c \
hypertext.c \
iconview.c \
images.c \
list_store.c \
menus.c \
panes.c \
pixbufs.c \
rotated_text.c \
sizegroup.c \
stock_browser.c \
textview.c \
tree_store.c \
ui_manager.c
INCLUDES = \
-DDEMOCODEDIR="\"$(democodedir)\"" \
-I$(top_srcdir) \
-I$(top_builddir)/gdk \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
DEPS = \
$(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
$(top_builddir)/gdk/$(gdktargetlib) \
$(top_builddir)/gtk/$(gtktargetlib)
LDADDS = \
$(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
$(top_builddir)/gdk/$(gdktargetlib) \
$(top_builddir)/gtk/$(gtktargetlib)
bin_PROGRAMS = gtk-demo
BUILT_SOURCES = demos.h
EXTRA_DIST = \
$(IMAGEFILES)
demos.h: @REBUILD@ $(demos) geninclude.pl
(here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
gtk_demo_SOURCES = \
$(demos) \
demo-common.h \
main.c \
demos.h
gtk_demo_DEPENDENCIES = $(DEPS)
gtk_demo_LDADD = $(LDADDS)
IMAGEFILES= alphatest.png \
apple-red.png \
background.jpg \
floppybuddy.gif \
gnome-applets.png \
gnome-calendar.png \
gnome-fs-directory.png \
gnome-fs-regular.png \
gnome-foot.png \
gnome-gimp.png \
gnome-gmush.png \
gnome-gsame.png \
gnu-keys.png \
gtk-logo-rgb.gif
democode_DATA = $(demos) $(IMAGEFILES)
DISTCLEANFILES = demos.h

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,549 +0,0 @@
#include "config.h"
#include <gtk/gtk.h>
typedef GtkApplication DemoApplication;
typedef GtkApplicationClass DemoApplicationClass;
G_DEFINE_TYPE (DemoApplication, demo_application, GTK_TYPE_APPLICATION)
typedef struct {
GtkApplicationWindow parent_instance;
GtkWidget *message;
GtkWidget *infobar;
GtkWidget *status;
GtkWidget *menutool;
GMenuModel *toolmenu;
GtkTextBuffer *buffer;
int width;
int height;
gboolean maximized;
gboolean fullscreen;
} DemoApplicationWindow;
typedef GtkApplicationWindowClass DemoApplicationWindowClass;
G_DEFINE_TYPE (DemoApplicationWindow, demo_application_window, GTK_TYPE_APPLICATION_WINDOW)
static void create_window (GApplication *app, const char *contents);
static void
show_action_dialog (GSimpleAction *action)
{
const gchar *name;
GtkWidget *dialog;
name = g_action_get_name (G_ACTION (action));
dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
"You activated action: \"%s\"",
name);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
}
static void
show_action_infobar (GSimpleAction *action,
GVariant *parameter,
gpointer data)
{
DemoApplicationWindow *window = data;
gchar *text;
const gchar *name;
const gchar *value;
name = g_action_get_name (G_ACTION (action));
value = g_variant_get_string (parameter, NULL);
text = g_strdup_printf ("You activated radio action: \"%s\".\n"
"Current value: %s", name, value);
gtk_label_set_text (GTK_LABEL (window->message), text);
gtk_widget_show (window->infobar);
g_free (text);
}
static void
activate_action (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
show_action_dialog (action);
}
static void
activate_new (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GApplication *app = user_data;
create_window (app, NULL);
}
static void
open_response_cb (GtkNativeDialog *dialog,
gint response_id,
gpointer user_data)
{
GtkFileChooserNative *native = user_data;
GApplication *app = g_object_get_data (G_OBJECT (native), "app");
GtkWidget *message_dialog;
GFile *file;
char *contents;
GError *error = NULL;
if (response_id == GTK_RESPONSE_ACCEPT)
{
file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (native));
if (g_file_load_contents (file, NULL, &contents, NULL, NULL, &error))
{
create_window (app, contents);
g_free (contents);
}
else
{
message_dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Error loading file: \"%s\"",
error->message);
g_signal_connect (message_dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (message_dialog);
g_error_free (error);
}
}
gtk_native_dialog_destroy (GTK_NATIVE_DIALOG (native));
g_object_unref (native);
}
static void
activate_open (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GApplication *app = user_data;
GtkFileChooserNative *native;
native = gtk_file_chooser_native_new ("Open File",
NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
"_Open",
"_Cancel");
g_object_set_data_full (G_OBJECT (native), "app", g_object_ref (app), g_object_unref);
g_signal_connect (native,
"response",
G_CALLBACK (open_response_cb),
native);
gtk_native_dialog_show (GTK_NATIVE_DIALOG (native));
}
static void
activate_toggle (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GVariant *state;
show_action_dialog (action);
state = g_action_get_state (G_ACTION (action));
g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
g_variant_unref (state);
}
static void
activate_radio (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
show_action_infobar (action, parameter, user_data);
g_action_change_state (G_ACTION (action), parameter);
}
static void
activate_about (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkWidget *window = user_data;
const gchar *authors[] = {
"Peter Mattis",
"Spencer Kimball",
"Josh MacDonald",
"and many more...",
NULL
};
const gchar *documentors[] = {
"Owen Taylor",
"Tony Gale",
"Matthias Clasen <mclasen@redhat.com>",
"and many more...",
NULL
};
gtk_show_about_dialog (GTK_WINDOW (window),
"program-name", "GTK+ Code Demos",
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
PACKAGE_VERSION,
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ()),
"copyright", "(C) 1997-2013 The GTK+ Team",
"license-type", GTK_LICENSE_LGPL_2_1,
"website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK+ functions.",
"authors", authors,
"documenters", documentors,
"logo-icon-name", "gtk4-demo",
"title", "About GTK+ Code Demos",
NULL);
}
static void
activate_quit (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkApplication *app = user_data;
GtkWidget *win;
GList *list, *next;
list = gtk_application_get_windows (app);
while (list)
{
win = list->data;
next = list->next;
gtk_widget_destroy (GTK_WIDGET (win));
list = next;
}
}
static void
update_statusbar (GtkTextBuffer *buffer,
DemoApplicationWindow *window)
{
gchar *msg;
gint row, col;
gint count;
GtkTextIter iter;
/* clear any previous message, underflow is allowed */
gtk_statusbar_pop (GTK_STATUSBAR (window->status), 0);
count = gtk_text_buffer_get_char_count (buffer);
gtk_text_buffer_get_iter_at_mark (buffer,
&iter,
gtk_text_buffer_get_insert (buffer));
row = gtk_text_iter_get_line (&iter);
col = gtk_text_iter_get_line_offset (&iter);
msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document",
row, col, count);
gtk_statusbar_push (GTK_STATUSBAR (window->status), 0, msg);
g_free (msg);
}
static void
mark_set_callback (GtkTextBuffer *buffer,
const GtkTextIter *new_location,
GtkTextMark *mark,
DemoApplicationWindow *window)
{
update_statusbar (buffer, window);
}
static void
change_theme_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
GtkSettings *settings = gtk_settings_get_default ();
g_object_set (G_OBJECT (settings),
"gtk-application-prefer-dark-theme",
g_variant_get_boolean (state),
NULL);
g_simple_action_set_state (action, state);
}
static void
change_radio_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
g_simple_action_set_state (action, state);
}
static GActionEntry app_entries[] = {
{ "new", activate_new, NULL, NULL, NULL },
{ "open", activate_open, NULL, NULL, NULL },
{ "save", activate_action, NULL, NULL, NULL },
{ "save-as", activate_action, NULL, NULL, NULL },
{ "quit", activate_quit, NULL, NULL, NULL },
{ "dark", activate_toggle, NULL, "false", change_theme_state }
};
static GActionEntry win_entries[] = {
{ "shape", activate_radio, "s", "'oval'", change_radio_state },
{ "bold", activate_toggle, NULL, "false", NULL },
{ "about", activate_about, NULL, NULL, NULL },
{ "file1", activate_action, NULL, NULL, NULL },
{ "logo", activate_action, NULL, NULL, NULL }
};
static void
clicked_cb (GtkWidget *widget, DemoApplicationWindow *window)
{
gtk_widget_hide (window->infobar);
}
static void
startup (GApplication *app)
{
GtkBuilder *builder;
GMenuModel *appmenu;
GMenuModel *menubar;
G_APPLICATION_CLASS (demo_application_parent_class)->startup (app);
builder = gtk_builder_new ();
gtk_builder_add_from_resource (builder, "/application_demo/menus.ui", NULL);
appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
g_object_unref (builder);
}
static void
create_window (GApplication *app,
const char *content)
{
DemoApplicationWindow *window;
window = (DemoApplicationWindow *)g_object_new (demo_application_window_get_type (),
"application", app,
NULL);
if (content)
gtk_text_buffer_set_text (window->buffer, content, -1);
gtk_window_present (GTK_WINDOW (window));
}
static void
activate (GApplication *app)
{
create_window (app, NULL);
}
static void
demo_application_init (DemoApplication *app)
{
GSettings *settings;
GAction *action;
settings = g_settings_new ("org.gtk.Demo");
g_action_map_add_action_entries (G_ACTION_MAP (app),
app_entries, G_N_ELEMENTS (app_entries),
app);
action = g_settings_create_action (settings, "color");
g_action_map_add_action (G_ACTION_MAP (app), action);
g_object_unref (settings);
}
static void
demo_application_class_init (DemoApplicationClass *class)
{
GApplicationClass *app_class = G_APPLICATION_CLASS (class);
app_class->startup = startup;
app_class->activate = activate;
}
static void
demo_application_window_store_state (DemoApplicationWindow *win)
{
GSettings *settings;
settings = g_settings_new ("org.gtk.Demo");
g_settings_set (settings, "window-size", "(ii)", win->width, win->height);
g_settings_set_boolean (settings, "maximized", win->maximized);
g_settings_set_boolean (settings, "fullscreen", win->fullscreen);
g_object_unref (settings);
}
static void
demo_application_window_load_state (DemoApplicationWindow *win)
{
GSettings *settings;
settings = g_settings_new ("org.gtk.Demo");
g_settings_get (settings, "window-size", "(ii)", &win->width, &win->height);
win->maximized = g_settings_get_boolean (settings, "maximized");
win->fullscreen = g_settings_get_boolean (settings, "fullscreen");
g_object_unref (settings);
}
static void
demo_application_window_init (DemoApplicationWindow *window)
{
GtkWidget *menu;
window->width = -1;
window->height = -1;
window->maximized = FALSE;
window->fullscreen = FALSE;
gtk_widget_init_template (GTK_WIDGET (window));
menu = gtk_menu_new_from_model (window->toolmenu);
gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (window->menutool), menu);
g_action_map_add_action_entries (G_ACTION_MAP (window),
win_entries, G_N_ELEMENTS (win_entries),
window);
}
static void
demo_application_window_constructed (GObject *object)
{
DemoApplicationWindow *window = (DemoApplicationWindow *)object;
demo_application_window_load_state (window);
gtk_window_set_default_size (GTK_WINDOW (window), window->width, window->height);
if (window->maximized)
gtk_window_maximize (GTK_WINDOW (window));
if (window->fullscreen)
gtk_window_fullscreen (GTK_WINDOW (window));
G_OBJECT_CLASS (demo_application_window_parent_class)->constructed (object);
}
static void
demo_application_window_size_allocate (GtkWidget *widget,
int width,
int height,
int baseline)
{
DemoApplicationWindow *window = (DemoApplicationWindow *)widget;
GTK_WIDGET_CLASS (demo_application_window_parent_class)->size_allocate (widget,
width,
height,
baseline);
if (!window->maximized && !window->fullscreen)
gtk_window_get_size (GTK_WINDOW (window), &window->width, &window->height);
}
static void
surface_state_changed (GtkWidget *widget)
{
DemoApplicationWindow *window = (DemoApplicationWindow *)widget;
GdkSurfaceState new_state;
new_state = gdk_surface_get_state (gtk_widget_get_surface (widget));
window->maximized = (new_state & GDK_SURFACE_STATE_MAXIMIZED) != 0;
window->fullscreen = (new_state & GDK_SURFACE_STATE_FULLSCREEN) != 0;
}
static void
demo_application_window_realize (GtkWidget *widget)
{
GTK_WIDGET_CLASS (demo_application_window_parent_class)->realize (widget);
g_signal_connect_swapped (gtk_widget_get_surface (widget), "notify::state",
G_CALLBACK (surface_state_changed), widget);
}
static void
demo_application_window_unrealize (GtkWidget *widget)
{
g_signal_handlers_disconnect_by_func (gtk_widget_get_surface (widget),
surface_state_changed, widget);
GTK_WIDGET_CLASS (demo_application_window_parent_class)->unrealize (widget);
}
static void
demo_application_window_destroy (GtkWidget *widget)
{
DemoApplicationWindow *window = (DemoApplicationWindow *)widget;
demo_application_window_store_state (window);
GTK_WIDGET_CLASS (demo_application_window_parent_class)->destroy (widget);
}
static void
demo_application_window_class_init (DemoApplicationWindowClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
object_class->constructed = demo_application_window_constructed;
widget_class->size_allocate = demo_application_window_size_allocate;
widget_class->realize = demo_application_window_realize;
widget_class->unrealize = demo_application_window_unrealize;
widget_class->destroy = demo_application_window_destroy;
gtk_widget_class_set_template_from_resource (widget_class, "/application_demo/application.ui");
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, message);
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, infobar);
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, status);
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, buffer);
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, menutool);
gtk_widget_class_bind_template_child (widget_class, DemoApplicationWindow, toolmenu);
gtk_widget_class_bind_template_callback (widget_class, clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, update_statusbar);
gtk_widget_class_bind_template_callback (widget_class, mark_set_callback);
}
int
main (int argc, char *argv[])
{
GtkApplication *app;
app = GTK_APPLICATION (g_object_new (demo_application_get_type (),
"application-id", "org.gtk.Demo2",
"flags", G_APPLICATION_HANDLES_OPEN,
NULL));
return g_application_run (G_APPLICATION (app), 0, NULL);
}

View File

@@ -1,112 +0,0 @@
<?xml version="1.0"?>
<interface>
<template class="DemoApplicationWindow" parent="GtkApplicationWindow">
<property name="title" translatable="yes">Application Class</property>
<property name="default-width">200</property>
<property name="default-height">200</property>
<property name="icon-name">document-open</property>
<child>
<object class="GtkGrid">
<child>
<object class="GtkToolbar">
<property name="hexpand">1</property>
<style>
<class name="primary-toolbar"/>
</style>
<child>
<object class="GtkMenuToolButton" id="menutool">
<property name="icon-name">document-open</property>
</object>
</child>
<child>
<object class="GtkToolButton">
<property name="icon-name">application-exit</property>
<property name="action-name">app.quit</property>
</object>
</child>
<child>
<object class="GtkSeparatorToolItem">
</object>
</child>
<child>
<object class="GtkToolButton">
<property name="icon-name">applications-other</property>
<property name="action-name">win.logo</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkInfoBar" id="infobar">
<property name="visible">0</property>
<property name="hexpand">1</property>
<child internal-child="content_area">
<object class="GtkBox" id="content_area">
<child>
<object class="GtkLabel" id="message">
<property name="hexpand">1</property>
</object>
</child>
</object>
</child>
<child internal-child="action_area">
<object class="GtkBox">
<child>
<object class="GtkButton">
<property name="valign">center</property>
<property name="label" translatable="yes">_OK</property>
<property name="use-underline">1</property>
<signal name="clicked" handler="clicked_cb"/>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="shadow-type">in</property>
<child>
<object class="GtkTextView">
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="buffer">buffer</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkStatusbar" id="status">
<property name="hexpand">1</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
</object>
</child>
</template>
<menu id="toolmenu">
<item>
<attribute name="label">File1</attribute>
<attribute name="action">win.file1</attribute>
</item>
</menu>
<object class="GtkTextBuffer" id="buffer">
<signal name="changed" handler="update_statusbar"/>
<signal name="mark-set" handler="mark_set_callback"/>
</object>
</interface>

View File

@@ -1,95 +0,0 @@
/* Application Class
*
* Demonstrates a simple application.
*
* This example uses GtkApplication, GtkApplicationWindow, GtkBuilder
* as well as GMenu and GResource. Due to the way GtkApplication is structured,
* it is run as a separate process.
*/
#include "config.h"
#include <gtk/gtk.h>
static gboolean name_seen;
static GtkWidget *placeholder;
static void
on_name_appeared (GDBusConnection *connection,
const gchar *name,
const gchar *name_owner,
gpointer user_data)
{
name_seen = TRUE;
}
static void
on_name_vanished (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
if (!name_seen)
return;
if (placeholder)
{
gtk_widget_destroy (placeholder);
g_object_unref (placeholder);
placeholder = NULL;
}
}
#ifdef G_OS_WIN32
#define APP_EXTENSION ".exe"
#else
#define APP_EXTENSION
#endif
GtkWidget *
do_application_demo (GtkWidget *toplevel)
{
static guint watch = 0;
if (watch == 0)
watch = g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gtk.Demo2",
0,
on_name_appeared,
on_name_vanished,
NULL, NULL);
if (placeholder == NULL)
{
const gchar *command;
GError *error = NULL;
if (g_file_test ("./gtk4-demo-application" APP_EXTENSION, G_FILE_TEST_IS_EXECUTABLE))
command = "./gtk4-demo-application" APP_EXTENSION;
else
command = "gtk4-demo-application";
if (!g_spawn_command_line_async (command, &error))
{
g_warning ("%s", error->message);
g_error_free (error);
}
placeholder = gtk_label_new ("");
g_object_ref_sink (placeholder);
}
else
{
g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL),
"org.gtk.Demo2",
"/org/gtk/Demo2",
"org.gtk.Actions",
"Activate",
g_variant_new ("(sava{sv})", "quit", NULL, NULL),
NULL,
0,
G_MAXINT,
NULL, NULL);
}
return placeholder;
}

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.10 -->
<menu id="appmenu">
<section>
<item>
<attribute name="label" translatable="yes">About</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">_Quit</attribute>
<attribute name="action">app.quit</attribute>
<attribute name="accel">&lt;Primary&gt;q</attribute>
</item>
</section>
</menu>
</interface>

545
demos/gtk-demo/appwindow.c Normal file
View File

@@ -0,0 +1,545 @@
/* Application main window
*
* Demonstrates a typical application window, with menubar, toolbar, statusbar.
*/
#include <gtk/gtk.h>
#include "demo-common.h"
static GtkWidget *window = NULL;
static void
activate_action (GtkAction *action)
{
const gchar *name = gtk_action_get_name (action);
const gchar *typename = G_OBJECT_TYPE_NAME (action);
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
"You activated action: \"%s\" of type \"%s\"",
name, typename);
/* Close dialog on user response */
g_signal_connect (dialog,
"response",
G_CALLBACK (gtk_widget_destroy),
NULL);
gtk_widget_show (dialog);
}
static void
activate_radio_action (GtkAction *action, GtkRadioAction *current)
{
const gchar *name = gtk_action_get_name (GTK_ACTION (current));
const gchar *typename = G_OBJECT_TYPE_NAME (GTK_ACTION (current));
gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (current));
gint value = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (current));
if (active)
{
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
"You activated radio action: \"%s\" of type \"%s\".\nCurrent value: %d",
name, typename, value);
/* Close dialog on user response */
g_signal_connect (dialog,
"response",
G_CALLBACK (gtk_widget_destroy),
NULL);
gtk_widget_show (dialog);
}
}
static void
activate_email (GtkAboutDialog *about,
const gchar *link,
gpointer data)
{
g_print ("send mail to %s\n", link);
}
static void
activate_url (GtkAboutDialog *about,
const gchar *link,
gpointer data)
{
g_print ("show url %s\n", link);
}
static void
about_cb (GtkAction *action,
GtkWidget *window)
{
GdkPixbuf *pixbuf, *transparent;
gchar *filename;
const gchar *authors[] = {
"Peter Mattis",
"Spencer Kimball",
"Josh MacDonald",
"and many more...",
NULL
};
const gchar *documentors[] = {
"Owen Taylor",
"Tony Gale",
"Matthias Clasen <mclasen@redhat.com>",
"and many more...",
NULL
};
const gchar *license =
"This library is free software; you can redistribute it and/or\n"
"modify it under the terms of the GNU Library General Public License as\n"
"published by the Free Software Foundation; either version 2 of the\n"
"License, or (at your option) any later version.\n"
"\n"
"This library is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
"Library General Public License for more details.\n"
"\n"
"You should have received a copy of the GNU Library General Public\n"
"License along with the Gnome Library; see the file COPYING.LIB. If not,\n"
"write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
"Boston, MA 02111-1307, USA.\n";
pixbuf = NULL;
transparent = NULL;
filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
if (filename)
{
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
g_free (filename);
transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
g_object_unref (pixbuf);
}
gtk_about_dialog_set_email_hook (activate_email, NULL, NULL);
gtk_about_dialog_set_url_hook (activate_url, NULL, NULL);
gtk_show_about_dialog (GTK_WINDOW (window),
"name", "GTK+ Code Demos",
"version", "2.4.3",
"copyright", "(C) 1997-2004 The GTK+ Team",
"license", license,
"website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK+ functions.",
"authors", authors,
"documenters", documentors,
"logo", transparent,
NULL);
g_object_unref (transparent);
}
static GtkActionEntry entries[] = {
{ "FileMenu", NULL, "_File" }, /* name, stock id, label */
{ "PreferencesMenu", NULL, "_Preferences" }, /* name, stock id, label */
{ "ColorMenu", NULL, "_Color" }, /* name, stock id, label */
{ "ShapeMenu", NULL, "_Shape" }, /* name, stock id, label */
{ "HelpMenu", NULL, "_Help" }, /* name, stock id, label */
{ "New", GTK_STOCK_NEW, /* name, stock id */
"_New", "<control>N", /* label, accelerator */
"Create a new file", /* tooltip */
G_CALLBACK (activate_action) },
{ "Open", GTK_STOCK_OPEN, /* name, stock id */
"_Open","<control>O", /* label, accelerator */
"Open a file", /* tooltip */
G_CALLBACK (activate_action) },
{ "Save", GTK_STOCK_SAVE, /* name, stock id */
"_Save","<control>S", /* label, accelerator */
"Save current file", /* tooltip */
G_CALLBACK (activate_action) },
{ "SaveAs", GTK_STOCK_SAVE, /* name, stock id */
"Save _As...", NULL, /* label, accelerator */
"Save to a file", /* tooltip */
G_CALLBACK (activate_action) },
{ "Quit", GTK_STOCK_QUIT, /* name, stock id */
"_Quit", "<control>Q", /* label, accelerator */
"Quit", /* tooltip */
G_CALLBACK (activate_action) },
{ "About", NULL, /* name, stock id */
"_About", "<control>A", /* label, accelerator */
"About", /* tooltip */
G_CALLBACK (about_cb) },
{ "Logo", "demo-gtk-logo", /* name, stock id */
NULL, NULL, /* label, accelerator */
"GTK+", /* tooltip */
G_CALLBACK (activate_action) },
};
static guint n_entries = G_N_ELEMENTS (entries);
static GtkToggleActionEntry toggle_entries[] = {
{ "Bold", GTK_STOCK_BOLD, /* name, stock id */
"_Bold", "<control>B", /* label, accelerator */
"Bold", /* tooltip */
G_CALLBACK (activate_action),
TRUE }, /* is_active */
};
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
enum {
COLOR_RED,
COLOR_GREEN,
COLOR_BLUE
};
static GtkRadioActionEntry color_entries[] = {
{ "Red", NULL, /* name, stock id */
"_Red", "<control>R", /* label, accelerator */
"Blood", COLOR_RED }, /* tooltip, value */
{ "Green", NULL, /* name, stock id */
"_Green", "<control>G", /* label, accelerator */
"Grass", COLOR_GREEN }, /* tooltip, value */
{ "Blue", NULL, /* name, stock id */
"_Blue", "<control>B", /* label, accelerator */
"Sky", COLOR_BLUE }, /* tooltip, value */
};
static guint n_color_entries = G_N_ELEMENTS (color_entries);
enum {
SHAPE_SQUARE,
SHAPE_RECTANGLE,
SHAPE_OVAL
};
static GtkRadioActionEntry shape_entries[] = {
{ "Square", NULL, /* name, stock id */
"_Square", "<control>S", /* label, accelerator */
"Square", SHAPE_SQUARE }, /* tooltip, value */
{ "Rectangle", NULL, /* name, stock id */
"_Rectangle", "<control>R", /* label, accelerator */
"Rectangle", SHAPE_RECTANGLE }, /* tooltip, value */
{ "Oval", NULL, /* name, stock id */
"_Oval", "<control>O", /* label, accelerator */
"Egg", SHAPE_OVAL }, /* tooltip, value */
};
static guint n_shape_entries = G_N_ELEMENTS (shape_entries);
static const gchar *ui_info =
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='FileMenu'>"
" <menuitem action='New'/>"
" <menuitem action='Open'/>"
" <menuitem action='Save'/>"
" <menuitem action='SaveAs'/>"
" <separator/>"
" <menuitem action='Quit'/>"
" </menu>"
" <menu action='PreferencesMenu'>"
" <menu action='ColorMenu'>"
" <menuitem action='Red'/>"
" <menuitem action='Green'/>"
" <menuitem action='Blue'/>"
" </menu>"
" <menu action='ShapeMenu'>"
" <menuitem action='Square'/>"
" <menuitem action='Rectangle'/>"
" <menuitem action='Oval'/>"
" </menu>"
" <menuitem action='Bold'/>"
" </menu>"
" <menu action='HelpMenu'>"
" <menuitem action='About'/>"
" </menu>"
" </menubar>"
" <toolbar name='ToolBar'>"
" <toolitem action='Open'/>"
" <toolitem action='Quit'/>"
" <separator action='Sep1'/>"
" <toolitem action='Logo'/>"
" </toolbar>"
"</ui>";
/* This function registers our custom toolbar icons, so they can be themed.
*
* It's totally optional to do this, you could just manually insert icons
* and have them not be themeable, especially if you never expect people
* to theme your app.
*/
static void
register_stock_icons (void)
{
static gboolean registered = FALSE;
if (!registered)
{
GdkPixbuf *pixbuf;
GtkIconFactory *factory;
char *filename;
static GtkStockItem items[] = {
{ "demo-gtk-logo",
"_GTK!",
0, 0, NULL }
};
registered = TRUE;
/* Register our stock items */
gtk_stock_add (items, G_N_ELEMENTS (items));
/* Add our custom icon factory to the list of defaults */
factory = gtk_icon_factory_new ();
gtk_icon_factory_add_default (factory);
/* demo_find_file() looks in the the current directory first,
* so you can run gtk-demo without installing GTK, then looks
* in the location where the file is installed.
*/
pixbuf = NULL;
filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
if (filename)
{
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
g_free (filename);
}
/* Register icon to accompany stock item */
if (pixbuf != NULL)
{
GtkIconSet *icon_set;
GdkPixbuf *transparent;
/* The gtk-logo-rgb icon has a white background, make it transparent */
transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
icon_set = gtk_icon_set_new_from_pixbuf (transparent);
gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
gtk_icon_set_unref (icon_set);
g_object_unref (pixbuf);
g_object_unref (transparent);
}
else
g_warning ("failed to load GTK logo for toolbar");
/* Drop our reference to the factory, GTK will hold a reference. */
g_object_unref (factory);
}
}
static void
update_statusbar (GtkTextBuffer *buffer,
GtkStatusbar *statusbar)
{
gchar *msg;
gint row, col;
gint count;
GtkTextIter iter;
gtk_statusbar_pop (statusbar, 0); /* clear any previous message, underflow is allowed */
count = gtk_text_buffer_get_char_count (buffer);
gtk_text_buffer_get_iter_at_mark (buffer,
&iter,
gtk_text_buffer_get_insert (buffer));
row = gtk_text_iter_get_line (&iter);
col = gtk_text_iter_get_line_offset (&iter);
msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document",
row, col, count);
gtk_statusbar_push (statusbar, 0, msg);
g_free (msg);
}
static void
mark_set_callback (GtkTextBuffer *buffer,
const GtkTextIter *new_location,
GtkTextMark *mark,
gpointer data)
{
update_statusbar (buffer, GTK_STATUSBAR (data));
}
static void
update_resize_grip (GtkWidget *widget,
GdkEventWindowState *event,
GtkStatusbar *statusbar)
{
if (event->changed_mask & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN))
gtk_statusbar_set_has_resize_grip (statusbar, !(event->new_window_state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)));
}
GtkWidget *
do_appwindow (GtkWidget *do_widget)
{
if (!window)
{
GtkWidget *table;
GtkWidget *statusbar;
GtkWidget *contents;
GtkWidget *sw;
GtkWidget *bar;
GtkTextBuffer *buffer;
GtkActionGroup *action_group;
GtkUIManager *merge;
GError *error = NULL;
register_stock_icons ();
/* Create the toplevel window
*/
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Application Window");
/* NULL window variable when window is closed */
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
table = gtk_table_new (1, 4, FALSE);
gtk_container_add (GTK_CONTAINER (window), table);
/* Create the menubar and toolbar
*/
action_group = gtk_action_group_new ("AppWindowActions");
gtk_action_group_add_actions (action_group,
entries, n_entries,
window);
gtk_action_group_add_toggle_actions (action_group,
toggle_entries, n_toggle_entries,
NULL);
gtk_action_group_add_radio_actions (action_group,
color_entries, n_color_entries,
COLOR_RED,
G_CALLBACK (activate_radio_action),
NULL);
gtk_action_group_add_radio_actions (action_group,
shape_entries, n_shape_entries,
SHAPE_SQUARE,
G_CALLBACK (activate_radio_action),
NULL);
merge = gtk_ui_manager_new ();
g_object_set_data_full (G_OBJECT (window), "ui-manager", merge, g_object_unref);
gtk_ui_manager_insert_action_group (merge, action_group, 0);
gtk_window_add_accel_group (GTK_WINDOW (window),
gtk_ui_manager_get_accel_group (merge));
if (!gtk_ui_manager_add_ui_from_string (merge, ui_info, -1, &error))
{
g_message ("building menus failed: %s", error->message);
g_error_free (error);
}
bar = gtk_ui_manager_get_widget (merge, "/MenuBar");
gtk_widget_show (bar);
gtk_table_attach (GTK_TABLE (table),
bar,
/* X direction */ /* Y direction */
0, 1, 0, 1,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
bar = gtk_ui_manager_get_widget (merge, "/ToolBar");
gtk_toolbar_set_tooltips (GTK_TOOLBAR (bar), TRUE);
gtk_widget_show (bar);
gtk_table_attach (GTK_TABLE (table),
bar,
/* X direction */ /* Y direction */
0, 1, 1, 2,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
/* Create document
*/
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_IN);
gtk_table_attach (GTK_TABLE (table),
sw,
/* X direction */ /* Y direction */
0, 1, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
0, 0);
gtk_window_set_default_size (GTK_WINDOW (window),
200, 200);
contents = gtk_text_view_new ();
gtk_widget_grab_focus (contents);
gtk_container_add (GTK_CONTAINER (sw),
contents);
/* Create statusbar */
statusbar = gtk_statusbar_new ();
gtk_table_attach (GTK_TABLE (table),
statusbar,
/* X direction */ /* Y direction */
0, 1, 3, 4,
GTK_EXPAND | GTK_FILL, 0,
0, 0);
/* Show text widget info in the statusbar */
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
g_signal_connect_object (buffer,
"changed",
G_CALLBACK (update_statusbar),
statusbar,
0);
g_signal_connect_object (buffer,
"mark_set", /* cursor moved */
G_CALLBACK (mark_set_callback),
statusbar,
0);
g_signal_connect_object (window,
"window_state_event",
G_CALLBACK (update_resize_grip),
statusbar,
0);
update_statusbar (buffer, GTK_STATUSBAR (statusbar));
}
if (!GTK_WIDGET_VISIBLE (window))
{
gtk_widget_show_all (window);
}
else
{
gtk_widget_destroy (window);
window = NULL;
}
return window;
}

View File

@@ -1,200 +0,0 @@
/* Assistant
*
* Demonstrates a sample multi-step assistant. Assistants are used to divide
* an operation into several simpler sequential steps, and to guide the user
* through these steps.
*/
#include <gtk/gtk.h>
static GtkWidget *assistant = NULL;
static GtkWidget *progress_bar = NULL;
static gboolean
apply_changes_gradually (gpointer data)
{
gdouble fraction;
/* Work, work, work... */
fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));
fraction += 0.05;
if (fraction < 1.0)
{
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);
return G_SOURCE_CONTINUE;
}
else
{
/* Close automatically once changes are fully applied. */
gtk_widget_destroy (assistant);
assistant = NULL;
return G_SOURCE_REMOVE;
}
}
static void
on_assistant_apply (GtkWidget *widget, gpointer data)
{
/* Start a timer to simulate changes taking a few seconds to apply. */
g_timeout_add (100, apply_changes_gradually, NULL);
}
static void
on_assistant_close_cancel (GtkWidget *widget, gpointer data)
{
GtkWidget **assistant = (GtkWidget **) data;
gtk_widget_destroy (*assistant);
*assistant = NULL;
}
static void
on_assistant_prepare (GtkWidget *widget, GtkWidget *page, gpointer data)
{
gint current_page, n_pages;
gchar *title;
current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));
n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));
title = g_strdup_printf ("Sample assistant (%d of %d)", current_page + 1, n_pages);
gtk_window_set_title (GTK_WINDOW (widget), title);
g_free (title);
/* The fourth page (counting from zero) is the progress page. The
* user clicked Apply to get here so we tell the assistant to commit,
* which means the changes up to this point are permanent and cannot
* be cancelled or revisited. */
if (current_page == 3)
gtk_assistant_commit (GTK_ASSISTANT (widget));
}
static void
on_entry_changed (GtkWidget *widget, gpointer data)
{
GtkAssistant *assistant = GTK_ASSISTANT (data);
GtkWidget *current_page;
gint page_number;
const gchar *text;
page_number = gtk_assistant_get_current_page (assistant);
current_page = gtk_assistant_get_nth_page (assistant, page_number);
text = gtk_entry_get_text (GTK_ENTRY (widget));
if (text && *text)
gtk_assistant_set_page_complete (assistant, current_page, TRUE);
else
gtk_assistant_set_page_complete (assistant, current_page, FALSE);
}
static void
create_page1 (GtkWidget *assistant)
{
GtkWidget *box, *label, *entry;
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
label = gtk_label_new ("You must fill out this entry to continue:");
gtk_box_pack_start (GTK_BOX (box), label);
entry = gtk_entry_new ();
gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (box), entry);
g_signal_connect (G_OBJECT (entry), "changed",
G_CALLBACK (on_entry_changed), assistant);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 1");
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);
}
static void
create_page2 (GtkWidget *assistant)
{
GtkWidget *box, *checkbutton;
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
checkbutton = gtk_check_button_new_with_label ("This is optional data, you may continue "
"even if you do not check this");
gtk_box_pack_start (GTK_BOX (box), checkbutton);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 2");
}
static void
create_page3 (GtkWidget *assistant)
{
GtkWidget *label;
label = gtk_label_new ("This is a confirmation page, press 'Apply' to apply changes");
gtk_widget_show (label);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), label);
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), label, GTK_ASSISTANT_PAGE_CONFIRM);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, "Confirmation");
}
static void
create_page4 (GtkWidget *assistant)
{
progress_bar = gtk_progress_bar_new ();
gtk_widget_set_halign (progress_bar, GTK_ALIGN_FILL);
gtk_widget_set_valign (progress_bar, GTK_ALIGN_CENTER);
gtk_widget_set_hexpand (progress_bar, TRUE);
gtk_widget_set_margin_start (progress_bar, 40);
gtk_widget_set_margin_end (progress_bar, 40);
gtk_widget_show (progress_bar);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), progress_bar);
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), progress_bar, GTK_ASSISTANT_PAGE_PROGRESS);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), progress_bar, "Applying changes");
/* This prevents the assistant window from being
* closed while we're "busy" applying changes.
*/
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), progress_bar, FALSE);
}
GtkWidget*
do_assistant (GtkWidget *do_widget)
{
if (!assistant)
{
assistant = gtk_assistant_new ();
gtk_window_set_default_size (GTK_WINDOW (assistant), -1, 300);
gtk_window_set_display (GTK_WINDOW (assistant),
gtk_widget_get_display (do_widget));
create_page1 (assistant);
create_page2 (assistant);
create_page3 (assistant);
create_page4 (assistant);
g_signal_connect (G_OBJECT (assistant), "cancel",
G_CALLBACK (on_assistant_close_cancel), &assistant);
g_signal_connect (G_OBJECT (assistant), "close",
G_CALLBACK (on_assistant_close_cancel), &assistant);
g_signal_connect (G_OBJECT (assistant), "apply",
G_CALLBACK (on_assistant_apply), NULL);
g_signal_connect (G_OBJECT (assistant), "prepare",
G_CALLBACK (on_assistant_prepare), NULL);
}
if (!gtk_widget_get_visible (assistant))
gtk_widget_show (assistant);
else
{
gtk_widget_destroy (assistant);
assistant = NULL;
}
return assistant;
}

View File

@@ -1,332 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="window">
<property name="resizable">0</property>
<property name="title">CSS Blend Modes</property>
<property name="default-width">400</property>
<property name="default-height">300</property>
<child>
<object class="GtkGrid">
<property name="row-spacing">12</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Blend mode:</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow">
<property name="can-focus">1</property>
<property name="vexpand">1</property>
<property name="shadow-type">in</property>
<property name="min-content-width">150</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkStackSwitcher">
<property name="halign">center</property>
<property name="hexpand">1</property>
<property name="stack">stack</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="hhomogeneous">0</property>
<property name="vhomogeneous">0</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkGrid">
<property name="halign">center</property>
<property name="valign">center</property>
<property name="vexpand">1</property>
<property name="row-spacing">12</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Duck</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Background</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="duck"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="gradient"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">
Blended picture</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkImage">
<property name="halign">center</property>
<style>
<class name="blend0"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
<property name="width">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page0</property>
<property name="title" translatable="yes">Ducky</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="halign">center</property>
<property name="valign">center</property>
<property name="vexpand">1</property>
<property name="row-spacing">12</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Red</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Blue</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="red"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="blue"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">
Blended picture</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkImage">
<property name="halign">center</property>
<style>
<class name="blend1"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
<property name="width">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Blends</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="halign">center</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="row-spacing">6</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkImage">
<style>
<class name="cyan"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="magenta"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage">
<style>
<class name="yellow"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkImage">
<property name="halign">center</property>
<style>
<class name="blend2"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Cyan</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Magenta</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Yellow</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Blended picture</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">CMYK</property>
</packing>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
</child>
</object>
</interface>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,124 +0,0 @@
/* Builder
*
* Demonstrates an interface loaded from a XML description.
*/
#include <gtk/gtk.h>
static void
quit_activate (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkWidget *window = user_data;
gtk_widget_destroy (window);
}
static void
about_activate (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GtkWidget *window = user_data;
GtkBuilder *builder;
GtkWidget *about_dlg;
builder = g_object_get_data (G_OBJECT (window), "builder");
about_dlg = GTK_WIDGET (gtk_builder_get_object (builder, "aboutdialog1"));
gtk_dialog_run (GTK_DIALOG (about_dlg));
gtk_widget_hide (about_dlg);
}
static void
help_activate (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
g_print ("Help not available\n");
}
static GActionEntry win_entries[] = {
{ "quit", quit_activate, NULL, NULL, NULL },
{ "about", about_activate, NULL, NULL, NULL },
{ "help", help_activate, NULL, NULL, NULL }
};
GtkWidget *
do_builder (GtkWidget *do_widget)
{
static GtkWidget *window = NULL;
GtkWidget *toolbar;
GActionGroup *actions;
GtkAccelGroup *accel_group;
GtkWidget *item;
if (!window)
{
GtkBuilder *builder;
builder = gtk_builder_new_from_resource ("/builder/demo.ui");
gtk_builder_connect_signals (builder, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
toolbar = GTK_WIDGET (gtk_builder_get_object (builder, "toolbar1"));
gtk_style_context_add_class (gtk_widget_get_style_context (toolbar),
"primary-toolbar");
actions = (GActionGroup*)g_simple_action_group_new ();
g_action_map_add_action_entries (G_ACTION_MAP (actions),
win_entries, G_N_ELEMENTS (win_entries),
window);
gtk_widget_insert_action_group (window, "win", actions);
accel_group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
item = (GtkWidget*)gtk_builder_get_object (builder, "new_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_n, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "open_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_o, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "save_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "quit_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "copy_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_c, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "cut_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_x, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "paste_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_v, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "help_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_F1, 0, GTK_ACCEL_VISIBLE);
item = (GtkWidget*)gtk_builder_get_object (builder, "about_item");
gtk_widget_add_accelerator (item, "activate", accel_group,
GDK_KEY_F7, 0, GTK_ACCEL_VISIBLE);
g_object_set_data_full (G_OBJECT(window), "builder", builder, g_object_unref);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
return window;
}

View File

@@ -3,40 +3,38 @@
* The Button Box widgets are used to arrange buttons with padding.
*/
#include <glib/gi18n.h>
#include <gtk/gtk.h>
static GtkWidget *
create_bbox (gint horizontal,
char *title,
gint spacing,
gint layout)
char *title,
gint spacing,
gint layout)
{
GtkWidget *frame;
GtkWidget *bbox;
GtkWidget *button;
frame = gtk_frame_new (title);
if (horizontal)
bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
bbox = gtk_hbutton_box_new ();
else
bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
g_object_set (bbox, "margin", 5, NULL);
bbox = gtk_vbutton_box_new ();
gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
gtk_container_add (GTK_CONTAINER (frame), bbox);
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
gtk_box_set_spacing (GTK_BOX (bbox), spacing);
button = gtk_button_new_with_label (_("OK"));
button = gtk_button_new_from_stock (GTK_STOCK_OK);
gtk_container_add (GTK_CONTAINER (bbox), button);
button = gtk_button_new_with_label (_("Cancel"));
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
gtk_container_add (GTK_CONTAINER (bbox), button);
button = gtk_button_new_with_label (_("Help"));
button = gtk_button_new_from_stock (GTK_STOCK_HELP);
gtk_container_add (GTK_CONTAINER (bbox), button);
return frame;
@@ -51,77 +49,79 @@ do_button_box (GtkWidget *do_widget)
GtkWidget *hbox;
GtkWidget *frame_horz;
GtkWidget *frame_vert;
if (!window)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
G_CALLBACK (gtk_widget_destroyed),
&window);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (main_vbox, "margin", 10, NULL);
main_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), main_vbox);
frame_horz = gtk_frame_new ("Horizontal Button Boxes");
gtk_widget_set_margin_top (frame_horz, 10);
gtk_widget_set_margin_bottom (frame_horz, 10);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
g_object_set (vbox, "margin", 10, NULL);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Center", 40, GTK_BUTTONBOX_CENTER));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Expand", 0, GTK_BUTTONBOX_EXPAND));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
frame_vert = gtk_frame_new ("Vertical Button Boxes");
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
g_object_set (hbox, "margin", 10, NULL);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Spread", 10, GTK_BUTTONBOX_SPREAD));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Edge", 10, GTK_BUTTONBOX_EDGE));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Start", 10, GTK_BUTTONBOX_START));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "End", 10, GTK_BUTTONBOX_END));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Center", 10, GTK_BUTTONBOX_CENTER));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Expand", 0, GTK_BUTTONBOX_EXPAND));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
if (!GTK_WIDGET_VISIBLE (window))
{
gtk_widget_show_all (window);
}
else
gtk_widget_destroy (window);
{
gtk_widget_destroy (window);
window = NULL;
}
return window;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,33 +1,34 @@
/* Change Display
*
* Demonstrates migrating a window between different displays.
* A display is a mouse and keyboard with some number of
* associated monitors. The neat thing about having multiple
* displays is that they can be on a completely separate
*
* Demonstrates migrating a window between different displays and
* screens. A display is a mouse and keyboard with some number of
* associated monitors. A screen is a set of monitors grouped
* into a single physical work area. The neat thing about having
* multiple displays is that they can be on a completely separate
* computers, as long as there is a network connection to the
* computer where the application is running.
*
* Only some of the windowing systems where GTK+ runs have the
* concept of multiple displays. (The X Window System is the
* main example.) Other windowing systems can only handle one
* keyboard and mouse, and combine all monitors into
* a single display.
* concept of multiple displays and screens. (The X Window System
* is the main example.) Other windowing systems can only
* handle one keyboard and mouse, and combine all monitors into
* a single screen.
*
* This is a moderately complex example, and demonstrates:
*
* - Tracking the currently open displays
* - Tracking the currently open displays and screens
*
* - Changing the display for a window
* - Changing the screen for a window
*
* - Letting the user choose a window by clicking on it
*
*
* - Using GtkListStore and GtkTreeView
*
* - Using GtkDialog
*/
#include <string.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include "demo-common.h"
/* The ChangeDisplayInfo structure corresponds to a toplevel window and
* holds pointers to widgets inside the toplevel window along with other
@@ -42,8 +43,11 @@ struct _ChangeDisplayInfo
GtkSizeGroup *size_group;
GtkTreeModel *display_model;
GtkTreeModel *screen_model;
GtkTreeSelection *screen_selection;
GdkDisplay *current_display;
GdkScreen *current_screen;
};
/* These enumerations provide symbolic names for the columns
@@ -68,33 +72,27 @@ enum
static GtkWidget *
find_toplevel_at_pointer (GdkDisplay *display)
{
GdkSurface *pointer_window;
GdkWindow *pointer_window;
GtkWidget *widget = NULL;
pointer_window = gdk_device_get_surface_at_position (gtk_get_current_event_device (),
NULL, NULL);
pointer_window = gdk_display_get_window_at_pointer (display, NULL, NULL);
/* The user data field of a GdkSurface is used to store a pointer
/* The user data field of a GdkWindow is used to store a pointer
* to the widget that created it.
*/
if (pointer_window)
{
gpointer widget_ptr;
gdk_surface_get_user_data (pointer_window, &widget_ptr);
widget = widget_ptr;
}
gdk_window_get_user_data (pointer_window, (gpointer*) &widget);
return widget ? gtk_widget_get_toplevel (widget) : NULL;
}
static void
released_cb (GtkGestureMultiPress *gesture,
guint n_press,
gdouble x,
gdouble y,
gboolean *clicked)
static gboolean
button_release_event_cb (GtkWidget *widget,
GdkEventButton *event,
gboolean *clicked)
{
*clicked = TRUE;
return TRUE;
}
/* Asks the user to click on a window, then waits for them click
@@ -102,60 +100,57 @@ released_cb (GtkGestureMultiPress *gesture,
* window under the pointer, or NULL, if there is none.
*/
static GtkWidget *
query_for_toplevel (GdkDisplay *display,
const char *prompt)
query_for_toplevel (GdkScreen *screen,
const char *prompt)
{
GdkDisplay *display = gdk_screen_get_display (screen);
GtkWidget *popup, *label, *frame;
GdkCursor *cursor;
GtkWidget *toplevel = NULL;
GdkDevice *device;
popup = gtk_window_new (GTK_WINDOW_POPUP);
gtk_window_set_display (GTK_WINDOW (popup), display);
gtk_window_set_screen (GTK_WINDOW (popup), screen);
gtk_window_set_modal (GTK_WINDOW (popup), TRUE);
gtk_window_set_position (GTK_WINDOW (popup), GTK_WIN_POS_CENTER);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
gtk_container_add (GTK_CONTAINER (popup), frame);
label = gtk_label_new (prompt);
g_object_set (label, "margin", 10, NULL);
gtk_misc_set_padding (GTK_MISC (label), 10, 10);
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_widget_show (popup);
cursor = gdk_cursor_new_from_name ("crosshair", NULL);
device = gtk_get_current_event_device ();
if (gdk_seat_grab (gdk_device_get_seat (device),
gtk_widget_get_surface (popup),
GDK_SEAT_CAPABILITY_ALL_POINTING,
FALSE, cursor, NULL, NULL, NULL) == GDK_GRAB_SUCCESS)
gtk_widget_show_all (popup);
cursor = gdk_cursor_new_for_display (display, GDK_CROSSHAIR);
if (gdk_pointer_grab (popup->window, FALSE,
GDK_BUTTON_RELEASE_MASK,
NULL,
cursor,
GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
{
GtkGesture *gesture = gtk_gesture_multi_press_new ();
gboolean clicked = FALSE;
g_signal_connect (gesture, "released",
G_CALLBACK (released_cb), &clicked);
gtk_widget_add_controller (popup, GTK_EVENT_CONTROLLER (gesture));
/* Process events until clicked is set by our button release event handler.
g_signal_connect (popup, "button-release-event",
G_CALLBACK (button_release_event_cb), &clicked);
/* Process events until clicked is set by button_release_event_cb.
* We pass in may_block=TRUE since we want to wait if there
* are no events currently.
*/
while (!clicked)
g_main_context_iteration (NULL, TRUE);
gdk_seat_ungrab (gdk_device_get_seat (device));
toplevel = find_toplevel_at_pointer (display);
g_main_context_iteration (NULL, TRUE);
toplevel = find_toplevel_at_pointer (gdk_screen_get_display (screen));
if (toplevel == popup)
toplevel = NULL;
toplevel = NULL;
}
g_object_unref (cursor);
gdk_cursor_unref (cursor);
gtk_widget_destroy (popup);
gdk_flush (); /* Really release the grab */
return toplevel;
}
@@ -165,17 +160,46 @@ query_for_toplevel (GdkDisplay *display,
static void
query_change_display (ChangeDisplayInfo *info)
{
GdkDisplay *display = gtk_widget_get_display (info->window);
GdkScreen *screen = gtk_widget_get_screen (info->window);
GtkWidget *toplevel;
toplevel = query_for_toplevel (display,
"Please select the toplevel\n"
"to move to the new display");
toplevel = query_for_toplevel (screen,
"Please select the toplevel\n"
"to move to the new screen");
if (toplevel)
gtk_window_set_display (GTK_WINDOW (toplevel), info->current_display);
gtk_window_set_screen (GTK_WINDOW (toplevel), info->current_screen);
else
gdk_display_beep (display);
gdk_display_beep (gdk_screen_get_display (screen));
}
/* Fills in the screen list based on the current display
*/
static void
fill_screens (ChangeDisplayInfo *info)
{
gtk_list_store_clear (GTK_LIST_STORE (info->screen_model));
if (info->current_display)
{
gint n_screens = gdk_display_get_n_screens (info->current_display);
gint i;
for (i = 0; i < n_screens; i++)
{
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
GtkTreeIter iter;
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
SCREEN_COLUMN_NUMBER, i,
SCREEN_COLUMN_SCREEN, screen,
-1);
if (i == 0)
gtk_tree_selection_select_iter (info->screen_selection, &iter);
}
}
}
/* Called when the user clicks on a button in our dialog or
@@ -184,8 +208,8 @@ query_change_display (ChangeDisplayInfo *info)
*/
static void
response_cb (GtkDialog *dialog,
gint response_id,
ChangeDisplayInfo *info)
gint response_id,
ChangeDisplayInfo *info)
{
if (response_id == GTK_RESPONSE_OK)
query_change_display (info);
@@ -199,21 +223,20 @@ response_cb (GtkDialog *dialog,
*/
static void
open_display_cb (GtkWidget *button,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
GtkWidget *content_area;
GtkWidget *dialog;
GtkWidget *display_entry;
GtkWidget *dialog_label;
gchar *new_screen_name = NULL;
GdkDisplay *result = NULL;
dialog = gtk_dialog_new_with_buttons ("Open Display",
GTK_WINDOW (info->window),
GTK_DIALOG_MODAL,
_("_Cancel"), GTK_RESPONSE_CANCEL,
_("_OK"), GTK_RESPONSE_OK,
NULL);
GTK_WINDOW (info->window),
GTK_DIALOG_MODAL,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
display_entry = gtk_entry_new ();
@@ -221,38 +244,37 @@ open_display_cb (GtkWidget *button,
dialog_label =
gtk_label_new ("Please enter the name of\nthe new display\n");
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
gtk_container_add (GTK_CONTAINER (content_area), dialog_label);
gtk_container_add (GTK_CONTAINER (content_area), display_entry);
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog_label);
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), display_entry);
gtk_widget_grab_focus (display_entry);
gtk_widget_show_all (GTK_BIN (dialog)->child);
while (!result)
{
gint response_id = gtk_dialog_run (GTK_DIALOG (dialog));
if (response_id != GTK_RESPONSE_OK)
break;
break;
new_screen_name = gtk_editable_get_chars (GTK_EDITABLE (display_entry),
0, -1);
0, -1);
if (strcmp (new_screen_name, "") != 0)
{
result = gdk_display_open (new_screen_name);
if (!result)
{
gchar *error_msg =
g_strdup_printf ("Can't open display:\n\t%s\nplease try another one\n",
new_screen_name);
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
g_free (error_msg);
}
{
result = gdk_display_open (new_screen_name);
if (!result)
{
gchar *error_msg =
g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
new_screen_name);
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
g_free (error_msg);
}
g_free (new_screen_name);
}
g_free (new_screen_name);
}
}
gtk_widget_destroy (dialog);
}
@@ -261,7 +283,7 @@ open_display_cb (GtkWidget *button,
*/
static void
close_display_cb (GtkWidget *button,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
if (info->current_display)
gdk_display_close (info->current_display);
@@ -273,19 +295,37 @@ close_display_cb (GtkWidget *button,
*/
static void
display_changed_cb (GtkTreeSelection *selection,
ChangeDisplayInfo *info)
ChangeDisplayInfo *info)
{
GtkTreeModel *model;
GtkTreeIter iter;
if (info->current_display)
g_object_unref (info->current_display);
if (gtk_tree_selection_get_selected (selection, &model, &iter))
gtk_tree_model_get (model, &iter,
DISPLAY_COLUMN_DISPLAY, &info->current_display,
-1);
DISPLAY_COLUMN_DISPLAY, &info->current_display,
-1);
else
info->current_display = NULL;
fill_screens (info);
}
/* Called when the selected row in the sceen list changes.
* Updates info->current_screen.
*/
static void
screen_changed_cb (GtkTreeSelection *selection,
ChangeDisplayInfo *info)
{
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected (selection, &model, &iter))
gtk_tree_model_get (model, &iter,
SCREEN_COLUMN_SCREEN, &info->current_screen,
-1);
else
info->current_screen = NULL;
}
/* This function is used both for creating the "Display" and
@@ -295,27 +335,27 @@ display_changed_cb (GtkTreeSelection *selection,
*/
static void
create_frame (ChangeDisplayInfo *info,
const char *title,
GtkWidget **frame,
GtkWidget **tree_view,
GtkWidget **button_vbox)
const char *title,
GtkWidget **frame,
GtkWidget **tree_view,
GtkWidget **button_vbox)
{
GtkTreeSelection *selection;
GtkWidget *scrollwin;
GtkWidget *hbox;
*frame = gtk_frame_new (title);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
g_object_set (hbox, "margin", 8, NULL);
hbox = gtk_hbox_new (FALSE, 8);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
gtk_container_add (GTK_CONTAINER (*frame), hbox);
scrollwin = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin),
GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), scrollwin);
GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
*tree_view = gtk_tree_view_new ();
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (*tree_view), FALSE);
@@ -324,12 +364,12 @@ create_frame (ChangeDisplayInfo *info,
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (*tree_view));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
*button_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_box_pack_start (GTK_BOX (hbox), *button_vbox);
*button_vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (hbox), *button_vbox, FALSE, FALSE, 0);
if (!info->size_group)
info->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
gtk_size_group_add_widget (GTK_SIZE_GROUP (info->size_group), *button_vbox);
}
@@ -343,8 +383,7 @@ left_align_button_new (const char *label)
GtkWidget *button = gtk_button_new_with_mnemonic (label);
GtkWidget *child = gtk_bin_get_child (GTK_BIN (button));
gtk_widget_set_halign (child, GTK_ALIGN_START);
gtk_widget_set_valign (child, GTK_ALIGN_CENTER);
gtk_misc_set_alignment (GTK_MISC (child), 0., 0.5);
return button;
}
@@ -365,27 +404,58 @@ create_display_frame (ChangeDisplayInfo *info)
button = left_align_button_new ("_Open...");
g_signal_connect (button, "clicked", G_CALLBACK (open_display_cb), info);
gtk_box_pack_start (GTK_BOX (button_vbox), button);
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE, 0);
button = left_align_button_new ("_Close");
g_signal_connect (button, "clicked", G_CALLBACK (close_display_cb), info);
gtk_box_pack_start (GTK_BOX (button_vbox), button);
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE, 0);
info->display_model = (GtkTreeModel *)gtk_list_store_new (DISPLAY_NUM_COLUMNS,
G_TYPE_STRING,
GDK_TYPE_DISPLAY);
G_TYPE_STRING,
GDK_TYPE_DISPLAY);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->display_model);
column = gtk_tree_view_column_new_with_attributes ("Name",
gtk_cell_renderer_text_new (),
"text", DISPLAY_COLUMN_NAME,
NULL);
gtk_cell_renderer_text_new (),
"text", DISPLAY_COLUMN_NAME,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
g_signal_connect (selection, "changed",
G_CALLBACK (display_changed_cb), info);
G_CALLBACK (display_changed_cb), info);
return frame;
}
/* Creates the "Screen" frame in the main window.
*/
GtkWidget *
create_screen_frame (ChangeDisplayInfo *info)
{
GtkWidget *frame;
GtkWidget *tree_view;
GtkWidget *button_vbox;
GtkTreeViewColumn *column;
create_frame (info, "Screen", &frame, &tree_view, &button_vbox);
info->screen_model = (GtkTreeModel *)gtk_list_store_new (SCREEN_NUM_COLUMNS,
G_TYPE_INT,
GDK_TYPE_SCREEN);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->screen_model);
column = gtk_tree_view_column_new_with_attributes ("Number",
gtk_cell_renderer_text_new (),
"text", SCREEN_COLUMN_NUMBER,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
info->screen_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
g_signal_connect (info->screen_selection, "changed",
G_CALLBACK (screen_changed_cb), info);
return frame;
}
@@ -395,8 +465,8 @@ create_display_frame (ChangeDisplayInfo *info)
*/
static void
display_closed_cb (GdkDisplay *display,
gboolean is_error,
ChangeDisplayInfo *info)
gboolean is_error,
ChangeDisplayInfo *info)
{
GtkTreeIter iter;
gboolean valid;
@@ -406,15 +476,15 @@ display_closed_cb (GdkDisplay *display,
valid = gtk_tree_model_iter_next (info->display_model, &iter))
{
GdkDisplay *tmp_display;
gtk_tree_model_get (info->display_model, &iter,
DISPLAY_COLUMN_DISPLAY, &tmp_display,
-1);
DISPLAY_COLUMN_DISPLAY, &tmp_display,
-1);
if (tmp_display == display)
{
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
break;
}
{
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
break;
}
}
}
@@ -424,27 +494,27 @@ display_closed_cb (GdkDisplay *display,
*/
static void
add_display (ChangeDisplayInfo *info,
GdkDisplay *display)
GdkDisplay *display)
{
const gchar *name = gdk_display_get_name (display);
GtkTreeIter iter;
gtk_list_store_append (GTK_LIST_STORE (info->display_model), &iter);
gtk_list_store_set (GTK_LIST_STORE (info->display_model), &iter,
DISPLAY_COLUMN_NAME, name,
DISPLAY_COLUMN_DISPLAY, display,
-1);
DISPLAY_COLUMN_NAME, name,
DISPLAY_COLUMN_DISPLAY, display,
-1);
g_signal_connect (display, "closed",
G_CALLBACK (display_closed_cb), info);
G_CALLBACK (display_closed_cb), info);
}
/* Called when a new display is opened
*/
static void
display_opened_cb (GdkDisplayManager *manager,
GdkDisplay *display,
ChangeDisplayInfo *info)
GdkDisplay *display,
ChangeDisplayInfo *info)
{
add_display (info, display);
}
@@ -465,8 +535,8 @@ initialize_displays (ChangeDisplayInfo *info)
g_slist_free (tmp_list);
g_signal_connect (manager, "display-opened",
G_CALLBACK (display_opened_cb), info);
g_signal_connect (manager, "display_opened",
G_CALLBACK (display_opened_cb), info);
}
/* Cleans up when the toplevel is destroyed; we remove the
@@ -481,28 +551,23 @@ destroy_info (ChangeDisplayInfo *info)
GSList *tmp_list;
g_signal_handlers_disconnect_by_func (manager,
display_opened_cb,
info);
display_opened_cb,
info);
for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next)
g_signal_handlers_disconnect_by_func (tmp_list->data,
display_closed_cb,
info);
display_closed_cb,
info);
g_slist_free (tmp_list);
g_object_unref (info->size_group);
g_object_unref (info->display_model);
if (info->current_display)
g_object_unref (info->current_display);
g_free (info);
}
static void
destroy_cb (GObject *object,
ChangeDisplayInfo **info)
destroy_cb (GtkObject *object,
ChangeDisplayInfo **info)
{
destroy_info (*info);
*info = NULL;
@@ -518,38 +583,40 @@ do_changedisplay (GtkWidget *do_widget)
if (!info)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *frame;
info = g_new0 (ChangeDisplayInfo, 1);
info->window = gtk_dialog_new_with_buttons ("Change Display",
GTK_WINDOW (do_widget),
0,
"Close", GTK_RESPONSE_CLOSE,
"Change", GTK_RESPONSE_OK,
NULL);
info->window = gtk_dialog_new_with_buttons ("Change Screen or display",
GTK_WINDOW (do_widget),
GTK_DIALOG_NO_SEPARATOR,
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
"Change", GTK_RESPONSE_OK,
NULL);
gtk_window_set_default_size (GTK_WINDOW (info->window), 300, 400);
g_signal_connect (info->window, "response",
G_CALLBACK (response_cb), info);
G_CALLBACK (response_cb), info);
g_signal_connect (info->window, "destroy",
G_CALLBACK (destroy_cb), &info);
G_CALLBACK (destroy_cb), &info);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (info->window));
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
g_object_set (vbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (content_area), vbox);
vbox = gtk_vbox_new (FALSE, 5);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (info->window)->vbox), vbox,
TRUE, TRUE, 0);
frame = create_display_frame (info);
gtk_box_pack_start (GTK_BOX (vbox), frame);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
frame = create_screen_frame (info);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
initialize_displays (info);
gtk_widget_show (info->window);
gtk_widget_show_all (info->window);
return info->window;
}
else

View File

@@ -1,15 +1,9 @@
/* Clipboard
*
* GdkClipboard is used for clipboard handling. This demo shows how to
* GtkClipboard is used for clipboard handling. This demo shows how to
* copy and paste text to and from the clipboard.
*
* It also shows how to transfer images via the clipboard or via
* drag-and-drop, and how to make clipboard contents persist after
* the application exits. Clipboard persistence requires a clipboard
* manager to run.
*/
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include <string.h>
@@ -17,220 +11,52 @@ static GtkWidget *window = NULL;
void
copy_button_clicked (GtkWidget *button,
gpointer user_data)
gpointer user_data)
{
GtkWidget *entry;
GdkClipboard *clipboard;
GtkClipboard *clipboard;
entry = GTK_WIDGET (user_data);
/* Get the clipboard object */
clipboard = gtk_widget_get_clipboard (entry);
clipboard = gtk_widget_get_clipboard (entry,
GDK_SELECTION_CLIPBOARD);
/* Set clipboard text */
gdk_clipboard_set_text (clipboard, gtk_entry_get_text (GTK_ENTRY (entry)));
gtk_clipboard_set_text (clipboard, gtk_entry_get_text (GTK_ENTRY (entry)), -1);
}
void
paste_received (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
paste_received (GtkClipboard *clipboard,
const gchar *text,
gpointer user_data)
{
GdkClipboard *clipboard;
GtkWidget *entry;
char *text;
GError *error = NULL;
clipboard = GDK_CLIPBOARD (source_object);
entry = GTK_WIDGET (user_data);
/* Get the resulting text of the read operation */
text = gdk_clipboard_read_text_finish (clipboard, result, &error);
if (text)
{
/* Set the entry text */
gtk_entry_set_text (GTK_ENTRY (entry), text);
g_free (text);
}
else
{
GtkWidget *dialog;
/* Show an error about why pasting failed.
* Usually you probably want to ignore such failures,
* but for demonstration purposes, we show the error.
*/
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Could not paste text: %s",
error->message);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
g_error_free (error);
}
/* Set the entry text */
gtk_entry_set_text (GTK_ENTRY (entry), text);
}
void
paste_button_clicked (GtkWidget *button,
gpointer user_data)
gpointer user_data)
{
GtkWidget *entry;
GdkClipboard *clipboard;
GtkClipboard *clipboard;
entry = GTK_WIDGET (user_data);
/* Get the clipboard object */
clipboard = gtk_widget_get_clipboard (entry);
clipboard = gtk_widget_get_clipboard (entry,
GDK_SELECTION_CLIPBOARD);
/* Request the contents of the clipboard, contents_received will be
called when we do get the contents.
*/
gdk_clipboard_read_text_async (clipboard, NULL, paste_received, entry);
}
static GdkPaintable *
get_image_paintable (GtkImage *image)
{
const gchar *icon_name;
GtkIconTheme *icon_theme;
GtkIconInfo *icon_info;
switch (gtk_image_get_storage_type (image))
{
case GTK_IMAGE_PAINTABLE:
return g_object_ref (gtk_image_get_paintable (image));
case GTK_IMAGE_ICON_NAME:
icon_name = gtk_image_get_icon_name (image);
icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (image)));
icon_info = gtk_icon_theme_lookup_icon (icon_theme, icon_name, 48, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
if (icon_info == NULL)
return NULL;
return GDK_PAINTABLE (gtk_icon_info_load_texture (icon_info));
default:
g_warning ("Image storage type %d not handled",
gtk_image_get_storage_type (image));
return NULL;
}
}
static void
drag_begin (GtkWidget *widget,
GdkDrag *drag,
gpointer data)
{
GdkPaintable *paintable;
paintable = get_image_paintable (GTK_IMAGE (widget));
if (paintable)
{
gtk_drag_set_icon_paintable (drag, paintable, -2, -2);
g_object_unref (paintable);
}
}
void
drag_data_get (GtkWidget *widget,
GdkDrag *drag,
GtkSelectionData *selection_data,
guint info,
gpointer data)
{
GdkPaintable *paintable;
paintable = get_image_paintable (GTK_IMAGE (widget));
if (GDK_IS_TEXTURE (paintable))
gtk_selection_data_set_texture (selection_data, GDK_TEXTURE (paintable));
}
static void
drag_data_received (GtkWidget *widget,
GdkDrop *drop,
GtkSelectionData *selection_data,
gpointer data)
{
if (gtk_selection_data_get_length (selection_data) > 0)
{
GdkTexture *texture;
texture = gtk_selection_data_get_texture (selection_data);
gtk_image_set_from_paintable (GTK_IMAGE (data), GDK_PAINTABLE (texture));
g_object_unref (texture);
}
}
static void
copy_image (GtkMenuItem *item,
gpointer data)
{
GdkClipboard *clipboard;
GdkPaintable *paintable;
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (data));
paintable = get_image_paintable (GTK_IMAGE (data));
if (GDK_IS_TEXTURE (paintable))
gdk_clipboard_set_texture (clipboard, GDK_TEXTURE (paintable));
if (paintable)
g_object_unref (paintable);
}
static void
paste_image_received (GObject *source,
GAsyncResult *result,
gpointer data)
{
GdkTexture *texture;
texture = gdk_clipboard_read_texture_finish (GDK_CLIPBOARD (source), result, NULL);
if (texture == NULL)
return;
gtk_image_set_from_paintable (GTK_IMAGE (data), GDK_PAINTABLE (texture));
g_object_unref (texture);
}
static void
paste_image (GtkMenuItem *item,
gpointer data)
{
GdkClipboard *clipboard;
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (data));
gdk_clipboard_read_texture_async (clipboard,
NULL,
paste_image_received,
data);
}
static void
pressed_cb (GtkGesture *gesture,
int n_press,
double x,
double y,
GtkWidget *image)
{
GtkWidget *menu;
GtkWidget *item;
menu = gtk_menu_new ();
item = gtk_menu_item_new_with_mnemonic (_("_Copy"));
g_signal_connect (item, "activate", G_CALLBACK (copy_image), image);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Paste"));
g_signal_connect (item, "activate", G_CALLBACK (paste_image), image);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
gtk_clipboard_request_text (clipboard,
paste_received, entry);
}
GtkWidget *
@@ -241,119 +67,57 @@ do_clipboard (GtkWidget *do_widget)
GtkWidget *vbox, *hbox;
GtkWidget *label;
GtkWidget *entry, *button;
GtkWidget *image;
GtkGesture *gesture;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Clipboard");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (vbox, "margin", 8, NULL);
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
gtk_container_add (GTK_CONTAINER (window), vbox);
label = gtk_label_new ("\"Copy\" will copy the text\nin the entry to the clipboard");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
/* Create the first entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), entry);
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
/* Create the button */
button = gtk_button_new_with_mnemonic (_("_Copy"));
gtk_box_pack_start (GTK_BOX (hbox), button);
button = gtk_button_new_from_stock (GTK_STOCK_COPY);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
g_signal_connect (button, "clicked",
G_CALLBACK (copy_button_clicked), entry);
G_CALLBACK (copy_button_clicked), entry);
label = gtk_label_new ("\"Paste\" will paste the text from the clipboard to the entry");
gtk_box_pack_start (GTK_BOX (vbox), label);
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
/* Create the second entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), entry);
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
/* Create the button */
button = gtk_button_new_with_mnemonic (_("_Paste"));
gtk_box_pack_start (GTK_BOX (hbox), button);
button = gtk_button_new_from_stock (GTK_STOCK_PASTE);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
g_signal_connect (button, "clicked",
G_CALLBACK (paste_button_clicked), entry);
label = gtk_label_new ("Images can be transferred via the clipboard, too");
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
/* Create the first image */
image = gtk_image_new_from_icon_name ("dialog-warning");
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make image a drag source */
gtk_drag_source_set (image, GDK_BUTTON1_MASK, NULL, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (image);
g_signal_connect (image, "drag-begin",
G_CALLBACK (drag_begin), image);
g_signal_connect (image, "drag-data-get",
G_CALLBACK (drag_data_get), image);
/* accept drops on image */
gtk_drag_dest_set (image, GTK_DEST_DEFAULT_ALL,
NULL, GDK_ACTION_COPY);
gtk_drag_dest_add_image_targets (image);
g_signal_connect (image, "drag-data-received",
G_CALLBACK (drag_data_received), image);
/* context menu on image */
gesture = gtk_gesture_multi_press_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
g_signal_connect (gesture, "pressed", G_CALLBACK (pressed_cb), image);
gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (gesture));
/* Create the second image */
image = gtk_image_new_from_icon_name ("process-stop");
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make image a drag source */
gtk_drag_source_set (image, GDK_BUTTON1_MASK, NULL, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (image);
g_signal_connect (image, "drag-begin",
G_CALLBACK (drag_begin), image);
g_signal_connect (image, "drag-data-get",
G_CALLBACK (drag_data_get), image);
/* accept drops on image */
gtk_drag_dest_set (image, GTK_DEST_DEFAULT_ALL,
NULL, GDK_ACTION_COPY);
gtk_drag_dest_add_image_targets (image);
g_signal_connect (image, "drag-data-received",
G_CALLBACK (drag_data_received), image);
/* context menu on image */
gesture = gtk_gesture_multi_press_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
g_signal_connect (gesture, "pressed", G_CALLBACK (pressed_cb), image);
gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (gesture));
G_CALLBACK (paste_button_clicked), entry);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
if (!GTK_WIDGET_VISIBLE (window))
gtk_widget_show_all (window);
else
gtk_widget_destroy (window);
{
gtk_widget_destroy (window);
window = NULL;
}
return window;
}

Some files were not shown because too many files have changed in this diff Show More