Commit Graph

14 Commits

Author SHA1 Message Date
Owen Taylor
788bbf520a Add a draw-border style property to allow themes to draw outside the
2005-04-28  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkwidget.c: Add a draw-border style property to allow
	themes to draw outside the widget's allocation.

	* gdk/gdkwindow.c gtk/gtkstyle.c: Remove some save/restore pairs
	that were working around the clip-leakage bug in Cairo.

	* gtk/gtkstyle.c: Use cairo_fill_preserve() rathe than
	save/fill/restore.

	* gdk/gdkgc.c gdk/gdkinternals.h: Add _gdk_gc_update_context()
	That updates a Cairo context to match a GC.

	* gdk/gdkdraw.c: Use _gdk_gc_update_context() to add support
	for tiles/stipples/clipping to gdk_draw_glyphs(),
	gdk_draw_trapezoids().

	* gdk/gdkpango.c: Use _gdk_gc_update_context() instead of internal
	implementation of stipples. Use one cairo_t across the entire
	drawing operation. Replace cairo_matrix_create() with
	stack-allocated matrices.

	* gdk/gdkgc.c gdk/gdkinternals.h gdk/x11/gdkgc-x11.c
	gdk/win32/gdkgc-win32.c: Save various aspects of the
	GC state (fill, tile, stipple, foreground, background, clip region)
	in instance-private-data for future use. Add getters.
	Get rid of _gdk_windowing_gc_get_foreground() function implemented
	by the backends.

	* gdk/gdkgc.c gdk/gdkinternals.h gdk/x11/gdkgc-x11.c
	gdk/win32/gdkgc-win32.c gdk/linux-fb/gdkgc-fb.c: Add
	_gdk_gc_init() to do initial setup of the GC from values;
	fixes some problems from drawable redirection.

	* gdk/gdkgc.c gdk/gdkinternals.h gdk/x11/gdkgc-x11.c
	gdk/win32/gdkgc-win32.c gdk/linux-fb/gdkgc-fb.c: Move
	gdk_gc_copy() and gdk_gc_set_clip_{region,rectangle}() into
	the generic code, add _gdk_windowing_gc_copy(),
	_gdk_windowing_gc_set_clip_region() to do backend specific
	stuff.

	* gdk/x11/{gdkprivate-x11.h,gdkgc-x11.c.c,gdkdrawable-x11.c}
	gdk/win32/{gdkprivate-win32.h,gdkgc-x11.c.c,gdkdrawable-x11.c}
	gdk/linux-fb/{gdkprivate-fb.h,gdkgc-fb.c.c,gdkdrawable-fb.c}:
	Don't duplicate state that now is stored by the generic code.

	* gdk/gdk.symbols Update
2005-05-02 23:29:24 +00:00
Matthias Clasen
324872e3b4 Some more fixes necessary to make building with gcc 4 work.
* 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-10 01:01:18 +00:00
Tor Lillqvist
0b2ac32cf5 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.

	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-04 00:12:26 +00:00
Owen Taylor
09d7eafb15 Switch set_cairo_target() virtual function to ref_cairo_surface()
2005-03-15  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdkdrawable.h gdk/gdkdraw.c gdk/gdkpixmap.c gdk/gdkwindow.c
	gdk/x11/gdkdrawable-x11.c gdk/x11/gdkpixmap-x11.c gdk/x11/gdkwindow-x11.c
	gdk/gdkinternals.h: Switch set_cairo_target() virtual function to
	ref_cairo_surface()

	* gdk/gdkdrawable.h gdk/gdkdraw.h: Switch set_cairo_target() virtual
	function to create_cairo_context()

	* gdk/gdkwindow.c: Clear double buffer pixmaps with Cairo.

	* gdk/x11/gdkwindow-x11.c: Keep all components in GdkWindowObject.bg_color,
	not just the pixel.

	* tests/testcairo.c: Update for create_cairo_context()

	* gdk/gdkdraw.c (gdk_draw_trapezoids, gdk_draw_glyphs[_transformed]):
	Reimplement in terms of Cairo, bypass the vtable entries.

	* gdk/x11/gdkdrawable-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
	gdk/x11/gdkgc-x11.c gdk/x11/gdkpango-x11.c
	gdk/x11/gdkprivate-x11.h gdk/x11/Makefile.am: Remove
	implementation of draw_trapezoids / draw_glyphs[_transformed].

	* gdk/gdkpango.c: Switch GdkPangoRenderer to use Cairo

	* gdk/gdkpango.c gdk/x11/gdkpango-x11.c: Move
	gdk_pango_context_get_for_screen() into the backend independent code.

	* gdk/x11/gdkdrawable-x11.[ch]: Remove Xft use, use RENDER directly
	for drawing images.

	* gdk/gdkdrawable.h gdk/x11/gdkdrawable-x11.c: Remove
	gdk_draw_rectangle_alpha_libgtk_only.

	* gdk/gdkpixbuf.h gdk/gdkpixbuf-render.c: Add
	gdk_pixbuf_set_as_cairo_source()

	* gdk/gdk.symbols: Update

	* gtk/gtkcolorsel.c gtk/gtkhsv.c gtk/gtkiconview.c gtk/gtkruler.[ch]
	gtk/gtk[hv]ruler.c: Convert to Cairo rendering.

	* gtk/gtkstyle.c (gtk_default_draw_check, gtk_default_draw_focus,
	gtk_default_draw_option): Switch to Cairo. Simplify the checkbutton,
	radio button style for now to get something more scalable.

	*  gtk/gtksettings.c: #if 0 out the code to use PangoXft for hinting/
	antialiasing/dpi settings.
2005-03-17 01:54:40 +00:00
Matthias Clasen
2a2d769d42 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:17:27 +00:00
Matthias Clasen
56e0ee04fc Add a function to obtain the last user interaction time. (#163119, Elijah
2005-01-19  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdk.symbols:
	* gdk/x11/gdkx.h:
	* gdk/x11/gdkdisplay-x11.c (gdk_x11_display_get_user_time):
	Add a function to obtain the last user interaction
	time.  (#163119, Elijah Newren)
2005-01-19 14:37:56 +00:00
Matthias Clasen
3f8461b769 Add pointer warping to GDK. (#160437)
2005-01-18  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkdisplay.h:
	* gdk/x11/gdkwindow-x11.c (gdk_display_warp_pointer):
	* gdk/win32/gdkwindow-win32.c (gdk_display_warp_pointer): Add
	pointer warping to GDK.  (#160437)

	* gtk/gtkcolorsel.c (key_press): Use gdk_display_warp_pointer.
2005-01-18 20:59:31 +00:00
Matthias Clasen
fdec871410 Mark as const.
2004-11-28  Matthias Clasen  <mclasen@redhat.com>

	* gdk/gdkvisual.h (gdk_visual_get_type):
	* gdk/gdkscreen.h (gdk_screen_get_type):
	* gdk/gdkinput.h (gdk_device_get_type):
	* gdk/gdk.h (gdk_rectangle_get_type):
	* gdk/gdkfont.h (gdk_font_get_type):
	* gdk/gdkevents.h (gdk_event_get_type):
	* gdk/gdkdrawable.h (gdk_drawable_get_type):
	* gdk/gdkdisplay.h (gdk_display_get_type):
	* gdk/gdkcursor.h (gdk_cursor_get_type):
	* gdk/gdkcolor.h (gdk_color_get_type): Mark as const.

	* gdk/gdk.symbols:
	* gdk/Makefile.am (stamp-gdkenumtypes.h): Mark get_type() functions
	generated by glib-mkenums as const.
2004-11-28 06:45:52 +00:00
Matthias Clasen
b69987f217 Mark as const.
2004-11-23  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkuimanager.h (gtk_ui_manager_get_type):
	* gtk/gtktreeview.h (gtk_tree_view_get_type):
	* gtk/gtktreeviewcolumn.h (gtk_tree_view_column_get_type):
	* gtk/gtktreestore.h (gtk_tree_store_get_type):
	* gtk/gtktreeselection.h (gtk_tree_selection_get_type):
	* gtk/gtktreemodelfilter.h (gtk_tree_model_filter_get_type):
	* gtk/gtktreemodel.h (gtk_tree_iter_get_type):
	(gtk_tree_path_get_type):
	(gtk_tree_row_reference_get_type):
	* gtk/gtktoolitem.h (gtk_tool_item_get_type):
	* gtk/gtktoolbutton.h (gtk_tool_button_get_type):
	* gtk/gtktoggleaction.h (gtk_toggle_action_get_type):
	* gtk/gtkthemes.h (gtk_theme_engine_get_type):
	* gtk/gtktextiter.h (gtk_text_iter_get_type):
	* gtk/gtksettings.h (gtk_settings_get_type):
	* gtk/gtkselection.h (gtk_selection_data_get_type):
	* gtk/gtkradioaction.h (gtk_radio_action_get_type):
	* gtk/gtkmenutoolbutton.h (gtk_menu_tool_button_get_type):
	* gtk/gtkliststore.h (gtk_list_store_get_type):
	* gtk/gtkiconview.h (gtk_icon_view_get_type):
	* gtk/gtkicontheme.h (gtk_icon_info_get_type):
	* gtk/gtkiconfactory.h (gtk_icon_factory_get_type):
	(gtk_icon_set_get_type):
	(gtk_icon_source_get_type):
	* gtk/gtkfilesystemwin32.h (gtk_file_system_win32_get_type):
	* gtk/gtkfilesystemunix.h (gtk_file_system_unix_get_type):
	* gtk/gtkfilesystem.h (gtk_file_folder_get_type):
	(gtk_file_info_get_type, gtk_file_path_get_type):
	(gtk_file_system_get_type):
	* gtk/gtkfilefilter.h (gtk_file_filter_get_type):
	* gtk/gtkfilechooserwidget.h (gtk_file_chooser_widget_get_type):
	* gtk/gtkfilechooser.h (gtk_file_chooser_get_type):
	* gtk/gtkfilechooserdialog.h (gtk_file_chooser_dialog_get_type):
	* gtk/gtkexpander.h (gtk_expander_get_type):
	* gtk/gtkentrycompletion.h (gtk_entry_completion_get_type):
	* gtk/gtkcombobox.h (gtk_combo_box_get_type):
	* gtk/gtkcomboboxentry.h (gtk_combo_box_entry_get_type):
	* gtk/gtkclipboard.h (gtk_clipboard_get_type):
	* gtk/gtkcellview.h (gtk_cell_view_get_type):
	* gtk/gtkcellrenderertoggle.h (gtk_cell_renderer_toggle_get_type):
	* gtk/gtkcellrenderertext.h (gtk_cell_renderer_text_get_type):
	* gtk/gtkcellrendererprogress.h (gtk_cell_renderer_progress_get_type):
	* gtk/gtkcellrendererpixbuf.h (gtk_cell_renderer_pixbuf_get_type):
	* gtk/gtkcellrenderercombo.h (gtk_cell_renderer_combo_get_type):
	* gtk/gtkcelllayout.h (gtk_cell_layout_get_type):
	* gtk/gtkactiongroup.h (gtk_action_group_get_type):
	* gtk/gtkaction.h (gtk_action_get_type):
	* gtk/gtkaccessible.h (gtk_accessible_get_type):
	* gtk/gtkaccelmap.h (gtk_accel_map_get_type):
	* gtk/gtkaccelgroup.h (gtk_accel_group_get_type):
	* gtk/gtkmessagedialog.h (gtk_message_dialog_get_type): Mark as const.

	* gtk/gtkicontheme.h:  Don't mark gtk_icon_theme_error_quark()
	as const, to be consistent with all the other error_quark
	functions. (technically they are const, but since these are
	called only in error paths, giving the compiler better
	optimization opportunities doesn't matter much)

	* gtk/gtk.symbols:
	* gdk/gdk.symbols: Add attribute annotations.

	* gtk/makegtkalias.pl:
	* gdk/makegdkalias.pl: Keep attribute annotations, but strip PRIVATE.

	* gtk/Makefile.am (gtk.def):
	* gdk/Makefile.am (gdk.def): Strip attribute annotations, but keep
	PRIVATE.
2004-11-23 20:02:15 +00:00
Owen Taylor
3d737ee8ba Add GdkPangoRenderer, a subclass of PangoRenderer targeting GDK drawables.
Sat Nov 20 15:13:51 2004  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdkpango.[ch]: Add GdkPangoRenderer, a subclass of
	PangoRenderer targeting GDK drawables. Use to implement the old
	gdk_draw_layout() and friends.

	* gdk/gdkdraw.c gdk/gdkdrawable.h gdk/gdkwindow.c gdk/gdkpixmap.c:
	Add gdk_draw_glyphs_transformed() gdk_draw_trapezoids() and
	the corresponding members of GdkDrawableClass. Add a fallback
	implementation of gdk_draw_trapezoids() in terms of pixbufs.

	* gdk/gdkwindowing.h gdk/x11/gdkg-x11.h: Add
	_gdk_windowing_gc_get_foreground() to enable the fallback
	trapezoid implementation.

	* gdk/x11/gdkdrawable-x11.c gdk/x11/gdkdisplay-x11.h: Implement
	draw_glyph_transformed,	draw_trapezoids.

	* gdk/x11/gdkdrawable-x11.[ch]: Add
	_gdk_x11_drawable_draw_xtrapezoids, _gdk_x11_drawable_draw_xft_glyphs
	for use of GdkX11Renderer.

	* gdk/x11/gdkgc-x11.c gdk/x11/gdkprivate-x11.h: Implement
	GDK_TILED, GDK_STIPPLED, GDK_OPAQUE_STIPPLED in the RENDER codepath.

	* gdk/gdkpango-x11.c: Add GdkX11Renderer... a subclass of
	PangoXftRenderer that does tiles/stipples and fallback rendering
	of trapezoids without the RENDER extension.

	* gdk/gdkpango-x11.c gdk/x11/gdkscreen-x11.[ch] _gdk_x11_renderer_get:
	Add _gdk_x11_renderer_get() to get a singleton GdkX11Renderer
	for the screen.

	* gdk/x11/gdkdrawable-x11.c (get_impl_drawable): Fix a None/NULL
	confusion.

	* gtk/gtklabel.[ch] gtk/gtk.symbols: Add gtk_label_set/get_angle(),
	and an ::angle property.

	* gtk/gtklabel.c: Remove #if 0'd dead code gtk_label_paint_word().

	* gtk/gtktextdisplay.c: Switch to using a GtkTextRenderer subclass
	of GdkPangoRenderer for drawing.

	* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c: Switch to using
	gtk_attr_shape_new_with_data() to store backreferences to
	embedded pixmaps and widgets. Leave line_display->shaped_objects
	around for backwords compatibility.

	* gdk/gdkpango.[ch] (gdk_pango_context_set_colormap): Describe
	as deprecated, remove implementation.

	* gtk/gtkwidget.c (gtk_widget_create_pango_context): Remove
	call to gdk_pango_context_set_colormap.

	* demos/gtk-demo/Makefile.am demos/gtk-demo/rotated_text.c: Add
	a demo showing drawing rotated text.

	* tests/testgtk.c: Add a rotated-label test, and also a rotated
	drawing test (differs from demos/gtk-demo/rotated_text by also
	using a tile)
2004-11-21 16:24:01 +00:00
Anders Carlsson
06c4bb44b1 New API to handle the clipboard manager.
2004-10-25  Anders Carlsson  <andersca@imendio.com>

	* gdk/gdk.symbols:
	* gdk/gdkdisplay.h:
	* gdk/x11/gdkdisplay-x11.c:
	(gdk_display_supports_clipboard_persistence),
	(gdk_display_store_clipboard):
	New API to handle the clipboard manager.

	* gtk/gtk.symbols:
	* gtk/gtkclipboard.c: (gtk_clipboard_class_init),
	(gtk_clipboard_finalize), (selection_clear_event_cb),
	(clipboard_unset), (gtk_clipboard_set_text),
	(gtk_clipboard_request_targets), (gtk_clipboard_wait_for_targets),
	(clipboard_peek), (gtk_clipboard_owner_change),
	(gtk_clipboard_wait_is_target_available),
	(gtk_clipboard_store_timeout), (gtk_clipboard_set_can_store),
	(gtk_clipboard_selection_notify), (gtk_clipboard_store),
	(_gtk_clipboard_store_all):
	* gtk/gtkclipboard.h:
	Add API for clipboard persistence and implement it, also add
	gtk_clipboard_wait_is_target_available.

	* gtk/gtkmain.c: (gtk_main):
	Call _gtk_clipboard_store_all before exiting.
2004-10-25 18:53:30 +00:00
Anders Carlsson
6661399c3e Add new functions
2004-09-05  Anders Carlsson  <andersca@gnome.org>

	* gdk/gdk.symbols:
	* gtk/gtk.symbols:
	Add new functions

2004-09-05  Anders Carlsson  <andersca@gnome.org>

	* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
	(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
	(gdk_parse_args):
	* gdk/gdk.h:
	* gdk/gdkinternals.h:
	* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
	* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
	* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
	* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
	* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
	(gtk_arg_module_cb), (gtk_arg_warnings_cb),
	(do_pre_parse_initialization), (do_post_parse_initialization),
	(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
	(gtk_init_with_args), (gtk_parse_args):
	* gtk/gtkmain.h:
	Make gtk argument parsing use goption. Add gtk_get_option_group and
	gtk_init_with_args.

	* tests/testtreemodel.c: (main):
	Use gtk_init_with_args.
2004-09-05 15:14:21 +00:00
Matthias Clasen
54fb7a7b0d No need for INCLUDE_INTERNAL_SYMBOLS anymore.
2004-08-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/abicheck.sh: No need for INCLUDE_INTERNAL_SYMBOLS anymore.

	* gdk/gdk.symbols: Don't use #if defined().

	* gdk/Makefile.am (gdkalias.h):
	* gtk/Makefile.am (gtkalias.h): Don't use cpp to filter gtk.symbols.

	* gdk/makegdkalias.pl:
	* gtk/makegtkalias.pl: Move the #ifdef processing into the perl script, and
	keep the #ifdefs which differentiate between platforms.

	* gtk/Makefile.am (gtk_private_h_sources): Remove gtkinternals.h, it is no
	longer needed.
2004-08-17 18:24:06 +00:00
Matthias Clasen
0742ff3ae3 Add hidden aliases for exported symbols which are used internally in order
Mon Aug  9 15:41:17 2004  Matthias Clasen  <maclas@gmx.de>

	Add hidden aliases for exported symbols which are
	used internally in order to get rid of many PLT
	entries.  (#145519, Arjan van de Ven)

	* gdk/Makefile.am: Add rules to generate gdk.def and
	gdkalias.h from gdk.symbols, and make make check check
	the abi with abicheck.sh.

	* gdk/gdk.symbols: New file. Definition of the GDK ABI.
	The file can be processed by cpp to filter out certain
	subsets of symbols.

	* gdk/abicheck.sh: New file. Script to check the actually
	symbols exported from libgdk-x11.2.0.so against the symbols
	found in gdk.symbols.

	* gdk/makegdkalias.pl: New file. Perl script to generate the
	header containing the alias definitions for internally used
	exported symbols from a list of symbols.

	* gdk/*.c, gdk/x11/*.c: Include gdkalias.h
2004-08-09 20:14:43 +00:00