Compare commits

..

8 Commits

Author SHA1 Message Date
Carlos Garnacho
d5dda9a2f0 Add gdk_event_[gs]et_source_device().
This function may be used to know the hardware device that triggered
an event, it could resort to the master device in the few cases there's
not a direct hardware device to relate to the event (i.e.: crossing events
due to grabs)
2010-07-02 13:43:47 +02:00
Carlos Garnacho
ab8242c522 Add test applications for multidevice events. 2010-07-02 13:43:46 +02:00
Carlos Garnacho
80bf8c3999 Add GtkDeviceGroup and ::multidevice-event
The former allows to create several per-widget device groups, so the latter
is emitted on these containing motion events for all devices in the reported
group.
2010-07-02 13:43:46 +02:00
Carlos Garnacho
4212943079 Turn on multidevice support by default.
gdk_enable_multidevice() has been replaced with gdk_disable_multidevice(), although
there would be usually little reasons to call that function, unless the application
is doing X calls itself that count on old fashioned core devices.
2010-07-02 13:43:46 +02:00
Carlos Garnacho
0ac8f1686f GdkWindow: Make gdk_window_set_support_multidevice() enable touchpoints. 2010-07-02 13:43:46 +02:00
Carlos Garnacho
a771703f0f Add gdk_window_[gs]et_source_events()
This function will enable events for all devices of a given GdkInputSource,
both current and future devices.
2010-07-02 13:43:46 +02:00
Carlos Garnacho
e3a3ba57f0 Make GdkDeviceManagerXI2 recognize touchscreen devices. 2010-07-02 13:43:45 +02:00
Carlos Garnacho
712672f1d1 Add GDK_SOURCE_TOUCH.
This kind of device would represent either a single-touch touchscreen, or
individual touchpoints in a multitouch touchscreen.
2010-07-02 13:43:45 +02:00
573 changed files with 36604 additions and 33388 deletions

52
NEWS
View File

@@ -1,55 +1,3 @@
Overview of Changes from GTK+ 2.90.4 to 2.90.5
==============================================
* Support NOCONFIGURE in autogen.sh to avoid running configure
* The cairo dependency has been bumped to 1.9.10
* Drop aliasing hacks instead use -Bsymbolic-funtions.
* Bugs:
589904 Certain drawing in some widgets does not pass on...
610346 Confusion between GtkWindow:allow-grow and GtkWindow:resizable
613284 Replace GdkRegion with cairo_region_t
617386 Migrate API docs from templates to source files (GtkButton)
617389 Migrate API docs from templates to source files (GtkCalendar)
617392 Migrate API docs from templates to source files (GtkCellEditable)
621414 Can't select file on file browser popup after choosing to sort...
622677 Remove GdkWindowObject public structure
623239 also show num-lock warning
623307 Annotate gdk_display_manager_list_displays return value
623389 [iconview] Fix segfault when using rubberband selection
623476 [windows] gdk fails to compile
623520 gtk+ 3 fails to build from outside git source tree
623845 Use -Bsymbolic
461618 use GSlice for gtkrequisition
* Deprecations and cleanups:
- GdkRegion has been removed, and region-using code has been ported
to cairo_region_t and cairo_rectangle_int_t.
- The deprecated GdkFont has been removed, together with vestigial
uses in GTK+, including the GdkFontSel::font property and a GdkFont
member in GtkStyle.
- The GdkWindowObject structure has been removed from public headers.
- The GdkWindow::allow-grow and ::allow-shrink properties have been removed.
* Quartz:
- Misc fixed to clipping and color handling
- Update the DND code for GdkDevice changes
* Translation updates:
Breton
Czech
Estonian
Galician
Hebrew
Kazakh
Norwegian bokmål
Slovenian
Simplified Chinese
Spanish
Overview of Changes from GTK+ 2.90.3 to 2.90.4
==============================================

View File

@@ -12,7 +12,7 @@ AC_PREREQ([2.62])
m4_define([gtk_major_version], [2])
m4_define([gtk_minor_version], [90])
m4_define([gtk_micro_version], [6])
m4_define([gtk_micro_version], [5])
m4_define([gtk_interface_age], [0])
m4_define([gtk_binary_age],
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
@@ -31,7 +31,7 @@ m4_define([gtk_api_version], [3.0])
m4_define([gtk_binary_version], [3.0.0])
# required versions of other packages
m4_define([glib_required_version], [2.25.12])
m4_define([glib_required_version], [2.25.9])
m4_define([pango_required_version], [1.20])
m4_define([atk_required_version], [1.29.2])
m4_define([cairo_required_version], [1.9.10])
@@ -1556,7 +1556,7 @@ fi
# GObject introspection
##################################################
GOBJECT_INTROSPECTION_CHECK([0.9.0])
GOBJECT_INTROSPECTION_CHECK([0.6.14])
##################################################
# Checks for gtk-doc and docbook-tools
@@ -1671,30 +1671,10 @@ if test x$gdk_working_wctype = xno; then
gdk_wc="\$gdk_wc
#define GDK_HAVE_BROKEN_WCTYPE 1"
fi
])
dnl
dnl Check for -Bsymbolic-functions linker flag used to avoid
dnl intra-library PLT jumps, if available.
dnl
AC_ARG_ENABLE(Bsymbolic,
[AC_HELP_STRING([--disable-Bsymbolic],
[avoid linking with -Bsymbolic])],,
[SAVED_LDFLAGS="${LDFLAGS}"
AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
LDFLAGS=-Wl,-Bsymbolic-functions
AC_TRY_LINK([], [int main (void) { return 0; }],
AC_MSG_RESULT(yes)
enable_Bsymbolic=yes,
AC_MSG_RESULT(no)
enable_Bsymbolic=no)
LDFLAGS="${SAVED_LDFLAGS}"])
if test "x${enable_Bsymbolic}" == "xyes"; then
GTK_LINK_FLAGS=-Wl,-Bsymbolic-functions
fi
AC_SUBST(GTK_LINK_FLAGS)
AC_CONFIG_FILES([
config.h.win32
gtk-zip.sh
@@ -1713,6 +1693,7 @@ demos/Makefile
demos/gtk-demo/Makefile
demos/gtk-demo/geninclude.pl
tests/Makefile
tests/multidevice/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gdk/Makefile

View File

@@ -229,7 +229,6 @@ static void
open_display_cb (GtkWidget *button,
ChangeDisplayInfo *info)
{
GtkWidget *content_area;
GtkWidget *dialog;
GtkWidget *display_entry;
GtkWidget *dialog_label;
@@ -249,13 +248,11 @@ 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_get_child (GTK_BIN (dialog)));
gtk_widget_show_all (GTK_BIN (dialog)->child);
while (!result)
{
@@ -602,7 +599,6 @@ do_changedisplay (GtkWidget *do_widget)
if (!info)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *frame;
@@ -622,11 +618,11 @@ do_changedisplay (GtkWidget *do_widget)
g_signal_connect (info->window, "destroy",
G_CALLBACK (destroy_cb), &info);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (info->window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
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, TRUE, TRUE, 0);

View File

@@ -41,15 +41,13 @@ change_color_callback (GtkWidget *button,
{
GtkWidget *dialog;
GtkColorSelection *colorsel;
GtkColorSelectionDialog *selection_dialog;
gint response;
dialog = gtk_color_selection_dialog_new ("Changing color");
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
selection_dialog = GTK_COLOR_SELECTION_DIALOG (dialog);
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel);
gtk_color_selection_set_previous_color (colorsel, &color);
gtk_color_selection_set_current_color (colorsel, &color);

View File

@@ -435,7 +435,7 @@ do_combobox (GtkWidget *do_widget)
entry = g_object_new (TYPE_MASK_ENTRY, NULL);
MASK_ENTRY (entry)->mask = "^([0-9]*|One|Two|2\302\275|Three)$";
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
gtk_container_remove (GTK_CONTAINER (combo), GTK_BIN (combo)->child);
gtk_container_add (GTK_CONTAINER (combo), entry);
}

View File

@@ -33,7 +33,6 @@ static void
interactive_dialog_clicked (GtkButton *button,
gpointer user_data)
{
GtkWidget *content_area;
GtkWidget *dialog;
GtkWidget *hbox;
GtkWidget *stock;
@@ -52,11 +51,9 @@ interactive_dialog_clicked (GtkButton *button,
GTK_RESPONSE_CANCEL,
NULL);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
hbox = gtk_hbox_new (FALSE, 8);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
gtk_box_pack_start (GTK_BOX (content_area), hbox, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0);
stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);

View File

@@ -11,7 +11,6 @@ static GtkWidget *window = NULL;
GtkWidget *
do_entry_buffer (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *entry;
@@ -32,10 +31,8 @@ do_entry_buffer (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
label = gtk_label_new (NULL);

View File

@@ -37,7 +37,6 @@ create_completion_model (void)
GtkWidget *
do_entry_completion (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *entry;
@@ -59,10 +58,8 @@ do_entry_completion (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
label = gtk_label_new (NULL);

View File

@@ -13,7 +13,6 @@ static GtkWidget *window = NULL;
GtkWidget *
do_expander (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *expander;
@@ -33,10 +32,8 @@ do_expander (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
label = gtk_label_new ("Expander demo. Click on the triangle for details.");

View File

@@ -226,12 +226,12 @@ gtk_rotated_bin_realize (GtkWidget *widget)
GtkRotatedBin *bin = GTK_ROTATED_BIN (widget);
GdkWindowAttr attributes;
gint attributes_mask;
guint border_width;
gint border_width;
GtkRequisition child_requisition;
gtk_widget_set_realized (widget, TRUE);
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
border_width = GTK_CONTAINER (widget)->border_width;
attributes.x = widget->allocation.x + border_width;
attributes.y = widget->allocation.y + border_width;
@@ -378,7 +378,6 @@ gtk_rotated_bin_size_request (GtkWidget *widget,
GtkRequisition child_requisition;
double s, c;
double w, h;
guint border_width;
child_requisition.width = 0;
child_requisition.height = 0;
@@ -391,9 +390,8 @@ gtk_rotated_bin_size_request (GtkWidget *widget,
w = c * child_requisition.width + s * child_requisition.height;
h = s * child_requisition.width + c * child_requisition.height;
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
requisition->width = border_width * 2 + w;
requisition->height = border_width * 2 + h;
requisition->width = GTK_CONTAINER (widget)->border_width * 2 + w;
requisition->height = GTK_CONTAINER (widget)->border_width * 2 + h;
}
static void
@@ -401,13 +399,13 @@ gtk_rotated_bin_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkRotatedBin *bin = GTK_ROTATED_BIN (widget);
guint border_width;
gint border_width;
gint w, h;
gdouble s, c;
widget->allocation = *allocation;
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
border_width = GTK_CONTAINER (widget)->border_width;
w = allocation->width - border_width * 2;
h = allocation->height - border_width * 2;

View File

@@ -164,12 +164,12 @@ gtk_mirror_bin_realize (GtkWidget *widget)
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
GdkWindowAttr attributes;
gint attributes_mask;
guint border_width;
gint border_width;
GtkRequisition child_requisition;
gtk_widget_set_realized (widget, TRUE);
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
border_width = GTK_CONTAINER (widget)->border_width;
attributes.x = widget->allocation.x + border_width;
attributes.y = widget->allocation.y + border_width;
@@ -302,7 +302,6 @@ gtk_mirror_bin_size_request (GtkWidget *widget,
{
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
GtkRequisition child_requisition;
guint border_width;
child_requisition.width = 0;
child_requisition.height = 0;
@@ -310,9 +309,8 @@ gtk_mirror_bin_size_request (GtkWidget *widget,
if (bin->child && gtk_widget_get_visible (bin->child))
gtk_widget_size_request (bin->child, &child_requisition);
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
requisition->width = border_width * 2 + child_requisition.width + 10;
requisition->height = border_width * 2 + child_requisition.height * 2 + 10;
requisition->width = GTK_CONTAINER (widget)->border_width * 2 + child_requisition.width + 10;
requisition->height = GTK_CONTAINER (widget)->border_width * 2 + child_requisition.height * 2 + 10;
}
static void
@@ -320,12 +318,11 @@ gtk_mirror_bin_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
gint border_width;
gint w, h;
guint border_width;
widget->allocation = *allocation;
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
border_width = GTK_CONTAINER (widget)->border_width;
w = allocation->width - border_width * 2;
h = allocation->height - border_width * 2;

View File

@@ -18,13 +18,11 @@ toggle_resize (GtkWidget *widget,
GtkWidget *child)
{
GtkPaned *paned = GTK_PANED (child->parent);
gboolean is_child1 = (child == gtk_paned_get_child1 (paned));
gboolean is_child1 = (child == paned->child1);
gboolean resize, shrink;
gtk_container_child_get (GTK_CONTAINER (paned), child,
"resize", &resize,
"shrink", &shrink,
NULL);
resize = is_child1 ? paned->child1_resize : paned->child2_resize;
shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
g_object_ref (child);
gtk_container_remove (GTK_CONTAINER (child->parent), child);
@@ -40,13 +38,11 @@ toggle_shrink (GtkWidget *widget,
GtkWidget *child)
{
GtkPaned *paned = GTK_PANED (child->parent);
gboolean is_child1 = (child == gtk_paned_get_child1 (paned));
gboolean is_child1 = (child == paned->child1);
gboolean resize, shrink;
gtk_container_child_get (GTK_CONTAINER (paned), child,
"resize", &resize,
"shrink", &shrink,
NULL);
resize = is_child1 ? paned->child1_resize : paned->child2_resize;
shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
g_object_ref (child);
gtk_container_remove (GTK_CONTAINER (child->parent), child);
@@ -63,15 +59,11 @@ create_pane_options (GtkPaned *paned,
const gchar *label1,
const gchar *label2)
{
GtkWidget *child1, *child2;
GtkWidget *frame;
GtkWidget *table;
GtkWidget *label;
GtkWidget *check_button;
child1 = gtk_paned_get_child1 (paned);
child2 = gtk_paned_get_child2 (paned);
frame = gtk_frame_new (frame_label);
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
@@ -86,16 +78,16 @@ create_pane_options (GtkPaned *paned,
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 1, 2);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_resize), child1);
G_CALLBACK (toggle_resize), paned->child1);
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
0, 1, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_shrink), child1);
G_CALLBACK (toggle_shrink), paned->child1);
label = gtk_label_new (label2);
gtk_table_attach_defaults (GTK_TABLE (table), label,
1, 2, 0, 1);
@@ -106,15 +98,15 @@ create_pane_options (GtkPaned *paned,
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_resize), child2);
G_CALLBACK (toggle_resize), paned->child2);
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
1, 2, 2, 3);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_shrink), child2);
G_CALLBACK (toggle_shrink), paned->child2);
return frame;
}

View File

@@ -241,7 +241,6 @@ entry_populate_popup (GtkEntry *entry,
GtkWidget *
do_search_entry (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *label;
@@ -264,10 +263,8 @@ do_search_entry (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (search_entry_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
label = gtk_label_new (NULL);

View File

@@ -82,7 +82,6 @@ toggle_grouping (GtkToggleButton *check_button,
GtkWidget *
do_sizegroup (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *table;
GtkWidget *frame;
GtkWidget *vbox;
@@ -116,10 +115,8 @@ do_sizegroup (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);

View File

@@ -27,7 +27,6 @@ on_stop_clicked (GtkButton *button, gpointer user_data)
GtkWidget *
do_spinner (GtkWidget *do_widget)
{
GtkWidget *content_area;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *button;
@@ -48,10 +47,8 @@ do_spinner (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
vbox = gtk_vbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
/* Sensitive */

View File

@@ -17,8 +17,6 @@ pdf:
(cd $(srcdir); db2pdf gtk-faq.sgml); \
fi
all-local: html
dist-hook: html
cp -Rp $(srcdir)/html $(distdir)
else

View File

@@ -21,6 +21,7 @@ CFILE_GLOB=$(top_srcdir)/gdk/*.c
# Header files to ignore when scanning
IGNORE_HFILES= \
gdkalias.h \
gdkintl.h \
gdkmarshalers.h \
gdkkeysyms.h \

View File

@@ -706,6 +706,8 @@ gdk_window_get_device_cursor
gdk_window_set_device_cursor
gdk_window_get_device_events
gdk_window_set_device_events
gdk_window_get_source_events
gdk_window_set_source_events
<SUBSECTION>
GdkPointerHooks
@@ -910,7 +912,6 @@ gdk_keymap_get_entries_for_keycode
gdk_keymap_get_direction
gdk_keymap_have_bidi_layouts
gdk_keymap_get_caps_lock_state
gdk_keymap_get_num_lock_state
gdk_keymap_add_virtual_modifiers
gdk_keymap_map_virtual_modifiers

View File

@@ -21,6 +21,7 @@ CFILE_GLOB=$(top_srcdir)/gtk/*.c
# Header files to ignore when scanning
IGNORE_HFILES= \
gtkalias.h \
fnmatch.h \
gtkdebug.h \
gtkbuilderprivate.h \
@@ -78,6 +79,7 @@ IGNORE_HFILES= \
gtktexttypes.h \
gtktextutil.h \
gtkthemes.h \
gtktoggleactionprivate.h \
gtktrayicon.h \
gtktreedatalist.h \
gtktreeprivate.h \

View File

@@ -318,7 +318,7 @@ that is, GUI components such as #GtkButton or #GtkTextView.
<xi:include href="xml/gtktable.xml" />
<xi:include href="xml/gtkexpander.xml" />
<xi:include href="xml/gtkorientable.xml" />
<xi:include href="xml/gtksizerequest.xml" />
<xi:include href="xml/gtkextendedlayout.xml" />
</chapter>
<chapter id="Ornaments">

View File

@@ -4942,7 +4942,6 @@ gtk_widget_get_requisition
gtk_widget_device_is_shadowed
<SUBSECTION>
gtk_requisition_new
gtk_requisition_copy
gtk_requisition_free

View File

@@ -1,10 +1,6 @@
gtkactiongroup.sgml
gtkbbox.sgml
gtkbox.sgml
gtkbuilder.sgml
gtkbutton.sgml
gtkcalendar.sgml
gtkcelleditable.sgml
gtkhbox.sgml
gtkiconview.sgml
gtkmessagedialog.sgml

View File

@@ -0,0 +1,401 @@
<!-- ##### SECTION Title ##### -->
GtkActionGroup
<!-- ##### SECTION Short_Description ##### -->
A group of actions
<!-- ##### SECTION Long_Description ##### -->
<para>
Actions are organised into groups. An action group is essentially a
map from names to #GtkAction objects.
</para>
<para>
All actions that would make sense to use in a particular context
should be in a single group. Multiple action groups may be used for a
particular user interface. In fact, it is expected that most nontrivial
applications will make use of multiple groups. For example, in an application
that can edit multiple documents, one group holding global actions
(e.g. quit, about, new), and one group per document holding actions that
act on that document (eg. save, cut/copy/paste, etc). Each window's menus
would be constructed from a combination of two action groups.
</para>
<para id="Action-Accel">
Accelerators are handled by the GTK+ accelerator map. All actions are assigned an
accelerator path (which normally has the form
<literal>&lt;Actions&gt;/<replaceable>group-name</replaceable>/<replaceable>action-name</replaceable></literal>)
and a shortcut is associated with this accelerator path. All menuitems and
toolitems take on this accelerator path. The GTK+ accelerator map code makes
sure that the correct shortcut is displayed next to the menu item.
</para>
<refsect2 id="GtkActionGroup-BUILDER-UI">
<title>GtkActionGroup as GtkBuildable</title>
<para>
The GtkActionGroup implementation of the GtkBuildable interface accepts
GtkAction objects as &lt;child&gt; elements in UI definitions.
</para>
<para>
Note that it is probably more common to define actions and action groups
in the code, since they are directly related to what the code can do.
</para>
<para>
The GtkActionGroup implementation of the GtkBuildable interface supports a
custom &lt;accelerator&gt; element, which has attributes named key and
modifiers and allows to specify accelerators. This is similar to the
&lt;accelerator&gt; element of GtkWidget, the main difference is that
it doesn't allow you to specify a signal.
</para>
<example>
<title>A <structname>GtkDialog</structname> UI definition fragment.</title>
<programlisting><![CDATA[
<object class="GtkActionGroup" id="actiongroup">
<child>
<object class="GtkAction" id="About">
<property name="name">About</property>
<property name="stock_id">gtk-about</property>
<signal handler="about_activate" name="activate"/>
</object>
<accelerator key="F1" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK"/>
</child>
</object>
]]></programlisting>
</example>
</refsect2>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### STRUCT GtkActionGroup ##### -->
<para>
The <structname>GtkActionGroup</structname> struct contains only private
members and should not be accessed directly.
</para>
<!-- ##### SIGNAL GtkActionGroup::connect-proxy ##### -->
<para>
</para>
@actiongroup: the object which received the signal.
@arg1:
@widget:
<!-- ##### SIGNAL GtkActionGroup::disconnect-proxy ##### -->
<para>
</para>
@actiongroup: the object which received the signal.
@arg1:
@widget:
<!-- ##### SIGNAL GtkActionGroup::post-activate ##### -->
<para>
</para>
@actiongroup: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GtkActionGroup::pre-activate ##### -->
<para>
</para>
@actiongroup: the object which received the signal.
@arg1:
<!-- ##### ARG GtkActionGroup:name ##### -->
<para>
</para>
<!-- ##### ARG GtkActionGroup:sensitive ##### -->
<para>
</para>
<!-- ##### ARG GtkActionGroup:visible ##### -->
<para>
</para>
<!-- ##### FUNCTION gtk_action_group_new ##### -->
<para>
</para>
@name:
@Returns:
<!-- ##### FUNCTION gtk_action_group_get_name ##### -->
<para>
</para>
@action_group:
@Returns:
<!-- ##### FUNCTION gtk_action_group_get_sensitive ##### -->
<para>
</para>
@action_group:
@Returns:
<!-- ##### FUNCTION gtk_action_group_set_sensitive ##### -->
<para>
</para>
@action_group:
@sensitive:
<!-- ##### FUNCTION gtk_action_group_get_visible ##### -->
<para>
</para>
@action_group:
@Returns:
<!-- ##### FUNCTION gtk_action_group_set_visible ##### -->
<para>
</para>
@action_group:
@visible:
<!-- ##### FUNCTION gtk_action_group_get_action ##### -->
<para>
</para>
@action_group:
@action_name:
@Returns:
<!-- ##### FUNCTION gtk_action_group_list_actions ##### -->
<para>
</para>
@action_group:
@Returns:
<!-- ##### FUNCTION gtk_action_group_add_action ##### -->
<para>
</para>
@action_group:
@action:
<!-- ##### FUNCTION gtk_action_group_add_action_with_accel ##### -->
<para>
</para>
@action_group:
@action:
@accelerator:
<!-- ##### FUNCTION gtk_action_group_remove_action ##### -->
<para>
</para>
@action_group:
@action:
<!-- ##### STRUCT GtkActionEntry ##### -->
<para>
<structname>GtkActionEntry</structname> structs are used with
gtk_action_group_add_actions() to construct actions.
</para>
@name: The name of the action.
@stock_id: The stock id for the action, or the name of an icon from the icon
theme.
@label: The label for the action. This field should typically be marked for
translation, see gtk_action_group_set_translation_domain(). If @label
is %NULL, the label of the stock item with id @stock_id is used.
@accelerator: The accelerator for the action, in the format understood by
gtk_accelerator_parse().
@tooltip: The tooltip for the action. This field should typically be marked
for translation, see gtk_action_group_set_translation_domain().
@callback: The function to call when the action is activated.
<!-- ##### FUNCTION gtk_action_group_add_actions ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@user_data:
<!-- ##### FUNCTION gtk_action_group_add_actions_full ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@user_data:
@destroy:
<!-- ##### STRUCT GtkToggleActionEntry ##### -->
<para>
<structname>GtkToggleActionEntry</structname> structs are used with
gtk_action_group_add_toggle_actions() to construct toggle actions.
</para>
@name: The name of the action.
@stock_id: The stock id for the action, or the name of an icon from the icon
theme.
@label: The label for the action. This field should typically be marked for
translation, see gtk_action_group_set_translation_domain().
@accelerator: The accelerator for the action, in the format understood by
gtk_accelerator_parse().
@tooltip: The tooltip for the action. This field should typically be marked
for translation, see gtk_action_group_set_translation_domain().
@callback: The function to call when the action is activated.
@is_active: The initial state of the toggle action.
<!-- ##### FUNCTION gtk_action_group_add_toggle_actions ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@user_data:
<!-- ##### FUNCTION gtk_action_group_add_toggle_actions_full ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@user_data:
@destroy:
<!-- ##### STRUCT GtkRadioActionEntry ##### -->
<para>
<structname>GtkRadioActionEntry</structname> structs are used with
gtk_action_group_add_radio_actions() to construct groups of radio actions.
</para>
@name: The name of the action.
@stock_id: The stock id for the action, or the name of an icon from the icon
theme.
@label: The label for the action. This field should typically be marked for
translation, see gtk_action_group_set_translation_domain().
@accelerator: The accelerator for the action, in the format understood by
gtk_accelerator_parse().
@tooltip: The tooltip for the action. This field should typically be marked for
translation, see gtk_action_group_set_translation_domain().
@value: The value to set on the radio action. See gtk_radio_action_get_current_value().
<!-- ##### FUNCTION gtk_action_group_add_radio_actions ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@value:
@on_change:
@user_data:
<!-- ##### FUNCTION gtk_action_group_add_radio_actions_full ##### -->
<para>
</para>
@action_group:
@entries:
@n_entries:
@value:
@on_change:
@user_data:
@destroy:
<!-- ##### USER_FUNCTION GtkTranslateFunc ##### -->
<para>
The function used to translate messages in e.g. #GtkIconFactory
and #GtkActionGroup.
</para>
@path: The id of the message. In #GtkItemFactory this will be a path
from a #GtkItemFactoryEntry, in #GtkActionGroup, it will be a label
or tooltip from a #GtkActionEntry.
@func_data: user data passed in when registering the function
@Returns: the translated message
<!-- ##### FUNCTION gtk_action_group_set_translate_func ##### -->
<para>
</para>
@action_group:
@func:
@data:
@notify:
<!-- ##### FUNCTION gtk_action_group_set_translation_domain ##### -->
<para>
</para>
@action_group:
@domain:
<!-- ##### FUNCTION gtk_action_group_translate_string ##### -->
<para>
</para>
@action_group:
@string:
@Returns:

View File

@@ -0,0 +1,398 @@
<!-- ##### SECTION Title ##### -->
GtkButton
<!-- ##### SECTION Short_Description ##### -->
A widget that creates a signal when clicked on
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GtkButton widget is generally used to attach a function to that
is called when the button is pressed. The various signals and how to use
them are outlined below.
</para>
<para>
The #GtkButton widget can hold any valid child widget. That is it can
hold most any other standard #GtkWidget. The most commonly used child is
the #GtkLabel.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### STRUCT GtkButton ##### -->
<para>
This should not be accessed directly. Use the accessor functions below.
</para>
<!-- ##### SIGNAL GtkButton::activate ##### -->
<para>
</para>
@button: the object which received the signal.
<!-- ##### SIGNAL GtkButton::clicked ##### -->
<para>
</para>
@button:
<!-- ##### SIGNAL GtkButton::enter ##### -->
<para>
</para>
@button:
<!-- ##### SIGNAL GtkButton::leave ##### -->
<para>
</para>
@button:
<!-- ##### SIGNAL GtkButton::pressed ##### -->
<para>
</para>
@button:
<!-- ##### SIGNAL GtkButton::released ##### -->
<para>
</para>
@button:
<!-- ##### ARG GtkButton:focus-on-click ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:image ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:image-position ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:label ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:relief ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:use-stock ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:use-underline ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:xalign ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:yalign ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:child-displacement-x ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:child-displacement-y ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:default-border ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:default-outside-border ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:displace-focus ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:image-spacing ##### -->
<para>
</para>
<!-- ##### ARG GtkButton:inner-border ##### -->
<para>
</para>
<!-- ##### FUNCTION gtk_button_new ##### -->
<para>
Creates a new #GtkButton widget. To add a child widget to the button,
use gtk_container_add().
</para>
@void:
@Returns: The newly created #GtkButton widget.
<!-- ##### FUNCTION gtk_button_new_with_label ##### -->
<para>
Creates a #GtkButton widget with a #GtkLabel child containing the given
text.
</para>
@label: The text you want the #GtkLabel to hold.
@Returns: The newly created #GtkButton widget.
<!-- ##### FUNCTION gtk_button_new_with_mnemonic ##### -->
<para>
</para>
@label:
@Returns:
<!-- ##### FUNCTION gtk_button_new_from_stock ##### -->
<para>
</para>
@stock_id:
@Returns:
<!-- ##### FUNCTION gtk_button_pressed ##### -->
<para>
Emits a #GtkButton::pressed signal to the given #GtkButton.
</para>
@button: The #GtkButton you want to send the signal to.
@Deprecated: 2.20: Use the #GtkWidget::button-press-event signal.
<!-- ##### FUNCTION gtk_button_released ##### -->
<para>
Emits a #GtkButton::released signal to the given #GtkButton.
</para>
@button: The #GtkButton you want to send the signal to.
@Deprecated: 2.20: Use the #GtkWidget::button-release-event signal.
<!-- ##### FUNCTION gtk_button_clicked ##### -->
<para>
Emits a #GtkButton::clicked signal to the given #GtkButton.
</para>
@button: The #GtkButton you want to send the signal to.
<!-- ##### FUNCTION gtk_button_enter ##### -->
<para>
Emits a #GtkButton::enter signal to the given #GtkButton.
</para>
@button: The #GtkButton you want to send the signal to.
@Deprecated: 2.20: Use the #GtkWidget::enter-notify-event signal.
<!-- ##### FUNCTION gtk_button_leave ##### -->
<para>
Emits a #GtkButton::leave signal to the given #GtkButton.
</para>
@button: The #GtkButton you want to send the signal to.
@Deprecated: 2.20: Use the #GtkWidget::leave-notify-event signal.
<!-- ##### FUNCTION gtk_button_set_relief ##### -->
<para>
Sets the relief style of the edges of the given #GtkButton widget.
Three styles exist, GTK_RELIEF_NORMAL, GTK_RELIEF_HALF, GTK_RELIEF_NONE.
The default style is, as one can guess, GTK_RELIEF_NORMAL.
<!-- FIXME: put pictures of each style -->
</para>
@button: The #GtkButton you want to set relief styles of.
@newstyle: The GtkReliefStyle as described above.
<!-- ##### FUNCTION gtk_button_get_relief ##### -->
<para>
Returns the current relief style of the given #GtkButton.
</para>
@button: The #GtkButton you want the #GtkReliefStyle from.
@Returns: The current #GtkReliefStyle
<!-- ##### FUNCTION gtk_button_get_label ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_set_label ##### -->
<para>
</para>
@button:
@label:
<!-- ##### FUNCTION gtk_button_get_use_stock ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_set_use_stock ##### -->
<para>
</para>
@button:
@use_stock:
<!-- ##### FUNCTION gtk_button_get_use_underline ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_set_use_underline ##### -->
<para>
</para>
@button:
@use_underline:
<!-- ##### FUNCTION gtk_button_set_focus_on_click ##### -->
<para>
</para>
@button:
@focus_on_click:
<!-- ##### FUNCTION gtk_button_get_focus_on_click ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_set_alignment ##### -->
<para>
</para>
@button:
@xalign:
@yalign:
<!-- ##### FUNCTION gtk_button_get_alignment ##### -->
<para>
</para>
@button:
@xalign:
@yalign:
<!-- ##### FUNCTION gtk_button_set_image ##### -->
<para>
</para>
@button:
@image:
<!-- ##### FUNCTION gtk_button_get_image ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_set_image_position ##### -->
<para>
</para>
@button:
@position:
<!-- ##### FUNCTION gtk_button_get_image_position ##### -->
<para>
</para>
@button:
@Returns:
<!-- ##### FUNCTION gtk_button_get_event_window ##### -->
<para>
</para>
@button:
@Returns:

View File

@@ -0,0 +1,315 @@
<!-- ##### SECTION Title ##### -->
GtkCalendar
<!-- ##### SECTION Short_Description ##### -->
Displays a calendar and allows the user to select a date
<!-- ##### SECTION Long_Description ##### -->
<para>
#GtkCalendar is a widget that displays a calendar, one month at a time.
It can be created with gtk_calendar_new().
</para>
<para>
The month and year currently displayed can be altered with
gtk_calendar_select_month(). The exact day can be selected from the displayed
month using gtk_calendar_select_day().
</para>
<para>
To place a visual marker on a particular day, use gtk_calendar_mark_day()
and to remove the marker, gtk_calendar_unmark_day().
Alternative, all marks can be cleared with gtk_calendar_clear_marks().
</para>
<para>
The way in which the calendar itself is displayed can be altered using
gtk_calendar_set_display_options().
</para>
<para>
The selected date can be retrieved from a #GtkCalendar using
gtk_calendar_get_date().
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### STRUCT GtkCalendar ##### -->
<para>
<structfield>num_marked_dates</structfield> is an integer containing the
number of days that have a mark over them.
</para>
<para>
<structfield>marked_date</structfield> is an array containing the day numbers
that currently have a mark over them.
</para>
<para>
<structfield>month</structfield>, <structfield>year</structfield>, and
<structfield>selected_day</structfield> contain the currently visible month,
year, and selected day respectively.
</para>
<para>
All of these fields should be considered read only, and everything in this
struct should only be modified using the functions provided below.
</para>
<note>
<para>
Note that <structfield>month</structfield> is zero-based (i.e it allowed values
are 0-11) while <structfield>selected_day</structfield> is one-based
(i.e. allowed values are 1-31).
</para>
</note>
<!-- ##### SIGNAL GtkCalendar::day-selected ##### -->
<para>
Emitted when the user selects a day.
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::day-selected-double-click ##### -->
<para>
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::month-changed ##### -->
<para>
Emitted when the user clicks a button to change the selected month on a
calendar.
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::next-month ##### -->
<para>
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::next-year ##### -->
<para>
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::prev-month ##### -->
<para>
</para>
@calendar: the object which received the signal.
<!-- ##### SIGNAL GtkCalendar::prev-year ##### -->
<para>
</para>
@calendar: the object which received the signal.
<!-- ##### ARG GtkCalendar:day ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:detail-height-rows ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:detail-width-chars ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:month ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:no-month-change ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:show-day-names ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:show-details ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:show-heading ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:show-week-numbers ##### -->
<para>
</para>
<!-- ##### ARG GtkCalendar:year ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION GtkCalendarDetailFunc ##### -->
<para>
</para>
@calendar:
@year:
@month:
@day:
@user_data:
@Returns:
<!-- ##### ENUM GtkCalendarDisplayOptions ##### -->
<para>
</para>
@GTK_CALENDAR_SHOW_HEADING:
@GTK_CALENDAR_SHOW_DAY_NAMES:
@GTK_CALENDAR_NO_MONTH_CHANGE:
@GTK_CALENDAR_SHOW_WEEK_NUMBERS:
@GTK_CALENDAR_WEEK_START_MONDAY:
@GTK_CALENDAR_SHOW_DETAILS:
<!-- ##### FUNCTION gtk_calendar_new ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION gtk_calendar_select_month ##### -->
<para>
</para>
@calendar:
@month:
@year:
<!-- ##### FUNCTION gtk_calendar_select_day ##### -->
<para>
</para>
@calendar:
@day:
<!-- ##### FUNCTION gtk_calendar_mark_day ##### -->
<para>
</para>
@calendar:
@day:
<!-- ##### FUNCTION gtk_calendar_unmark_day ##### -->
<para>
</para>
@calendar:
@day:
<!-- ##### FUNCTION gtk_calendar_clear_marks ##### -->
<para>
</para>
@calendar:
<!-- ##### FUNCTION gtk_calendar_get_display_options ##### -->
<para>
</para>
@calendar:
@Returns:
<!-- ##### FUNCTION gtk_calendar_set_display_options ##### -->
<para>
</para>
@calendar:
@flags:
<!-- ##### FUNCTION gtk_calendar_get_date ##### -->
<para>
</para>
@calendar:
@year:
@month:
@day:
<!-- ##### FUNCTION gtk_calendar_set_detail_func ##### -->
<para>
</para>
@calendar:
@func:
@data:
@destroy:
<!-- ##### FUNCTION gtk_calendar_get_detail_width_chars ##### -->
<para>
</para>
@calendar:
@Returns:
<!-- ##### FUNCTION gtk_calendar_set_detail_width_chars ##### -->
<para>
</para>
@calendar:
@chars:
<!-- ##### FUNCTION gtk_calendar_get_detail_height_rows ##### -->
<para>
</para>
@calendar:
@Returns:
<!-- ##### FUNCTION gtk_calendar_set_detail_height_rows ##### -->
<para>
</para>
@calendar:
@rows:

View File

@@ -0,0 +1,83 @@
<!-- ##### SECTION Title ##### -->
GtkCellEditable
<!-- ##### SECTION Short_Description ##### -->
Interface for widgets which can are used for editing cells
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GtkCellEditable interface must be implemented for widgets
to be usable when editing the contents of a #GtkTreeView cell.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### STRUCT GtkCellEditable ##### -->
<para>
</para>
<!-- ##### SIGNAL GtkCellEditable::editing-done ##### -->
<para>
</para>
@celleditable: the object which received the signal.
<!-- ##### SIGNAL GtkCellEditable::remove-widget ##### -->
<para>
</para>
@celleditable: the object which received the signal.
<!-- ##### ARG GtkCellEditable:editing-canceled ##### -->
<para>
</para>
<!-- ##### STRUCT GtkCellEditableIface ##### -->
<para>
</para>
@g_iface:
@editing_done:
@remove_widget:
@start_editing:
<!-- ##### FUNCTION gtk_cell_editable_start_editing ##### -->
<para>
</para>
@cell_editable:
@event:
<!-- ##### FUNCTION gtk_cell_editable_editing_done ##### -->
<para>
</para>
@cell_editable:
<!-- ##### FUNCTION gtk_cell_editable_remove_widget ##### -->
<para>
</para>
@cell_editable:

View File

@@ -48,6 +48,11 @@ only be accessed using the functions below.
</para>
<!-- ##### ARG GtkFontSelection:font ##### -->
<para>
</para>
<!-- ##### ARG GtkFontSelection:font-name ##### -->
<para>

View File

@@ -19,7 +19,7 @@ their icons, but more additional application themes can be
installed as operating system vendors and users choose.
</para>
<para>
Named icons are similar to the <xref linkend="gtk3-Themeable-Stock-Images"/>
Named icons are similar to the <xref linkend="gtk-Themeable-Stock-Images"/>
facility, and the distinction between the two may be a bit confusing.
A few things to keep in mind:
</para>
@@ -27,7 +27,7 @@ A few things to keep in mind:
<listitem>
<para>
Stock images usually are used in conjunction with
<xref linkend="gtk3-Stock-Items"/>., such as %GTK_STOCK_OK or
<xref linkend="gtk-Stock-Items"/>., such as %GTK_STOCK_OK or
%GTK_STOCK_OPEN. Named icons are easier to set up and therefore
are more useful for new icons that an application wants to
add, such as application icons or window icons.

View File

@@ -54,7 +54,7 @@ GtkWidget *frame2 = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN);
gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_IN);
gtk_widget_set_size_request (hpaned, 200, -1);
gtk_widget_set_size_request (hpaned, 200 + GTK_PANED (hpaned)->gutter_size, -1);
gtk_paned_pack1 (GTK_PANED (hpaned), frame1, TRUE, FALSE);
gtk_widget_set_size_request (frame1, 50, -1);

View File

@@ -131,8 +131,7 @@ The <structname>GtkTable</structname> structure holds the data for the actual ta
Used to create a new table widget. An initial size must be given by
specifying how many rows and columns the table should have, although
this can be changed later with gtk_table_resize(). @rows and @columns
must both be in the range 1 .. 65535. For historical reasons, 0 is accepted
as well and is silently interpreted as 1.
must both be in the range 0 .. 65535.
</para>
@rows: The number of rows the new table should have.

View File

@@ -279,15 +279,13 @@ create_combo_box_entry (void)
{
GtkWidget *widget;
GtkWidget *align;
GtkWidget *child;
gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
" GtkComboBox::appears-as-list = 1\n"
"}\n"
"widget_class \"GtkComboBoxEntry\" style \"combo-box-entry-style\"\n" );
widget = gtk_combo_box_entry_new_text ();
child = gtk_bin_get_child (GTK_BIN (widget));
gtk_entry_set_text (GTK_ENTRY (child), "Combo Box Entry");
gtk_entry_set_text (GTK_ENTRY (GTK_BIN (widget)->child), "Combo Box Entry");
align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
gtk_container_add (GTK_CONTAINER (align), widget);
@@ -614,12 +612,10 @@ create_colorsel (void)
WidgetInfo *info;
GtkWidget *widget;
GtkColorSelection *colorsel;
GtkColorSelectionDialog *selection_dialog;
GdkColor color;
widget = gtk_color_selection_dialog_new ("Color Selection Dialog");
selection_dialog = GTK_COLOR_SELECTION_DIALOG (widget);
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (widget)->colorsel);
color.red = 0x7979;
color.green = 0xdbdb;
@@ -999,7 +995,7 @@ create_volume_button (void)
button = gtk_volume_button_new ();
gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), 33);
/* Hack: get the private dock */
widget = gtk_scale_button_get_plus_button (GTK_SCALE_BUTTON (button))->parent->parent->parent;
widget = GTK_SCALE_BUTTON (button)->plus_button->parent->parent->parent;
gtk_widget_show_all (widget);
return new_widget_info ("volumebutton", widget, ASIS);
}

View File

@@ -37,7 +37,7 @@ EXTRA_DIST += \
images/tictactoe.png
if HAVE_DOCBOOK
html: gtk-tut.sgml
html:
if test -w $(srcdir); then \
(cd $(srcdir); \
db2html gtk-tut.sgml; \
@@ -47,13 +47,11 @@ html: gtk-tut.sgml
cp images/*.png html/images); \
fi
pdf: gtk-tut.sgml
pdf:
if test -w $(srcdir); then \
(cd $(srcdir); db2pdf gtk-tut.sgml); \
fi
all-local: html
dist-hook: html
cp -Rp $(srcdir)/html $(distdir)
else

View File

@@ -27,7 +27,6 @@ static gboolean area_event( GtkWidget *widget,
gint handled = FALSE;
gint response;
GtkColorSelection *colorsel;
GtkColorSelectionDialog *selection_dialog;
/* Check if we've received a button pressed event */
@@ -40,8 +39,7 @@ static gboolean area_event( GtkWidget *widget,
colorseldlg = gtk_color_selection_dialog_new ("Select background color");
/* Get the ColorSelection widget */
selection_dialog = GTK_COLOR_SELECTION_DIALOG (colorseldlg);
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_colorsel (selection_dialog));
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (colorseldlg)->colorsel);
gtk_color_selection_set_previous_color (colorsel, &color);
gtk_color_selection_set_current_color (colorsel, &color);

View File

@@ -26,9 +26,11 @@ EXTRA_DIST += \
makeenums.pl \
makefile.msc \
gdk.symbols \
makegdkalias.pl \
gdkenumtypes.c.template \
gdkenumtypes.h.template \
abicheck.sh
abicheck.sh \
pltcheck.sh
INCLUDES = \
-DG_LOG_DOMAIN=\"Gdk\" \
@@ -48,7 +50,6 @@ endif
# since automake doesn't support conditionalized libsomething_la_LDFLAGS
# we use the general approach here
LDADD = \
$(GTK_LINK_FLAGS) \
-version-info $(LT_VERSION_INFO) \
-export-dynamic \
-rpath $(libdir) \
@@ -103,6 +104,9 @@ gdk_public_h_sources = \
gdk_built_public_sources = \
gdkenumtypes.h
gdk_built_private_headers = \
gdkalias.h
gdk_private_headers = \
gdkinternals.h \
gdkdeviceprivate.h \
@@ -142,10 +146,12 @@ gdk_c_sources = \
gdkwindowimpl.c
gdk_built_sources = \
gdkaliasdef.c \
gdkenumtypes.c \
gdkmarshalers.h \
gdkmarshalers.c \
$(gdk_built_public_sources)
$(gdk_built_public_sources) \
$(gdk_built_private_headers)
#
# setup GDK sources and their dependencies
@@ -154,9 +160,9 @@ gdk_built_sources = \
gdkincludedir = $(includedir)/gtk-3.0/gdk
gdkinclude_HEADERS = $(gdk_public_h_sources) $(gdk_built_public_sources)
common_sources = \
$(gdk_private_headers) \
$(gdk_c_sources) \
common_sources = \
$(gdk_private_headers) \
$(gdk_c_sources) \
gdkenumtypes.c \
gdkmarshalers.c \
gdkmarshalers.h
@@ -180,67 +186,30 @@ libgdk_win32_3_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(src
if HAVE_INTROSPECTION
introspection_files = \
$(gdk_public_h_sources) \
$(gdk_c_sources) \
gdkenumtypes.c \
introspection_files = \
$(gdk_public_h_sources) \
$(gdk_c_sources) \
gdkenumtypes.c \
gdkenumtypes.h
Gdk-3.0.gir: $(gdktargetlib) Makefile
Gdk_3_0_gir_SCANNERFLAGS = --strip-prefix=Gdk
Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 cairo-1.0
Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0
Gdk_3_0_gir_LIBS = $(gdktargetlib)
Gdk_3_0_gir_FILES = $(introspection_files)
Gdk_3_0_gir_FILES = $(addprefix $(srcdir)/,$(introspection_files))
Gdk_3_0_gir_CFLAGS = $(INCLUDES)
INTROSPECTION_GIRS += Gdk-3.0.gir
if USE_X11
x11_introspection_files = \
x11/checksettings.c \
x11/gdkapplaunchcontext-x11.c \
x11/gdkasync.c \
x11/gdkcolor-x11.c \
x11/gdkcursor-x11.c \
x11/gdkdevice-core.c \
x11/gdkdevicemanager-core.c \
x11/gdkdevicemanager-x11.c \
x11/gdkdevicemanager-xi2.c \
x11/gdkdevicemanager-xi.c \
x11/gdkdevice-xi2.c \
x11/gdkdevice-xi.c \
x11/gdkdisplay-x11.c \
x11/gdkdnd-x11.c \
x11/gdkdrawable-x11.c \
x11/gdkeventsource.c \
x11/gdkeventtranslator.c \
x11/gdkgc-x11.c \
x11/gdkgeometry-x11.c \
x11/gdkglobals-x11.c \
x11/gdkimage-x11.c \
x11/gdkim-x11.c \
x11/gdkinput.c \
x11/gdkkeys-x11.c \
x11/gdkmain-x11.c \
x11/gdkpixmap-x11.c \
x11/gdkproperty-x11.c \
x11/gdkscreen-x11.c \
x11/gdkselection-x11.c \
x11/gdksettings.c \
x11/gdkspawn-x11.c \
x11/gdktestutils-x11.c \
x11/gdkvisual-x11.c \
x11/gdkwindow-x11.c \
x11/gdkxftdefaults.c \
x11/gdkxid.c \
x11/xsettings-client.c \
x11/xsettings-common.c \
x11_introspection_files = \
x11/*.c \
x11/gdkx.h
GdkX11-3.0.gir: $(gdktargetlib) Gdk-3.0.gir Makefile
GdkX11_3_0_gir_SCANNERFLAGS = --strip-prefix=gdk_x11
GdkX11_3_0_gir_INCLUDES = Gio-2.0 Gdk-3.0 GdkPixbuf-2.0 Pango-1.0 xlib-2.0
GdkX11_3_0_gir_LIBS = $(gdktargetlib)
GdkX11_3_0_gir_FILES = $(x11_introspection_files)
GdkX11_3_0_gir_FILES = $(addprefix $(srcdir)/,$(x11_introspection_files))
GdkX11_3_0_gir_CFLAGS = $(INCLUDES) -L$(top_builddir)/gdk
INTROSPECTION_GIRS += GdkX11-3.0.gir
endif # USE_X11
@@ -286,9 +255,15 @@ endif
gdk.def: gdk.symbols
(echo -e EXPORTS; $(CPP) -P -DALL_FILES -DGDK_WINDOWING_WIN32 -DINCLUDE_VARIABLES - <$(srcdir)/gdk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gdk.def
gdkalias.h: gdk.symbols
$(PERL) $(srcdir)/makegdkalias.pl < $(srcdir)/gdk.symbols > gdkalias.h
gdkaliasdef.c: gdk.symbols
$(PERL) $(srcdir)/makegdkalias.pl -def < $(srcdir)/gdk.symbols > gdkaliasdef.c
TESTS_ENVIRONMENT = srcdir="$(srcdir)"
if OS_LINUX
TESTS = abicheck.sh
TESTS = abicheck.sh pltcheck.sh
endif
@@ -344,7 +319,7 @@ gdkmarshalers.h: @REBUILD@ gdkmarshalers.list
&& mv gdkmarshalers-h.tmp gdkmarshalers.h \
|| ( rm -f gdkmarshalers-h.tmp && exit 1)
gdkmarshalers.c: @REBUILD@ gdkmarshalers.list
$(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body > gdkmarshalers-c.tmp \
(echo "#include \"gdkalias.h\""; $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body) > gdkmarshalers-c.tmp \
&& mv gdkmarshalers-c.tmp gdkmarshalers.c \
|| ( rm -f gdkmarshalers-c.tmp && exit 1 )

View File

@@ -42,6 +42,7 @@
#include "gdkinternals.h"
#include "gdkdirectfb.h"
#include "gdkprivate-directfb.h"
#include "gdkalias.h"
typedef struct {
@@ -509,3 +510,5 @@ gdk_directfb_allocate_color_key (GdkColormap *colormap)
private->info[255].ref_count++;
}
#define __GDK_COLOR_X11_C__
#include "gdkaliasdef.c"

View File

@@ -35,6 +35,7 @@
#include "gdkdirectfb.h"
#include "gdkprivate-directfb.h"
#include "gdkcursor.h"
#include "gdkalias.h"
#include "x-cursors.xbm"
@@ -544,3 +545,7 @@ gdk_display_supports_cursor_color (GdkDisplay *display)
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
return TRUE;
}
#define __GDK_CURSOR_X11_C__
#include "gdkaliasdef.c"

View File

@@ -32,6 +32,7 @@
#include "gdkprivate-directfb.h"
#include "gdkscreen.h"
#include "gdkdisplaymanager.h"
#include "gdkalias.h"
extern void _gdk_visual_init (void);
@@ -539,3 +540,8 @@ gdk_display_supports_composite (GdkDisplay *display)
{
return FALSE;
}
#define __GDK_DISPLAY_X11_C__
#include "gdkaliasdef.c"

View File

@@ -37,6 +37,7 @@
#include "gdkdnd.h"
#include "gdkproperty.h"
#include "gdkalias.h"
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
@@ -632,3 +633,6 @@ gdk_drag_get_selection (GdkDragContext *context)
else
return GDK_NONE;
}
#define __GDK_DND_X11_C__
#include "gdkaliasdef.c"

View File

@@ -43,6 +43,9 @@
#include "gdkinternals.h"
#include "gdkalias.h"
#include "cairo-directfb.h"
@@ -1631,3 +1634,6 @@ gdk_directfb_ref_cairo_surface (GdkDrawable *drawable)
g_assert (impl->cairo_surface != NULL);
return impl->cairo_surface;
}
#define __GDK_DRAWABLE_X11_C__
#include "gdkaliasdef.c"

View File

@@ -47,10 +47,16 @@
gboolean gdk_net_wm_supports (GdkAtom property);
#endif
#include "gdkalias.h"
#define EventBuffer _gdk_display->buffer
#define DirectFB _gdk_display->directfb
#include "gdkaliasdef.c"
/*********************************************
* Functions for maintaining the event queue *
*********************************************/
@@ -961,3 +967,6 @@ void
_gdk_windowing_event_data_free (GdkEvent *event)
{
}
#define __GDK_EVENTS_X11_C__
#include "gdkaliasdef.c"

View File

@@ -43,6 +43,8 @@
#include "gdkgc.h"
#include "gdkpixmap.h"
#include "gdkalias.h"
static void gdk_directfb_gc_get_values (GdkGC *gc,
GdkGCValues *values);
static void gdk_directfb_gc_set_values (GdkGC *gc,
@@ -384,3 +386,5 @@ gdk_gc_get_screen (GdkGC *gc)
return _gdk_screen;
}
#define __GDK_GC_X11_C__
#include "gdkaliasdef.c"

View File

@@ -37,6 +37,7 @@
#include "gdkprivate-directfb.h"
#include "gdkinternals.h"
#include "gdkalias.h"
void
@@ -252,3 +253,6 @@ _gdk_directfb_window_move_region (GdkWindow *window,
cairo_region_destroy (src_region);
cairo_region_destroy (dest_region);
}
#define __GDK_GEOMETRY_X11_C__
#include "gdkaliasdef.c"

View File

@@ -36,6 +36,8 @@
#include "gdkdirectfb.h"
#include "gdkprivate-directfb.h"
#include "gdkalias.h"
GdkDisplayDFB *_gdk_display = NULL;
GdkScreen * _gdk_screen = NULL;
@@ -56,3 +58,5 @@ GdkEventMask _gdk_directfb_keyboard_grab_events = 0;
GdkCursor * _gdk_directfb_pointer_grab_cursor = NULL;
GdkAtom _gdk_selection_property = 0;
#include "gdkaliasdef.c"

View File

@@ -40,6 +40,7 @@
#include "gdkinternals.h"
#include "gdkimage.h"
#include "gdkalias.h"
static GList *image_list = NULL;
@@ -403,3 +404,6 @@ _gdk_windowing_get_bits_for_depth (GdkDisplay *display,
return 0;
}
#define __GDK_IMAGE_X11_C__
#include "gdkaliasdef.c"

View File

@@ -40,6 +40,7 @@
#include "gdkinput.h"
#include "gdkkeysyms.h"
#include "gdkalias.h"
static GdkDeviceAxis gdk_input_core_axes[] =
@@ -325,3 +326,7 @@ gdk_device_set_source (GdkDevice *device,
g_return_if_fail (device != NULL);
device->source = source;
}
#define __GDK_INPUT_NONE_C__
#define __GDK_INPUT_C__
#include "gdkaliasdef.c"

View File

@@ -36,11 +36,12 @@
#include <stdlib.h>
#include <string.h>
#include "gdkdirectfb.h"
#include "gdkprivate-directfb.h"
#include "gdkkeysyms.h"
#include "gdkalias.h"
static struct gdk_key *gdk_keys_by_name = NULL;
@@ -2030,3 +2031,6 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
return TRUE;
}
#define __GDK_KEYS_DIRECTFB_C__
#include "gdkaliasdef.c"

View File

@@ -53,6 +53,7 @@
#include "gdkinput-directfb.h"
#include "gdkintl.h"
#include "gdkalias.h"
void
@@ -415,3 +416,6 @@ _gdk_windowing_pointer_grab (GdkWindow *window,
return GDK_GRAB_SUCCESS;
}
#define __GDK_MAIN_X11_C__
#include "gdkaliasdef.c"

View File

@@ -43,6 +43,7 @@
#include "gdkinternals.h"
#include "gdkpixmap.h"
#include "gdkalias.h"
static void gdk_pixmap_impl_directfb_init (GdkPixmapImplDirectFB *pixmap);
@@ -335,3 +336,6 @@ GdkPixmap* gdk_pixmap_lookup_for_display (GdkDisplay *display,GdkNativeWindow an
{
return gdk_pixmap_lookup (anid);
}
#define __GDK_PIXMAP_X11_C__
#include "gdkaliasdef.c"

View File

@@ -42,6 +42,7 @@
#include "gdkinternals.h"
#include "gdkalias.h"
static GHashTable *names_to_atoms;
static GPtrArray *atoms_to_names;
@@ -395,3 +396,5 @@ gdk_property_change (GdkWindow *window,
event->property.state = GDK_PROPERTY_NEW_VALUE;
}
}
#define __GDK_PROPERTY_X11_C__
#include "gdkaliasdef.c"

View File

@@ -38,6 +38,7 @@
#include "gdkprivate-directfb.h"
#include "gdkinternals.h"
#include "gdkalias.h"
static GdkColormap *default_colormap = NULL;
@@ -246,3 +247,6 @@ gdk_screen_is_composited (GdkScreen *screen)
g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
return FALSE;
}
#define __GDK_SCREEN_X11_C__
#include "gdkaliasdef.c"

View File

@@ -40,6 +40,7 @@
#include "gdkproperty.h"
#include "gdkselection.h"
#include "gdkprivate.h"
#include "gdkalias.h"
typedef struct _OwnerInfo OwnerInfo;
@@ -492,3 +493,6 @@ gdk_text_property_to_utf8_list_for_display (GdkDisplay *display,
return count;
}
}
#define __GDK_SELECTION_X11_C__
#include "gdkaliasdef.c"

View File

@@ -24,6 +24,7 @@
#include "gdk.h"
#include "gdkspawn.h"
#include "gdkprivate.h"
#include "gdkalias.h"
gboolean
@@ -102,3 +103,6 @@ gdk_spawn_command_line_on_screen (GdkScreen *screen,
return retval;
}
#define __GDK_SPAWN_X11_C__
#include "gdkaliasdef.c"

View File

@@ -35,6 +35,7 @@
#include <gdk/gdktestutils.h>
#include <gdk/gdkkeysyms.h>
#include "gdkalias.h"
static DFBInputDeviceKeySymbol
@@ -261,3 +262,6 @@ gdk_test_simulate_button (GdkWindow *window,
return TRUE;
}
#define __GDK_TEST_UTILS_X11_C__
#include "gdkaliasdef.c"

View File

@@ -37,6 +37,7 @@
#include "gdkscreen.h"
#include "gdkvisual.h"
#include "gdkalias.h"
struct _GdkVisualClass
@@ -491,3 +492,6 @@ gdk_directfb_visual_create (DFBSurfacePixelFormat pixelformat)
return (GdkVisualDirectFB *) visual;
}
#define __GDK_VISUAL_X11_C__
#include "gdkaliasdef.c"

View File

@@ -41,6 +41,7 @@
#include "gdkdisplay-directfb.h"
#include "gdkinternals.h"
#include "gdkalias.h"
#include "cairo.h"
#include <assert.h>
@@ -2889,3 +2890,7 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
iface->queue_translation = gdk_directfb_window_queue_translation;
iface->destroy = gdk_directfb_window_destroy;
}
#define __GDK_WINDOW_X11_C__
#include "gdkaliasdef.c"

View File

@@ -36,6 +36,7 @@
#ifndef HAVE_XCONVERTCASE
#include "gdkkeysyms.h"
#endif
#include "gdkalias.h"
typedef struct _GdkPredicate GdkPredicate;
@@ -787,24 +788,27 @@ gdk_set_program_class (const char *program_class)
}
/**
* gdk_enable_multidevice:
* gdk_disable_multidevice:
*
* Enables multidevice support in GDK. This call must happen prior
* Disables multidevice support in GDK. This call must happen prior
* to gdk_display_open(), gtk_init(), gtk_init_with_args() or
* gtk_init_check() in order to take effect.
*
* Note that individual #GdkWindow<!-- -->s still need to explicitly
* enable multidevice awareness through gdk_window_set_support_multidevice().
*
* This function must be called before initializing GDK.
* Most common GTK+ applications won't ever need to call this. Only
* applications that do mixed GDK/Xlib calls could want to disable
* multidevice support if such Xlib code deals with input devices in
* any way and doesn't observe the presence of XInput 2.
*
* Since: 3.0
**/
void
gdk_enable_multidevice (void)
gdk_disable_multidevice (void)
{
if (gdk_initialized)
return;
_gdk_enable_multidevice = TRUE;
_gdk_disable_multidevice = TRUE;
}
#define __GDK_C__
#include "gdkaliasdef.c"

View File

@@ -66,7 +66,7 @@ G_BEGIN_DECLS
/* Initialization, exit and events
*/
#define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
void gdk_enable_multidevice (void);
void gdk_disable_multidevice (void);
void gdk_parse_args (gint *argc,
gchar ***argv);
void gdk_init (gint *argc,

View File

@@ -177,7 +177,7 @@ gdk_get_display_arg_name
gdk_get_program_class
gdk_init
gdk_init_check
gdk_enable_multidevice
gdk_disable_multidevice
gdk_pre_parse_libgtk_only
gdk_parse_args
gdk_set_program_class
@@ -738,6 +738,8 @@ gdk_window_get_device_events
gdk_window_set_device_cursor
gdk_window_get_device_cursor
gdk_window_get_device_position
gdk_window_set_source_events
gdk_window_get_source_events
#endif
#endif

View File

@@ -26,6 +26,7 @@
#include "gdkinternals.h"
#include "gdkscreen.h"
#include "gdkintl.h"
#include "gdkalias.h"
static void gdk_app_launch_context_finalize (GObject *object);
@@ -286,3 +287,6 @@ gdk_app_launch_context_new (void)
{
return g_object_new (GDK_TYPE_APP_LAUNCH_CONTEXT, NULL);
}
#define __GDK_APP_LAUNCH_CONTEXT_C__
#include "gdkaliasdef.c"

View File

@@ -20,7 +20,7 @@
#include "gdkcairo.h"
#include "gdkdrawable.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/**
* gdk_cairo_create:
@@ -287,3 +287,7 @@ gdk_cairo_set_source_pixmap (cairo_t *cr,
cairo_set_source_surface (cr, surface, pixmap_x, pixmap_y);
cairo_surface_destroy (surface);
}
#define __GDK_CAIRO_C__
#include "gdkaliasdef.c"

View File

@@ -30,6 +30,7 @@
#include "gdkscreen.h"
#include "gdkcolor.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/**
@@ -246,3 +247,6 @@ gdk_colormap_get_system (void)
{
return gdk_screen_get_system_colormap (gdk_screen_get_default ());
}
#define __GDK_COLOR_C__
#include "gdkaliasdef.c"

View File

@@ -28,7 +28,7 @@
#include "gdkcursor.h"
#include "gdkdisplay.h"
#include "gdkinternals.h"
#include "gdkalias.h"
GType
gdk_cursor_get_type (void)
@@ -97,3 +97,6 @@ gdk_cursor_new (GdkCursorType cursor_type)
{
return gdk_cursor_new_for_display (gdk_display_get_default(), cursor_type);
}
#define __GDK_CURSOR_C__
#include "gdkaliasdef.c"

View File

@@ -22,7 +22,7 @@
#include "gdkdeviceprivate.h"
#include "gdkintl.h"
#include "gdkinternals.h"
#include "gdkalias.h"
typedef struct _GdkAxisInfo GdkAxisInfo;
@@ -1394,3 +1394,6 @@ _gdk_device_translate_axis (GdkDevice *device,
return TRUE;
}
#define __GDK_DEVICE_C__
#include "gdkaliasdef.c"

View File

@@ -66,6 +66,7 @@ typedef enum
* of a stylus on a graphics tablet.
* @GDK_SOURCE_CURSOR: the device is a graphics tablet "puck" or similar device.
* @GDK_SOURCE_KEYBOARD: the device is a keyboard.
* @GDK_SOURCE_TOUCH: the device is a (multi)touch capable device.
*
* An enumeration describing the type of an input device in general terms.
*/
@@ -75,7 +76,8 @@ typedef enum
GDK_SOURCE_PEN,
GDK_SOURCE_ERASER,
GDK_SOURCE_CURSOR,
GDK_SOURCE_KEYBOARD
GDK_SOURCE_KEYBOARD,
GDK_SOURCE_TOUCH
} GdkInputSource;
/**

View File

@@ -21,7 +21,7 @@
#include "gdkdevicemanager.h"
#include "gdkintl.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/**
* SECTION:gdkdevicemanager
@@ -34,12 +34,13 @@
* additional features such as sub-pixel positioning information and additional
* device-dependent information.
* @Title: GdkDeviceManager
* @See_also: #GdkDevice, #GdkEvent, gdk_enable_multidevice()
* @See_also: #GdkDevice, #GdkEvent, gdk_disable_multidevice()
*
* By default, GDK supports the traditional single keyboard/pointer input scheme (Plus additional
* special input devices such as tablets. In short, backwards compatible with 2.X). Since version 3.0,
* if gdk_enable_multidevice() is called before gdk_display_open() and the platform supports it, GDK
* will be aware of multiple keyboard/pointer pairs interacting simultaneously with the user interface.
* By default, and if the platform supports it, GDK is aware of multiple keyboard/pointer pairs
* and multitouch devices, this behavior can be changed by calling gdk_disable_multidevice()
* before gdk_display_open(), although there would be rarely a reason to do that. For a widget
* or window to be dealt as multipointer aware, gdk_window_set_support_multidevice() or
* gtk_widget_set_support_multidevice() must have been called on it.
*
* Conceptually, in multidevice mode there are 2 device types, virtual devices (or master devices)
* are represented by the pointer cursors and keyboard foci that are seen on the screen. physical
@@ -320,3 +321,7 @@ gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager)
return GDK_DEVICE_MANAGER_GET_CLASS (device_manager)->get_client_pointer (device_manager);
}
#define __GDK_DEVICE_MANAGER_C__
#include "gdkaliasdef.c"

View File

@@ -30,7 +30,7 @@
#include "gdkinternals.h"
#include "gdkmarshalers.h"
#include "gdkscreen.h"
#include "gdkalias.h"
enum {
OPENED,
@@ -1250,6 +1250,7 @@ _gdk_display_add_device_grab (GdkDisplay *display,
static void
synthesize_crossing_events (GdkDisplay *display,
GdkDevice *device,
GdkDevice *source_device,
GdkWindow *src_window,
GdkWindow *dest_window,
GdkCrossingMode crossing_mode,
@@ -1285,7 +1286,7 @@ synthesize_crossing_events (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
src_window,
dest_window,
device,
device, source_device,
crossing_mode,
x, y, state,
time,
@@ -1299,7 +1300,7 @@ synthesize_crossing_events (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
src_window,
NULL,
device,
device, source_device,
crossing_mode,
x, y, state,
time,
@@ -1314,7 +1315,7 @@ synthesize_crossing_events (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
src_window,
NULL,
device,
device, source_device,
crossing_mode,
x, y, state,
time,
@@ -1325,7 +1326,7 @@ synthesize_crossing_events (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
NULL,
dest_window,
device,
device, source_device,
crossing_mode,
x, y, state,
time,
@@ -1362,6 +1363,7 @@ get_current_toplevel (GdkDisplay *display,
static void
switch_to_pointer_grab (GdkDisplay *display,
GdkDevice *device,
GdkDevice *source_device,
GdkDeviceGrabInfo *grab,
GdkDeviceGrabInfo *last_grab,
guint32 time,
@@ -1397,7 +1399,7 @@ switch_to_pointer_grab (GdkDisplay *display,
src_window = info->window_under_pointer;
if (src_window != grab->window)
synthesize_crossing_events (display, device,
synthesize_crossing_events (display, device, source_device,
src_window, grab->window,
GDK_CROSSING_GRAB, time, serial);
@@ -1448,7 +1450,7 @@ switch_to_pointer_grab (GdkDisplay *display,
}
if (pointer_window != last_grab->window)
synthesize_crossing_events (display, device,
synthesize_crossing_events (display, device, source_device,
last_grab->window, pointer_window,
GDK_CROSSING_UNGRAB, time, serial);
@@ -1463,6 +1465,7 @@ switch_to_pointer_grab (GdkDisplay *display,
void
_gdk_display_device_grab_update (GdkDisplay *display,
GdkDevice *device,
GdkDevice *source_device,
gulong current_serial)
{
GdkDeviceGrabInfo *current_grab, *next_grab;
@@ -1487,7 +1490,7 @@ _gdk_display_device_grab_update (GdkDisplay *display,
if (!current_grab->activated)
{
if (device->source != GDK_SOURCE_KEYBOARD)
switch_to_pointer_grab (display, device, current_grab, NULL, time, current_serial);
switch_to_pointer_grab (display, device, source_device, current_grab, NULL, time, current_serial);
}
break;
@@ -1515,7 +1518,7 @@ _gdk_display_device_grab_update (GdkDisplay *display,
g_hash_table_insert (display->device_grabs, device, grabs);
if (device->source != GDK_SOURCE_KEYBOARD)
switch_to_pointer_grab (display, device,
switch_to_pointer_grab (display, device, source_device,
next_grab, current_grab,
time, current_serial);
@@ -1813,3 +1816,6 @@ gdk_display_get_device_manager (GdkDisplay *display)
return display->device_manager;
}
#define __GDK_DISPLAY_C__
#include "gdkaliasdef.c"

View File

@@ -35,6 +35,7 @@
#include "gdkintl.h"
#include "gdkalias.h"
struct _GdkDisplayManager
{
@@ -258,3 +259,6 @@ gdk_display_manager_list_displays (GdkDisplayManager *display_manager)
{
return g_slist_copy (_gdk_displays);
}
#define __GDK_DISPLAY_MANAGER_C__
#include "gdkaliasdef.c"

View File

@@ -28,7 +28,7 @@
#include <gdkdnd.h>
#include <gdkdrawable.h>
#include <gdkdisplay.h>
#include "gdkalias.h"
/**
* SECTION:dnd
@@ -183,3 +183,6 @@ gdk_drag_context_get_source_window (GdkDragContext *context)
return context->source_window;
}
#define __GDK_DND_C__
#include "gdkaliasdef.c"

View File

@@ -34,7 +34,7 @@
#include "gdkwindow.h"
#include "gdkscreen.h"
#include "gdkpixbuf.h"
#include "gdkalias.h"
static GdkImage* gdk_drawable_real_get_image (GdkDrawable *drawable,
gint x,
@@ -1730,3 +1730,7 @@ _gdk_drawable_create_cairo_surface (GdkDrawable *drawable,
return GDK_DRAWABLE_GET_CLASS (drawable)->create_cairo_surface (drawable,
width, height);
}
#define __GDK_DRAW_C__
#include "gdkaliasdef.c"

View File

@@ -1,6 +1,7 @@
/*** BEGIN file-header ***/
#define GDK_ENABLE_BROKEN
#include "gdk.h"
#include "gdkalias.h"
/*** END file-header ***/
@@ -32,5 +33,6 @@ GType
/*** END value-tail ***/
/*** BEGIN file-tail ***/
/**/
#define __GDK_ENUM_TYPES_C__
#include "gdkaliasdef.c"
/*** END file-tail ***/

View File

@@ -30,7 +30,7 @@
#include "gdk.h"
#include "gdkinternals.h"
#include "gdkalias.h"
typedef struct _GdkIOClosure GdkIOClosure;
@@ -1053,6 +1053,66 @@ gdk_event_get_device (const GdkEvent *event)
}
}
/**
* gdk_event_set_source_device:
* @event: a #GdkEvent
* @device: a #GdkDevice
*
* Sets the slave device for @event to @device. The event
* must have been allocated by GTK+, for instance, by
* gdk_event_copy().
*
* Since: 3.0
**/
void
gdk_event_set_source_device (GdkEvent *event,
GdkDevice *device)
{
GdkEventPrivate *private;
g_return_if_fail (gdk_event_is_allocated (event));
g_return_if_fail (GDK_IS_DEVICE (device));
private = (GdkEventPrivate *) event;
private->source_device = device;
}
/**
* gdk_event_get_source_device:
* @event: a #GdkEvent
*
* This function returns the hardware (slave) #GdkDevice that has triggered the event,
* falling back to the virtual (master) device (as in gdk_event_get_device()) if the
* event wasn't caused by interaction with a hardware device. This may happen for
* example in synthesized crossing events after a #GdkWindow updates its geometry or
* a grab is acquired/released.
*
* If the event does not contain device field, this function will return %NULL.
*
* Returns: a #GdkDevice, or %NULL.
*
* Since: 3.0
**/
GdkDevice *
gdk_event_get_source_device (const GdkEvent *event)
{
GdkEventPrivate *private;
g_return_val_if_fail (event != NULL, NULL);
if (!gdk_event_is_allocated (event))
return NULL;
private = (GdkEventPrivate *) event;
if (private->source_device)
return private->source_device;
/* Fallback to event device */
return gdk_event_get_device (event);
}
/**
* gdk_event_request_motions:
* @event: a valid #GdkEvent
@@ -1541,3 +1601,6 @@ gdk_setting_get (const gchar *name,
{
return gdk_screen_get_setting (gdk_screen_get_default (), name, value);
}
#define __GDK_EVENTS_C__
#include "gdkaliasdef.c"

View File

@@ -543,6 +543,9 @@ gboolean gdk_event_get_axis (const GdkEvent *event,
void gdk_event_set_device (GdkEvent *event,
GdkDevice *device);
GdkDevice* gdk_event_get_device (const GdkEvent *event);
void gdk_event_set_source_device (GdkEvent *event,
GdkDevice *device);
GdkDevice* gdk_event_get_source_device (const GdkEvent *event);
void gdk_event_request_motions (const GdkEventMotion *event);
gboolean gdk_events_get_distance (GdkEvent *event1,

View File

@@ -33,7 +33,7 @@
#include "gdkpixmap.h"
#include "gdkrgb.h"
#include "gdkprivate.h"
#include "gdkalias.h"
static void gdk_gc_finalize (GObject *object);
@@ -1458,3 +1458,7 @@ _gdk_gc_update_context (GdkGC *gc,
}
}
#define __GDK_GC_C__
#include "gdkaliasdef.c"

View File

@@ -30,7 +30,7 @@
#include "gdktypes.h"
#include "gdkprivate.h"
#include "gdkalias.h"
guint _gdk_debug_flags = 0;
gint _gdk_error_code = 0;
@@ -40,7 +40,7 @@ gchar *_gdk_display_name = NULL;
gint _gdk_screen_number = -1;
gchar *_gdk_display_arg_name = NULL;
gboolean _gdk_native_windows = FALSE;
gboolean _gdk_enable_multidevice = FALSE;
gboolean _gdk_disable_multidevice = FALSE;
GSList *_gdk_displays = NULL;

View File

@@ -32,6 +32,7 @@
#include "gdkimage.h"
#include "gdkprivate.h"
#include "gdkinternals.h" /* For scratch_image code */
#include "gdkalias.h"
/**
* gdk_image_set_colormap:
@@ -564,3 +565,6 @@ gdk_image_new (GdkImageType type,
return _gdk_image_new_for_depth (gdk_visual_get_screen (visual), type,
visual, width, height, -1);
}
#define __GDK_IMAGE_C__
#include "gdkaliasdef.c"

View File

@@ -158,6 +158,7 @@ struct _GdkEventPrivate
GdkScreen *screen;
gpointer windowing_data;
GdkDevice *device;
GdkDevice *source_device;
};
/* Tracks information about the pointer grab on this display */
@@ -273,6 +274,9 @@ struct _GdkWindowObject
GList *devices_inside;
GHashTable *device_events;
GHashTable *source_event_masks;
gulong device_added_handler_id;
};
#define GDK_WINDOW_TYPE(d) (((GdkWindowObject*)(GDK_WINDOW (d)))->window_type)
@@ -286,7 +290,7 @@ extern GSList *_gdk_displays;
extern gchar *_gdk_display_name;
extern gint _gdk_screen_number;
extern gchar *_gdk_display_arg_name;
extern gboolean _gdk_enable_multidevice;
extern gboolean _gdk_disable_multidevice;
void _gdk_events_queue (GdkDisplay *display);
GdkEvent* _gdk_event_unqueue (GdkDisplay *display);
@@ -594,6 +598,7 @@ void _gdk_windowing_launch_failed (GAppLaunchContext *context,
void _gdk_display_device_grab_update (GdkDisplay *display,
GdkDevice *device,
GdkDevice *source_device,
gulong current_serial);
GdkDeviceGrabInfo *_gdk_display_get_last_device_grab (GdkDisplay *display,
GdkDevice *device);
@@ -659,6 +664,7 @@ void _gdk_synthesize_crossing_events (GdkDisplay *display,
GdkWindow *src,
GdkWindow *dest,
GdkDevice *device,
GdkDevice *source_device,
GdkCrossingMode mode,
gint toplevel_x,
gint toplevel_y,

View File

@@ -31,6 +31,7 @@
#include "gdkkeysyms.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/* Key handling not part of the keymap */
@@ -100,3 +101,6 @@ gdk_keyval_from_name (const gchar *keyval_name)
else
return GDK_VoidSymbol;
}
#define __GDK_KEYNAMES_C__
#include "gdkaliasdef.c"

View File

@@ -28,7 +28,7 @@
#include "gdkdisplay.h"
#include "gdkkeys.h"
#include "gdkalias.h"
enum {
DIRECTION_CHANGED,
@@ -311,3 +311,6 @@ gdk_keymap_get_default (void)
{
return gdk_keymap_get_for_display (gdk_display_get_default ());
}
#define __GDK_KEYS_C__
#include "gdkaliasdef.c"

View File

@@ -26,7 +26,7 @@
#include "config.h"
#include "gdk.h"
#include "gdkalias.h"
/* Thanks to Markus G. Kuhn <mkuhn@acm.org> for the ksysym<->Unicode
* mapping functions, from the xterm sources.
@@ -1695,3 +1695,6 @@ gdk_unicode_to_keyval (guint32 wc)
*/
return wc | 0x01000000;
}
#define __GDK_KEYUNI_C__
#include "gdkaliasdef.c"

View File

@@ -37,7 +37,7 @@
#include "gdkgc.h"
#include "gdkcolor.h"
#include "gdkcursor.h"
#include "gdkalias.h"
/* LIMITATIONS:
*
@@ -1228,3 +1228,6 @@ gdk_offscreen_window_impl_iface_init (GdkWindowImplIface *iface)
iface->get_device_state = gdk_offscreen_window_get_device_state;
iface->destroy = gdk_offscreen_window_destroy;
}
#define __GDK_OFFSCREEN_WINDOW_C__
#include "gdkaliasdef.c"

View File

@@ -29,7 +29,7 @@
#include "gdkprivate.h"
#include "gdkscreen.h"
#include "gdkintl.h"
#include "gdkalias.h"
#define GDK_INFO_KEY "gdk-info"
@@ -1478,3 +1478,6 @@ gdk_pango_context_get_for_screen (GdkScreen *screen)
return context;
}
#define __GDK_PANGO_C__
#include "gdkaliasdef.c"

View File

@@ -34,7 +34,7 @@
#include "gdkpixbuf.h"
#include "gdkpixmap.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/* Some convenient names
*/
@@ -1413,3 +1413,6 @@ gdk_pixbuf_get_from_image (GdkPixbuf *dest,
return dest;
}
#define __GDK_PIXBUF_DRAWABLE_C__
#include "gdkaliasdef.c"

View File

@@ -26,7 +26,9 @@
#include "gdkpixbuf.h"
#include "gdkscreen.h"
#include "gdkinternals.h"
#include "gdkalias.h"
/**
* gdk_pixbuf_render_threshold_alpha:
@@ -251,3 +253,7 @@ gdk_pixbuf_render_pixmap_and_mask_for_colormap (GdkPixbuf *pixbuf,
*mask_return = NULL;
}
}
#define __GDK_PIXBUF_RENDER_C__
#include "gdkaliasdef.c"

View File

@@ -29,7 +29,7 @@
#include "gdkinternals.h"
#include "gdkpixbuf.h"
#include "gdkscreen.h"
#include "gdkalias.h"
static GdkGC *gdk_pixmap_create_gc (GdkDrawable *drawable,
GdkGCValues *values,
@@ -774,3 +774,6 @@ gdk_pixmap_real_get_screen (GdkDrawable *drawable)
{
return gdk_drawable_get_screen (GDK_PIXMAP_OBJECT (drawable)->impl);
}
#define __GDK_PIXMAP_C__
#include "gdkaliasdef.c"

View File

@@ -26,7 +26,7 @@
#include "config.h"
#include <gdk/gdk.h>
#include "gdkalias.h"
/**
* gdk_rectangle_union:
@@ -132,3 +132,7 @@ gdk_rectangle_get_type (void)
(GBoxedFreeFunc)g_free);
return our_type;
}
#define __GDK_RECTANGLE_C__
#include "gdkaliasdef.c"

View File

@@ -40,6 +40,7 @@
#include "gdkrgb.h"
#include "gdkscreen.h"
#include "gdkalias.h"
#include <glib/gprintf.h>
typedef struct _GdkRgbInfo GdkRgbInfo;
@@ -3709,3 +3710,6 @@ gdk_rgb_get_visual (void)
{
return gdk_screen_get_rgb_visual (gdk_screen_get_default ());
}
#define __GDK_RGB_C__
#include "gdkaliasdef.c"

View File

@@ -27,7 +27,7 @@
#include "gdkwindow.h"
#include "gdkscreen.h"
#include "gdkintl.h"
#include "gdkalias.h"
static void gdk_screen_dispose (GObject *object);
static void gdk_screen_finalize (GObject *object);
@@ -540,3 +540,6 @@ gdk_screen_set_property (GObject *object,
break;
}
}
#define __GDK_SCREEN_C__
#include "gdkaliasdef.c"

View File

@@ -28,7 +28,7 @@
#include "gdkproperty.h"
#include "gdkdisplay.h"
#include "gdkselection.h"
#include "gdkalias.h"
gboolean
gdk_selection_owner_set (GdkWindow *owner,
@@ -134,3 +134,6 @@ gdk_utf8_to_compound_text (const gchar *str,
str, encoding, format,
ctext, length);
}
#define __GDK_SELECTION_C__
#include "gdkaliasdef.c"

View File

@@ -24,7 +24,7 @@
#include "config.h"
#include "gdkvisual.h"
#include "gdkscreen.h"
#include "gdkalias.h"
/**
* gdk_list_visuals:
@@ -248,3 +248,6 @@ gdk_visual_get_blue_pixel_details (GdkVisual *visual,
if (precision)
*precision = visual->blue_prec;
}
#define __GDK_VISUAL_C__
#include "gdkaliasdef.c"

View File

@@ -45,6 +45,8 @@
#include "gdkscreen.h"
#include "gdkwindowimpl.h"
#include "gdkalias.h"
#undef DEBUG_WINDOW_PRINTING
@@ -700,6 +702,9 @@ gdk_window_finalize (GObject *object)
if (obj->device_events)
g_hash_table_destroy (obj->device_events);
if (obj->source_event_masks)
g_hash_table_destroy (obj->source_event_masks);
if (obj->devices_inside)
g_list_free (obj->devices_inside);
@@ -8477,7 +8482,7 @@ gdk_window_set_device_cursor (GdkWindow *window,
if (!cursor)
g_hash_table_remove (private->device_cursor, device);
else
g_hash_table_replace (private->device_cursor, device, gdk_cursor_ref (cursor));
g_hash_table_replace (private->device_cursor, device, cursor);
if (!GDK_WINDOW_DESTROYED (window))
{
@@ -10075,6 +10080,7 @@ gdk_window_set_support_multidevice (GdkWindow *window,
gboolean support_multidevice)
{
GdkWindowObject *private = (GdkWindowObject *) window;
GdkEventMask event_mask = 0;
g_return_if_fail (GDK_IS_WINDOW (window));
@@ -10086,6 +10092,12 @@ gdk_window_set_support_multidevice (GdkWindow *window,
private->support_multidevice = support_multidevice;
if (support_multidevice)
event_mask = gdk_window_get_events (window);
/* Enable events for slave touchscreen devices */
gdk_window_set_source_events (window, GDK_SOURCE_TOUCH, event_mask);
/* FIXME: What to do if called when some pointers are inside the window ? */
}
@@ -10343,6 +10355,7 @@ send_crossing_event (GdkDisplay *display,
GdkNotifyType notify_type,
GdkWindow *subwindow,
GdkDevice *device,
GdkDevice *source_device,
gint toplevel_x,
gint toplevel_y,
GdkModifierType mask,
@@ -10402,6 +10415,10 @@ send_crossing_event (GdkDisplay *display,
{
event = _gdk_make_event ((GdkWindow *)window, type, event_in_queue, TRUE);
gdk_event_set_device (event, device);
if (source_device)
gdk_event_set_source_device (event, source_device);
event->crossing.time = time_;
event->crossing.subwindow = subwindow;
if (subwindow)
@@ -10429,6 +10446,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
GdkWindow *src,
GdkWindow *dest,
GdkDevice *device,
GdkDevice *source_device,
GdkCrossingMode mode,
gint toplevel_x,
gint toplevel_y,
@@ -10484,7 +10502,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
a, GDK_LEAVE_NOTIFY,
mode,
notify_type,
NULL, device,
NULL, device, source_device,
toplevel_x, toplevel_y,
mask, time_,
event_in_queue,
@@ -10506,7 +10524,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
mode,
notify_type,
(GdkWindow *)last,
device,
device, source_device,
toplevel_x, toplevel_y,
mask, time_,
event_in_queue,
@@ -10553,7 +10571,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
mode,
notify_type,
(GdkWindow *)next,
device,
device, source_device,
toplevel_x, toplevel_y,
mask, time_,
event_in_queue,
@@ -10575,7 +10593,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
mode,
notify_type,
NULL,
device,
device, source_device,
toplevel_x, toplevel_y,
mask, time_,
event_in_queue,
@@ -10909,6 +10927,123 @@ gdk_window_geometry_changed (GdkWindow *window)
_gdk_synthesize_crossing_events_for_geometry_change (window);
}
static void
source_events_device_added (GdkDeviceManager *device_manager,
GdkDevice *device,
gpointer user_data)
{
GdkWindow *window;
GdkWindowObject *private;
GdkEventMask event_mask;
GdkInputSource source;
if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_FLOATING)
return;
window = user_data;
private = (GdkWindowObject *) window;
source = gdk_device_get_source (device);
event_mask = GPOINTER_TO_UINT (g_hash_table_lookup (private->source_event_masks,
GUINT_TO_POINTER (source)));
if (event_mask)
{
gdk_window_set_device_events (window, device, event_mask);
gdk_device_set_mode (device, GDK_MODE_SCREEN);
}
}
/**
* gdk_window_set_source_events:
* @window: a #GdkWindow
* @source: a #GdkInputSource to define the source class.
* @event_mask: event mask for @window
*
* Sets the event mask for any floating device (i.e. not attached to any
* visible pointer) that has the source defined as @source. This event
* mask will be applied both to currently existing and newly added devices
* after this call.
**/
void
gdk_window_set_source_events (GdkWindow *window,
GdkInputSource source,
GdkEventMask event_mask)
{
GdkDeviceManager *device_manager;
GdkWindowObject *private;
GdkDisplay *display;
GList *devices, *d;
guint size;
g_return_if_fail (GDK_IS_WINDOW (window));
display = gdk_drawable_get_display (GDK_DRAWABLE (window));
device_manager = gdk_display_get_device_manager (display);
private = (GdkWindowObject *) window;
devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING);
/* Set event mask for existing devices */
for (d = devices; d; d = d->next)
{
GdkDevice *device = d->data;
if (source == gdk_device_get_source (device))
{
gdk_window_set_device_events (window, device, event_mask);
gdk_device_set_mode (device, GDK_MODE_SCREEN);
}
}
/* Update accounting */
if (G_UNLIKELY (!private->source_event_masks))
private->source_event_masks = g_hash_table_new (NULL, NULL);
if (event_mask)
g_hash_table_insert (private->source_event_masks,
GUINT_TO_POINTER (source),
GUINT_TO_POINTER (event_mask));
else
g_hash_table_remove (private->source_event_masks,
GUINT_TO_POINTER (source));
size = g_hash_table_size (private->source_event_masks);
/* Update handler if needed */
if (!private->device_added_handler_id && size > 0)
{
private->device_added_handler_id =
g_signal_connect (device_manager, "device-added",
G_CALLBACK (source_events_device_added), window);
}
else if (private->device_added_handler_id && size == 0)
g_signal_handler_disconnect (device_manager, private->device_added_handler_id);
}
/**
* gdk_window_get_source_events:
* @window: a #GdkWindow
* @source: a #GdkInputSource to define the source class.
*
* Returns the event mask for @window corresponding to the device class specified
* by @source.
*
* Returns: source event mask for @window
**/
GdkEventMask
gdk_window_get_source_events (GdkWindow *window,
GdkInputSource source)
{
GdkWindowObject *private;
g_return_val_if_fail (GDK_IS_WINDOW (window), 0);
private = (GdkWindowObject *) window;
return GPOINTER_TO_UINT (g_hash_table_lookup (private->source_event_masks,
GUINT_TO_POINTER (source)));
}
static gboolean
do_synthesize_crossing_event (gpointer data)
{
@@ -10950,7 +11085,7 @@ do_synthesize_crossing_event (gpointer data)
_gdk_synthesize_crossing_events (display,
pointer_info->window_under_pointer,
new_window_under_pointer,
device,
device, NULL,
GDK_CROSSING_NORMAL,
pointer_info->toplevel_x,
pointer_info->toplevel_y,
@@ -11070,7 +11205,7 @@ proxy_pointer_event (GdkDisplay *display,
GdkWindow *toplevel_window, *event_window;
GdkWindow *pointer_window;
GdkPointerWindowInfo *pointer_info;
GdkDevice *device;
GdkDevice *device, *source_device;
GdkEvent *event;
guint state;
gdouble toplevel_x, toplevel_y;
@@ -11082,6 +11217,7 @@ proxy_pointer_event (GdkDisplay *display,
gdk_event_get_state (source_event, &state);
time_ = gdk_event_get_time (source_event);
device = gdk_event_get_device (source_event);
source_device = gdk_event_get_source_device (source_event);
pointer_info = _gdk_display_get_pointer_info (display, device);
toplevel_window = convert_native_coords_to_toplevel (event_window,
toplevel_x, toplevel_y,
@@ -11115,7 +11251,7 @@ proxy_pointer_event (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
pointer_info->window_under_pointer,
event_window,
device,
device, source_device,
source_event->crossing.mode,
toplevel_x, toplevel_y,
state, time_,
@@ -11131,7 +11267,7 @@ proxy_pointer_event (GdkDisplay *display,
source_event->crossing.mode,
source_event->crossing.detail,
NULL,
device,
device, source_device,
toplevel_x, toplevel_y,
state, time_,
source_event,
@@ -11161,7 +11297,7 @@ proxy_pointer_event (GdkDisplay *display,
source_event->crossing.mode,
source_event->crossing.detail,
NULL,
device,
device, source_device,
toplevel_x, toplevel_y,
state, time_,
source_event,
@@ -11171,7 +11307,7 @@ proxy_pointer_event (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
event_window,
pointer_window,
device,
device, source_device,
source_event->crossing.mode,
toplevel_x, toplevel_y,
state, time_,
@@ -11190,7 +11326,7 @@ proxy_pointer_event (GdkDisplay *display,
_gdk_synthesize_crossing_events (display,
pointer_info->window_under_pointer,
pointer_window,
device,
device, source_device,
GDK_CROSSING_NORMAL,
toplevel_x, toplevel_y,
state, time_,
@@ -11280,7 +11416,7 @@ proxy_button_event (GdkEvent *source_event,
gdouble toplevel_x, toplevel_y;
GdkDisplay *display;
GdkWindowObject *w;
GdkDevice *device;
GdkDevice *device, *source_device;
type = source_event->any.type;
event_window = source_event->any.window;
@@ -11288,6 +11424,7 @@ proxy_button_event (GdkEvent *source_event,
gdk_event_get_state (source_event, &state);
time_ = gdk_event_get_time (source_event);
device = gdk_event_get_device (source_event);
source_device = gdk_event_get_source_device (source_event);
display = gdk_drawable_get_display (source_event->any.window);
toplevel_window = convert_native_coords_to_toplevel (event_window,
toplevel_x, toplevel_y,
@@ -11324,7 +11461,7 @@ proxy_button_event (GdkEvent *source_event,
serial,
time_,
TRUE);
_gdk_display_device_grab_update (display, device, serial);
_gdk_display_device_grab_update (display, device, source_device, serial);
}
pointer_window = get_pointer_window (display, toplevel_window, device,
@@ -11471,20 +11608,21 @@ _gdk_windowing_got_event (GdkDisplay *display,
guint old_state, old_button;
GdkDeviceGrabInfo *button_release_grab;
GdkPointerWindowInfo *pointer_info;
GdkDevice *device;
GdkDevice *device, *source_device;
gboolean is_toplevel;
if (gdk_event_get_time (event) != GDK_CURRENT_TIME)
display->last_event_time = gdk_event_get_time (event);
device = gdk_event_get_device (event);
source_device = gdk_event_get_source_device (event);
if (device)
{
GdkInputMode mode;
g_object_get (device, "input-mode", &mode, NULL);
_gdk_display_device_grab_update (display, device, serial);
_gdk_display_device_grab_update (display, device, source_device, serial);
if (mode == GDK_MODE_DISABLED ||
!_gdk_display_check_grab_ownership (display, device, serial))
@@ -11530,7 +11668,7 @@ _gdk_windowing_got_event (GdkDisplay *display,
serial,
gdk_event_get_time (event),
TRUE);
_gdk_display_device_grab_update (display, device, serial);
_gdk_display_device_grab_update (display, device, source_device, serial);
}
if (event->type == GDK_BUTTON_RELEASE &&
!event->any.send_event)
@@ -11543,7 +11681,7 @@ _gdk_windowing_got_event (GdkDisplay *display,
{
button_release_grab->serial_end = serial;
button_release_grab->implicit_ungrab = FALSE;
_gdk_display_device_grab_update (display, device, serial);
_gdk_display_device_grab_update (display, device, source_device, serial);
}
}
@@ -11665,7 +11803,7 @@ _gdk_windowing_got_event (GdkDisplay *display,
{
button_release_grab->serial_end = serial;
button_release_grab->implicit_ungrab = FALSE;
_gdk_display_device_grab_update (display, device, serial);
_gdk_display_device_grab_update (display, device, source_device, serial);
}
}
@@ -11760,3 +11898,7 @@ _gdk_window_get_input_window_for_event (GdkWindow *native_window,
return event_win;
}
#define __GDK_WINDOW_C__
#include "gdkaliasdef.c"

View File

@@ -779,6 +779,12 @@ void gdk_window_set_device_events (GdkWindow *window,
GdkEventMask gdk_window_get_device_events (GdkWindow *window,
GdkDevice *device);
void gdk_window_set_source_events (GdkWindow *window,
GdkInputSource source,
GdkEventMask event_mask);
GdkEventMask gdk_window_get_source_events (GdkWindow *window,
GdkInputSource source);
void gdk_window_set_icon_list (GdkWindow *window,
GList *pixbufs);
void gdk_window_set_icon (GdkWindow *window,

View File

@@ -28,6 +28,7 @@
#include "gdkwindowimpl.h"
#include "gdkinternals.h"
#include "gdkalias.h"
GType
gdk_window_impl_get_type (void)
@@ -45,3 +46,7 @@ gdk_window_impl_get_type (void)
return gtype;
}
#define __GDK_WINDOW_IMPL_C__
#include "gdkaliasdef.c"

View File

@@ -51,6 +51,8 @@ gdk-win32-backend :
all: \
..\config.h \
gdkconfig.h \
gdkalias.h \
gdkaliasdef.c \
gdkenumtypes.h \
gdkenumtypes.c \
gdkmarshalers.h \
@@ -136,6 +138,12 @@ gdkenumtypes.c: $(gdk_public_h_sources) gdkenumtypes.c.template
gdkconfig.h : gdkconfig.h.win32
copy gdkconfig.h.win32 gdkconfig.h
gdkalias.h: gdk.symbols
perl makegdkalias.pl < gdk.symbols > gdkalias.h
gdkaliasdef.c: gdk.symbols
perl makegdkalias.pl -def < gdk.symbols > gdkaliasdef.c
gdk.def: gdk.symbols
echo EXPORTS > gdk.def
cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DGDK_WINDOWING_WIN32 -DALL_FILES \

136
gdk/makegdkalias.pl Executable file
View File

@@ -0,0 +1,136 @@
#!/usr/bin/perl -w
my $do_def = 0;
if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) {
shift;
$do_def = 1;
}
print <<EOF;
/* Generated by makegdkalias.pl */
#ifndef DISABLE_VISIBILITY
#include <glib.h>
#ifdef G_HAVE_GNUC_VISIBILITY
EOF
if ($do_def) {
print <<EOF
#undef IN_FILE
#define IN_FILE defined
#undef IN_HEADER
#define IN_HEADER(x) 1
EOF
}
else {
print <<EOF
#define IN_FILE(x) 1
#define IN_HEADER defined
EOF
}
my $in_comment = 0;
my $in_skipped_section = 0;
while (<>) {
# ignore empty lines
next if /^\s*$/;
# skip comments
if ($_ =~ /^\s*\/\*/)
{
$in_comment = 1;
}
if ($in_comment)
{
if ($_ =~ /\*\/\s$/)
{
$in_comment = 0;
}
next;
}
# handle ifdefs
if ($_ =~ /^\#endif/)
{
if (!$in_skipped_section)
{
print $_;
}
$in_skipped_section = 0;
next;
}
if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
{
$in_skipped_section = 1;
}
if ($in_skipped_section)
{
next;
}
if ($_ =~ /^\#ifn?def/)
{
print $_;
next;
}
if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/)
{
print $_;
next;
}
chop;
my $str = $_;
my @words;
my $attributes = "";
@words = split(/ /, $str);
$str = shift(@words);
chomp($str);
my $alias = "IA__".$str;
# Drop any Win32 specific .def file syntax, but keep attributes
foreach $word (@words) {
$attributes = "$attributes $word" unless $word eq "PRIVATE";
}
if (!$do_def) {
print <<EOF
extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes;
\#define $str $alias
EOF
}
else {
print <<EOF
\#undef $str
extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
EOF
}
}
print <<EOF;
#endif /* G_HAVE_GNUC_VISIBILITY */
#endif /* DISABLE_VISIBILITY */
EOF

17
gdk/pltcheck.sh Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/sh
LANG=C
status=0
if ! which readelf 2>/dev/null >/dev/null; then
echo "'readelf' not found; skipping test"
exit 0
fi
for so in .libs/lib*.so; do
echo Checking $so for local PLT entries
readelf -r $so | grep 'JU\?MP_SLOT' | grep -v 'gdk_pixbuf' | grep gdk && status=1
done
exit $status

View File

@@ -512,14 +512,14 @@ generic_draw (GdkDrawable *drawable,
const GdkGCValuesMask blitting_mask = 0;
GdkGCValuesMask drawing_mask = GDK_GC_FOREGROUND;
gint ts_x_origin = 0, ts_y_origin = 0;
cairo_rectangle_int_t region_extents;
cairo_region_get_extents (region, &region_extents);
gint width = region->extents.x2 - region->extents.x1;
gint height = region->extents.y2 - region->extents.y1;
GdkPixmap *mask_pixmap =
gdk_pixmap_new (drawable, region_extents.width, region_extents.height, 1);
gdk_pixmap_new (drawable, width, height, 1);
GdkPixmap *tile_pixmap =
gdk_pixmap_new (drawable, region_extents.width, region_extents.height, -1);
gdk_pixmap_new (drawable, width, height, -1);
GdkPixmap *stipple_bitmap = NULL;
GdkColor fg;
@@ -542,13 +542,13 @@ generic_draw (GdkDrawable *drawable,
if (gcwin32->values_mask & GDK_GC_TS_Y_ORIGIN)
ts_y_origin = gc->ts_y_origin;
ts_x_origin -= region_extents.x;
ts_y_origin -= region_extents.y;
ts_x_origin -= region->extents.x1;
ts_y_origin -= region->extents.y1;
/* Fill mask bitmap with zeros */
gdk_gc_set_function (mask_gc, GDK_CLEAR);
gdk_draw_rectangle (mask_pixmap, mask_gc, TRUE,
0, 0, region_extents.width, region_extents.height);
0, 0, width, height);
/* Paint into mask bitmap, drawing ones */
gdk_gc_set_function (mask_gc, GDK_COPY);
@@ -575,7 +575,7 @@ generic_draw (GdkDrawable *drawable,
mask_hdc = gdk_win32_hdc_get (mask_pixmap, mask_gc, drawing_mask);
(*function) (GDK_GC_WIN32 (mask_gc), mask_hdc,
region_extents.x, region_extents.y, args);
region->extents.x1, region->extents.y1, args);
gdk_win32_hdc_release (mask_pixmap, mask_gc, drawing_mask);
if (fill_style == GDK_TILED)
@@ -584,22 +584,21 @@ generic_draw (GdkDrawable *drawable,
draw_tiles (tile_pixmap, tile_gc, SRCCOPY,
_gdk_gc_get_tile (gc),
0, 0, ts_x_origin, ts_y_origin,
region_extents.width, region_extents.height);
width, height);
}
else
{
/* Tile with stipple */
GdkGC *stipple_gc;
stipple_bitmap =
gdk_pixmap_new (NULL, region_extents.width, region_extents.height, 1);
stipple_bitmap = gdk_pixmap_new (NULL, width, height, 1);
stipple_gc = gdk_gc_new (stipple_bitmap);
/* Tile stipple bitmap */
draw_tiles (stipple_bitmap, stipple_gc, SRCCOPY,
_gdk_gc_get_stipple (gc),
0, 0, ts_x_origin, ts_y_origin,
region_extents.width, region_extents.height);
width, height);
if (fill_style == GDK_OPAQUE_STIPPLED)
{
@@ -607,8 +606,7 @@ generic_draw (GdkDrawable *drawable,
fg.pixel = _gdk_gc_get_bg_pixel (gc);
gdk_gc_set_foreground (tile_gc, &fg);
gdk_draw_rectangle (tile_pixmap, tile_gc, TRUE,
0, 0,
region_extents.width, region_extents.height);
0, 0, width, height);
}
g_object_unref (stipple_gc);
}
@@ -664,18 +662,14 @@ generic_draw (GdkDrawable *drawable,
* Reading bottom-up: 11100010 = 0xE2. PSDK docs say this is
* known as DSPDxax, with hex value 0x00E20746.
*/
GDI_CALL (BitBlt, (tile_hdc, 0, 0,
region_extents.width, region_extents.height,
stipple_hdc, 0, 0,
ROP3_DSPDxax));
GDI_CALL (BitBlt, (tile_hdc, 0, 0, width, height,
stipple_hdc, 0, 0, ROP3_DSPDxax));
if (fill_style == GDK_STIPPLED)
{
/* Punch holes in mask where stipple is zero */
GDI_CALL (BitBlt, (mask_hdc, 0, 0,
region_extents.width, region_extents.height,
stipple_hdc, 0, 0,
SRCAND));
GDI_CALL (BitBlt, (mask_hdc, 0, 0, width, height,
stipple_hdc, 0, 0, SRCAND));
}
GDI_CALL (SelectObject, (tile_hdc, old_tile_brush));
@@ -689,8 +683,8 @@ generic_draw (GdkDrawable *drawable,
* the areas where mask is one. (It is filled with said pattern.)
*/
GDI_CALL (MaskBlt, (hdc, region_extents.x, region_extents.y,
region_extents.width, region_extents.height,
GDI_CALL (MaskBlt, (hdc, region->extents.x1, region->extents.y1,
width, height,
tile_hdc, 0, 0,
GDK_PIXMAP_HBITMAP (mask_pixmap), 0, 0,
MAKEROP4 (rop2_to_rop3 (gcwin32->rop2), ROP3_D)));

View File

@@ -543,9 +543,9 @@ gdk_win32_gc_set_dashes (GdkGC *gc,
}
void
_gdk_windowing_gc_set_clip_region (GdkGC *gc,
_gdk_windowing_gc_set_clip_region (GdkGC *gc,
const cairo_region_t *region,
gboolean reset_origin)
gboolean reset_origin)
{
GdkGCWin32 *win32_gc = GDK_GC_WIN32 (gc);
@@ -556,9 +556,9 @@ _gdk_windowing_gc_set_clip_region (GdkGC *gc,
{
GDK_NOTE (GC, g_print ("gdk_gc_set_clip_region: %p: %s\n",
win32_gc,
_gdk_win32_cairo_region_to_string (region)));
_gdk_win32_gdkregion_to_string (region)));
win32_gc->hcliprgn = _gdk_win32_cairo_region_to_hrgn (region, 0, 0);
win32_gc->hcliprgn = _gdk_win32_gdkregion_to_hrgn (region, 0, 0);
win32_gc->values_mask |= GDK_GC_CLIP_MASK;
}
else
@@ -1055,16 +1055,16 @@ _gdk_win32_bitmap_to_hrgn (GdkPixmap *pixmap)
}
HRGN
_gdk_win32_cairo_region_to_hrgn (const cairo_region_t *region,
gint x_origin,
gint y_origin)
_gdk_win32_gdkregion_to_hrgn (const cairo_region_t *region,
gint x_origin,
gint y_origin)
{
HRGN hrgn;
RGNDATA *rgndata;
RECT *rect;
cairo_rectangle_int_t cairo_rect;
guint nbytes = sizeof (RGNDATAHEADER)
+ (sizeof (RECT) * cairo_region_num_rectangles (region));
cairo_region_tBox *boxes = region->rects;
guint nbytes =
sizeof (RGNDATAHEADER) + (sizeof (RECT) * region->numRects);
int i;
rgndata = g_malloc (nbytes);
@@ -1074,15 +1074,14 @@ _gdk_win32_cairo_region_to_hrgn (const cairo_region_t *region,
SetRect (&rgndata->rdh.rcBound,
G_MAXLONG, G_MAXLONG, G_MINLONG, G_MINLONG);
for (i = 0; i < cairo_region_num_rectangles (region); i++)
for (i = 0; i < region->numRects; i++)
{
rect = ((RECT *) rgndata->Buffer) + rgndata->rdh.nCount++;
cairo_region_get_rectangle (region, i, &cairo_rect);
rect->left = cairo_rect.x + x_origin;
rect->right = cairo_rect.x + cairo_rect.width + x_origin;
rect->top = cairo_rect.y + y_origin;
rect->bottom = cairo_rect.y + cairo_rect.height + y_origin;
rect->left = boxes[i].x1 + x_origin;
rect->right = boxes[i].x2 + x_origin;
rect->top = boxes[i].y1 + y_origin;
rect->bottom = boxes[i].y2 + y_origin;
if (rect->left < rgndata->rdh.rcBound.left)
rgndata->rdh.rcBound.left = rect->left;

View File

@@ -282,7 +282,7 @@ gdk_window_post_scroll (GdkWindow *window,
{
GDK_NOTE (EVENTS,
g_print ("gdk_window_clip_changed: invalidating region: %s\n",
_gdk_win32_cairo_region_to_string (new_clip_region)));
_gdk_win32_gdkregion_to_string (new_clip_region)));
gdk_window_invalidate_region (window, new_clip_region, FALSE);
g_print ("gdk_window_post_scroll\n");

View File

@@ -517,6 +517,7 @@ _gdk_win32_gcvalues_mask_to_string (GdkGCValuesMask mask)
BIT (FOREGROUND);
BIT (BACKGROUND);
BIT (FONT);
BIT (FUNCTION);
BIT (FILL);
BIT (TILE);
@@ -1157,13 +1158,12 @@ _gdk_win32_gdkrectangle_to_string (const GdkRectangle *rect)
}
gchar *
_gdk_win32_cairo_region_to_string (const cairo_region_t *rgn)
_gdk_win32_gdkregion_to_string (const cairo_region_t *rgn)
{
cairo_rectangle_int_t extents;
cairo_region_get_extents (rgn, &extents);
return static_printf ("%dx%d@%+d%+d",
extents.width, extents.height,
extents.x, extents.y);
(rgn->extents.x2 - rgn->extents.x1),
(rgn->extents.y2 - rgn->extents.y1),
rgn->extents.x1, rgn->extents.y1);
}
gchar *

View File

@@ -267,9 +267,9 @@ COLORREF _gdk_win32_colormap_color (GdkColormap *colormap,
HRGN _gdk_win32_bitmap_to_hrgn (GdkPixmap *bitmap);
HRGN _gdk_win32_cairo_region_to_hrgn (const cairo_region_t *region,
gint x_origin,
gint y_origin);
HRGN _gdk_win32_gdkregion_to_hrgn (const cairo_region_t *region,
gint x_origin,
gint y_origin);
cairo_region_t *_gdk_win32_hrgn_to_region (HRGN hrgn);
@@ -321,7 +321,7 @@ gchar *_gdk_win32_data_to_string (const guchar*data,
gchar *_gdk_win32_rect_to_string (const RECT *rect);
gchar *_gdk_win32_gdkrectangle_to_string (const GdkRectangle *rect);
gchar *_gdk_win32_cairo_region_to_string (const cairo_region_t *box);
gchar *_gdk_win32_gdkregion_to_string (const cairo_region_t *box);
void _gdk_win32_print_event (const GdkEvent *event);

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