mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-11 13:10:07 +00:00
Merge branch 'master' into open-with-dialog
Conflicts: docs/reference/gtk/gtk3-sections.txt gtk/gtk.symbols
This commit is contained in:
commit
cb916f2746
47
NEWS
47
NEWS
@ -1,3 +1,50 @@
|
|||||||
|
Overview of Changes from GTK+ 2.91.4 to 2.91.5
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
* GtkSwitch: a new widget that provides switch-like on/off functionality
|
||||||
|
|
||||||
|
* Deprecations and cleanups:
|
||||||
|
- GtkCallbackMarshal and GtkFunction have been deprecated
|
||||||
|
- gtk_init_add has been removed
|
||||||
|
- The ::size-request signal has been removed
|
||||||
|
- GtkRuler has been removed
|
||||||
|
|
||||||
|
* The default value for the GtkBox::fill property has been changed
|
||||||
|
back to TRUE
|
||||||
|
|
||||||
|
* Bugs fixed:
|
||||||
|
613942 Deprecate GtkRuler, GtkVruler and GtkHRuler
|
||||||
|
629955 Deprecate / remove gtk_main and gtk_init_add / remove* API
|
||||||
|
633324 Stop invoking size-request completely
|
||||||
|
633896 Printing: Use XDG_DOCUMENTS_DIR as the default location...
|
||||||
|
634474 infinite loop in gtk_icon_view_accessible_set_adjustment
|
||||||
|
634558 Selecting "Search" should focus text box for keyboard entry
|
||||||
|
634592 GtkNotebook doesn't expand (in a typical GtkDialog)
|
||||||
|
634697 gdk: Add XSetting for "gtk-cursor-blink-timeout"
|
||||||
|
634821 Fix a BadMatch when create an icon pixmap for an ARGB visual
|
||||||
|
634987 add a switch widget
|
||||||
|
635175 Leak in gtk_plug_realize
|
||||||
|
635253 GtkRadioButton constructors don't mark group as "allow-none"
|
||||||
|
635307 iconcache: Ensure we don't lose data on power loss
|
||||||
|
635380 gdk_event_apply_filters is unsafe against changes in filter list
|
||||||
|
635588 clicking URL to be opened freezes the application for 3-5 seconds
|
||||||
|
635693 Bad pointer grab bug with GtkMenu/GtkComboBox
|
||||||
|
635879 Change the gdk_rgba_parse() function to be usable from bindings
|
||||||
|
|
||||||
|
* Updated translations:
|
||||||
|
Arabic
|
||||||
|
British English
|
||||||
|
Catalan
|
||||||
|
Czech
|
||||||
|
German
|
||||||
|
Hungarian
|
||||||
|
Indonesian
|
||||||
|
Norwegian bokmål
|
||||||
|
Romanian
|
||||||
|
Thai
|
||||||
|
Uyghur
|
||||||
|
|
||||||
|
|
||||||
Overview of Changes from GTK+ 2.91.3 to 2.91.4
|
Overview of Changes from GTK+ 2.91.3 to 2.91.4
|
||||||
==============================================
|
==============================================
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
m4_define([gtk_major_version], [2])
|
m4_define([gtk_major_version], [2])
|
||||||
m4_define([gtk_minor_version], [91])
|
m4_define([gtk_minor_version], [91])
|
||||||
m4_define([gtk_micro_version], [5])
|
m4_define([gtk_micro_version], [6])
|
||||||
m4_define([gtk_interface_age], [0])
|
m4_define([gtk_interface_age], [0])
|
||||||
m4_define([gtk_binary_age],
|
m4_define([gtk_binary_age],
|
||||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||||
@ -61,8 +61,8 @@ cflags_set=${CFLAGS+set}
|
|||||||
AM_INIT_AUTOMAKE([1.10 no-define -Wno-portability dist-bzip2])
|
AM_INIT_AUTOMAKE([1.10 no-define -Wno-portability dist-bzip2])
|
||||||
AM_MAINTAINER_MODE([enable])
|
AM_MAINTAINER_MODE([enable])
|
||||||
|
|
||||||
# Support silent build rules, requires at least automake-1.11. Enable
|
# Support silent build rules, requires at least automake-1.11. Disable
|
||||||
# by either passing --enable-silent-rules to configure or passing V=0
|
# by either passing --disable-silent-rules to configure or passing V=1
|
||||||
# to make
|
# to make
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
|
@ -437,7 +437,26 @@ do_combobox (GtkWidget *do_widget)
|
|||||||
|
|
||||||
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
|
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
|
||||||
gtk_container_add (GTK_CONTAINER (combo), entry);
|
gtk_container_add (GTK_CONTAINER (combo), entry);
|
||||||
|
|
||||||
|
/* A combobox with string IDs */
|
||||||
|
frame = gtk_frame_new ("String IDs");
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
|
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||||
|
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||||
|
|
||||||
|
combo = gtk_combo_box_text_new ();
|
||||||
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), "never", "Not visible");
|
||||||
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), "when-active", "Visible when active");
|
||||||
|
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), "always", "Always visible");
|
||||||
|
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||||
|
|
||||||
|
entry = gtk_entry_new ();
|
||||||
|
g_object_bind_property (combo, "active-id",
|
||||||
|
entry, "text",
|
||||||
|
G_BINDING_BIDIRECTIONAL);
|
||||||
|
gtk_container_add (GTK_CONTAINER (box), entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_widget_get_visible (window))
|
if (!gtk_widget_get_visible (window))
|
||||||
|
@ -322,7 +322,8 @@ HTML_IMAGES = \
|
|||||||
$(srcdir)/images/layout-tblr.png \
|
$(srcdir)/images/layout-tblr.png \
|
||||||
$(srcdir)/images/layout-tbrl.png \
|
$(srcdir)/images/layout-tbrl.png \
|
||||||
$(srcdir)/images/window-default.png \
|
$(srcdir)/images/window-default.png \
|
||||||
$(srcdir)/images/hello-world.png
|
$(srcdir)/images/hello-world.png \
|
||||||
|
$(srcdir)/images/switch.png
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-fixref
|
# Extra options to supply to gtkdoc-fixref
|
||||||
FIXXREF_OPTIONS=--extra-dir=../gdk/html \
|
FIXXREF_OPTIONS=--extra-dir=../gdk/html \
|
||||||
|
@ -97,6 +97,7 @@
|
|||||||
<xi:include href="xml/gtklinkbutton.xml" />
|
<xi:include href="xml/gtklinkbutton.xml" />
|
||||||
<xi:include href="xml/gtkscalebutton.xml" />
|
<xi:include href="xml/gtkscalebutton.xml" />
|
||||||
<xi:include href="xml/gtkvolumebutton.xml" />
|
<xi:include href="xml/gtkvolumebutton.xml" />
|
||||||
|
<xi:include href="xml/gtkswitch.xml" />
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="NumericEntry">
|
<chapter id="NumericEntry">
|
||||||
@ -287,13 +288,6 @@
|
|||||||
<xi:include href="xml/gtksocket.xml" />
|
<xi:include href="xml/gtksocket.xml" />
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="SpecialObjects">
|
|
||||||
<title>Special-purpose features</title>
|
|
||||||
<xi:include href="xml/gtkruler.xml" />
|
|
||||||
<xi:include href="xml/gtkhruler.xml" />
|
|
||||||
<xi:include href="xml/gtkvruler.xml" />
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="RecentDocuments">
|
<chapter id="RecentDocuments">
|
||||||
<title>Recently Used Documents</title>
|
<title>Recently Used Documents</title>
|
||||||
<xi:include href="xml/gtkrecentmanager.xml" />
|
<xi:include href="xml/gtkrecentmanager.xml" />
|
||||||
|
@ -371,6 +371,8 @@ gtk_assistant_add_action_widget
|
|||||||
gtk_assistant_remove_action_widget
|
gtk_assistant_remove_action_widget
|
||||||
gtk_assistant_update_buttons_state
|
gtk_assistant_update_buttons_state
|
||||||
gtk_assistant_commit
|
gtk_assistant_commit
|
||||||
|
gtk_assistant_next_page
|
||||||
|
gtk_assistant_previous_page
|
||||||
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GtkAssistantClass
|
GtkAssistantClass
|
||||||
@ -417,6 +419,7 @@ GTK_ASPECT_FRAME_CLASS
|
|||||||
GTK_IS_ASPECT_FRAME_CLASS
|
GTK_IS_ASPECT_FRAME_CLASS
|
||||||
GTK_ASPECT_FRAME_GET_CLASS
|
GTK_ASPECT_FRAME_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkAspectFramePrivate
|
||||||
gtk_aspect_frame_get_type
|
gtk_aspect_frame_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -437,6 +440,7 @@ GTK_BUTTON_BOX_CLASS
|
|||||||
GTK_IS_BUTTON_BOX_CLASS
|
GTK_IS_BUTTON_BOX_CLASS
|
||||||
GTK_BUTTON_BOX_GET_CLASS
|
GTK_BUTTON_BOX_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkButtonBoxPrivate
|
||||||
gtk_button_box_get_type
|
gtk_button_box_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -453,6 +457,7 @@ GTK_BIN_CLASS
|
|||||||
GTK_IS_BIN_CLASS
|
GTK_IS_BIN_CLASS
|
||||||
GTK_BIN_GET_CLASS
|
GTK_BIN_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkBinPrivate
|
||||||
gtk_bin_get_type
|
gtk_bin_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -478,6 +483,7 @@ GTK_BOX_CLASS
|
|||||||
GTK_IS_BOX_CLASS
|
GTK_IS_BOX_CLASS
|
||||||
GTK_BOX_GET_CLASS
|
GTK_BOX_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkBoxPrivate
|
||||||
gtk_box_get_type
|
gtk_box_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -663,6 +669,7 @@ GTK_CHECK_MENU_ITEM_CLASS
|
|||||||
GTK_IS_CHECK_MENU_ITEM_CLASS
|
GTK_IS_CHECK_MENU_ITEM_CLASS
|
||||||
GTK_CHECK_MENU_ITEM_GET_CLASS
|
GTK_CHECK_MENU_ITEM_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkCheckMenuItemPrivate
|
||||||
gtk_check_menu_item_get_type
|
gtk_check_menu_item_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -715,6 +722,7 @@ GTK_IS_HSV
|
|||||||
GTK_IS_HSV_CLASS
|
GTK_IS_HSV_CLASS
|
||||||
GTK_HSV_GET_CLASS
|
GTK_HSV_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkHSVPrivate
|
||||||
gtk_hsv_get_type
|
gtk_hsv_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -753,6 +761,7 @@ GTK_COLOR_SELECTION_CLASS
|
|||||||
GTK_IS_COLOR_SELECTION_CLASS
|
GTK_IS_COLOR_SELECTION_CLASS
|
||||||
GTK_COLOR_SELECTION_GET_CLASS
|
GTK_COLOR_SELECTION_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkColorSelectionPrivate
|
||||||
gtk_color_selection_get_type
|
gtk_color_selection_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -770,6 +779,7 @@ GTK_COLOR_SELECTION_DIALOG_CLASS
|
|||||||
GTK_IS_COLOR_SELECTION_DIALOG_CLASS
|
GTK_IS_COLOR_SELECTION_DIALOG_CLASS
|
||||||
GTK_COLOR_SELECTION_DIALOG_GET_CLASS
|
GTK_COLOR_SELECTION_DIALOG_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkColorSelectionDialogPrivate
|
||||||
gtk_color_selection_dialog_get_type
|
gtk_color_selection_dialog_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -791,6 +801,10 @@ gtk_combo_box_get_active
|
|||||||
gtk_combo_box_set_active
|
gtk_combo_box_set_active
|
||||||
gtk_combo_box_get_active_iter
|
gtk_combo_box_get_active_iter
|
||||||
gtk_combo_box_set_active_iter
|
gtk_combo_box_set_active_iter
|
||||||
|
gtk_combo_box_get_id_column
|
||||||
|
gtk_combo_box_set_id_column
|
||||||
|
gtk_combo_box_get_active_id
|
||||||
|
gtk_combo_box_set_active_id
|
||||||
gtk_combo_box_get_model
|
gtk_combo_box_get_model
|
||||||
gtk_combo_box_set_model
|
gtk_combo_box_set_model
|
||||||
gtk_combo_box_popup_for_device
|
gtk_combo_box_popup_for_device
|
||||||
@ -830,9 +844,12 @@ gtk_combo_box_get_type
|
|||||||
GtkComboBoxText
|
GtkComboBoxText
|
||||||
gtk_combo_box_text_new
|
gtk_combo_box_text_new
|
||||||
gtk_combo_box_text_new_with_entry
|
gtk_combo_box_text_new_with_entry
|
||||||
|
gtk_combo_box_text_append
|
||||||
|
gtk_combo_box_text_prepend
|
||||||
|
gtk_combo_box_text_insert
|
||||||
gtk_combo_box_text_append_text
|
gtk_combo_box_text_append_text
|
||||||
gtk_combo_box_text_insert_text
|
|
||||||
gtk_combo_box_text_prepend_text
|
gtk_combo_box_text_prepend_text
|
||||||
|
gtk_combo_box_text_insert_text
|
||||||
gtk_combo_box_text_remove
|
gtk_combo_box_text_remove
|
||||||
gtk_combo_box_text_remove_all
|
gtk_combo_box_text_remove_all
|
||||||
gtk_combo_box_text_get_active_text
|
gtk_combo_box_text_get_active_text
|
||||||
@ -899,6 +916,7 @@ GTK_CONTAINER_CLASS
|
|||||||
GTK_IS_CONTAINER_CLASS
|
GTK_IS_CONTAINER_CLASS
|
||||||
GTK_CONTAINER_GET_CLASS
|
GTK_CONTAINER_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkContainerPrivate
|
||||||
gtk_container_get_type
|
gtk_container_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -934,6 +952,7 @@ GTK_DIALOG_CLASS
|
|||||||
GTK_IS_DIALOG_CLASS
|
GTK_IS_DIALOG_CLASS
|
||||||
GTK_DIALOG_GET_CLASS
|
GTK_DIALOG_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkDialogPrivate
|
||||||
gtk_dialog_get_type
|
gtk_dialog_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1359,6 +1378,7 @@ GTK_FIXED_CLASS
|
|||||||
GTK_IS_FIXED_CLASS
|
GTK_IS_FIXED_CLASS
|
||||||
GTK_FIXED_GET_CLASS
|
GTK_FIXED_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkFixedPrivate
|
||||||
GtkFixedChild
|
GtkFixedChild
|
||||||
gtk_fixed_get_type
|
gtk_fixed_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
@ -1419,6 +1439,7 @@ GTK_FONT_SELECTION_CLASS
|
|||||||
GTK_IS_FONT_SELECTION_CLASS
|
GTK_IS_FONT_SELECTION_CLASS
|
||||||
GTK_FONT_SELECTION_GET_CLASS
|
GTK_FONT_SELECTION_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkFontSelectionPrivate
|
||||||
gtk_font_selection_get_type
|
gtk_font_selection_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1443,6 +1464,7 @@ GTK_FONT_SELECTION_DIALOG_CLASS
|
|||||||
GTK_IS_FONT_SELECTION_DIALOG_CLASS
|
GTK_IS_FONT_SELECTION_DIALOG_CLASS
|
||||||
GTK_FONT_SELECTION_DIALOG_GET_CLASS
|
GTK_FONT_SELECTION_DIALOG_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkFontSelectionDialogPrivate
|
||||||
gtk_font_selection_dialog_get_type
|
gtk_font_selection_dialog_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1467,6 +1489,7 @@ GTK_FRAME_CLASS
|
|||||||
GTK_IS_FRAME_CLASS
|
GTK_IS_FRAME_CLASS
|
||||||
GTK_FRAME_GET_CLASS
|
GTK_FRAME_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkFramePrivate
|
||||||
gtk_frame_get_type
|
gtk_frame_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1490,6 +1513,7 @@ GTK_HANDLE_BOX_CLASS
|
|||||||
GTK_IS_HANDLE_BOX_CLASS
|
GTK_IS_HANDLE_BOX_CLASS
|
||||||
GTK_HANDLE_BOX_GET_CLASS
|
GTK_HANDLE_BOX_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkHandleBoxPrivate
|
||||||
gtk_handle_box_get_type
|
gtk_handle_box_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1541,22 +1565,6 @@ GTK_HPANED_GET_CLASS
|
|||||||
gtk_hpaned_get_type
|
gtk_hpaned_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gtkhruler</FILE>
|
|
||||||
<TITLE>GtkHRuler</TITLE>
|
|
||||||
GtkHRuler
|
|
||||||
gtk_hruler_new
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
GTK_HRULER
|
|
||||||
GTK_IS_HRULER
|
|
||||||
GTK_TYPE_HRULER
|
|
||||||
GTK_HRULER_CLASS
|
|
||||||
GTK_IS_HRULER_CLASS
|
|
||||||
GTK_HRULER_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
gtk_hruler_get_type
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtkhscale</FILE>
|
<FILE>gtkhscale</FILE>
|
||||||
<TITLE>GtkHScale</TITLE>
|
<TITLE>GtkHScale</TITLE>
|
||||||
@ -1724,6 +1732,7 @@ GTK_IMAGE_CLASS
|
|||||||
GTK_IS_IMAGE_CLASS
|
GTK_IS_IMAGE_CLASS
|
||||||
GTK_IMAGE_GET_CLASS
|
GTK_IMAGE_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkImagePrivate
|
||||||
gtk_image_get_type
|
gtk_image_get_type
|
||||||
GtkImageIconSetData
|
GtkImageIconSetData
|
||||||
GtkImageImageData
|
GtkImageImageData
|
||||||
@ -1759,6 +1768,7 @@ GTK_IS_IMAGE_MENU_ITEM
|
|||||||
GTK_IS_IMAGE_MENU_ITEM_CLASS
|
GTK_IS_IMAGE_MENU_ITEM_CLASS
|
||||||
GTK_TYPE_IMAGE_MENU_ITEM
|
GTK_TYPE_IMAGE_MENU_ITEM
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkImageMenuItemPrivate
|
||||||
gtk_image_menu_item_get_type
|
gtk_image_menu_item_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1805,6 +1815,7 @@ GTK_IM_CONTEXT_SIMPLE_CLASS
|
|||||||
GTK_IS_IM_CONTEXT_SIMPLE_CLASS
|
GTK_IS_IM_CONTEXT_SIMPLE_CLASS
|
||||||
GTK_IM_CONTEXT_SIMPLE_GET_CLASS
|
GTK_IM_CONTEXT_SIMPLE_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkIMContextSimplePrivate
|
||||||
gtk_im_context_simple_get_type
|
gtk_im_context_simple_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1845,6 +1856,7 @@ GTK_IS_INVISIBLE_CLASS
|
|||||||
GTK_INVISIBLE_GET_CLASS
|
GTK_INVISIBLE_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_invisible_get_type
|
gtk_invisible_get_type
|
||||||
|
GtkInvisiblePrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -1904,6 +1916,7 @@ GTK_IS_LABEL_CLASS
|
|||||||
GTK_LABEL_GET_CLASS
|
GTK_LABEL_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_label_get_type
|
gtk_label_get_type
|
||||||
|
GtkLabelPrivate
|
||||||
GtkLabelSelectionInfo
|
GtkLabelSelectionInfo
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -1929,6 +1942,7 @@ GTK_LAYOUT_CLASS
|
|||||||
GTK_IS_LAYOUT_CLASS
|
GTK_IS_LAYOUT_CLASS
|
||||||
GTK_LAYOUT_GET_CLASS
|
GTK_LAYOUT_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkLayoutPrivate
|
||||||
gtk_layout_get_type
|
gtk_layout_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -2466,6 +2480,7 @@ GTK_IS_RANGE_CLASS
|
|||||||
GTK_RANGE_GET_CLASS
|
GTK_RANGE_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_range_get_type
|
gtk_range_get_type
|
||||||
|
GtkRangePrivate
|
||||||
GtkRangeLayout
|
GtkRangeLayout
|
||||||
GtkRangeStepTimer
|
GtkRangeStepTimer
|
||||||
</SECTION>
|
</SECTION>
|
||||||
@ -2687,28 +2702,6 @@ GtkRecentActionPrivate
|
|||||||
gtk_recent_action_get_type
|
gtk_recent_action_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gtkruler</FILE>
|
|
||||||
<TITLE>GtkRuler</TITLE>
|
|
||||||
GtkRuler
|
|
||||||
GtkRulerMetric
|
|
||||||
gtk_ruler_new
|
|
||||||
gtk_ruler_set_metric
|
|
||||||
gtk_ruler_set_range
|
|
||||||
gtk_ruler_get_metric
|
|
||||||
gtk_ruler_get_range
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
GTK_RULER
|
|
||||||
GTK_IS_RULER
|
|
||||||
GTK_TYPE_RULER
|
|
||||||
GTK_RULER_CLASS
|
|
||||||
GTK_IS_RULER_CLASS
|
|
||||||
GTK_RULER_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
GtkRulerPrivate
|
|
||||||
gtk_ruler_get_type
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtkscale</FILE>
|
<FILE>gtkscale</FILE>
|
||||||
<TITLE>GtkScale</TITLE>
|
<TITLE>GtkScale</TITLE>
|
||||||
@ -2770,6 +2763,12 @@ gtk_scrollable_get_hadjustment
|
|||||||
gtk_scrollable_set_hadjustment
|
gtk_scrollable_set_hadjustment
|
||||||
gtk_scrollable_get_vadjustment
|
gtk_scrollable_get_vadjustment
|
||||||
gtk_scrollable_set_vadjustment
|
gtk_scrollable_set_vadjustment
|
||||||
|
GtkScrollablePolicy
|
||||||
|
gtk_scrollable_get_hscroll_policy
|
||||||
|
gtk_scrollable_set_hscroll_policy
|
||||||
|
gtk_scrollable_get_vscroll_policy
|
||||||
|
gtk_scrollable_set_vscroll_policy
|
||||||
|
|
||||||
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GtkScrollableIface
|
GtkScrollableIface
|
||||||
@ -2833,6 +2832,7 @@ GTK_IS_SCROLLED_WINDOW_CLASS
|
|||||||
GTK_SCROLLED_WINDOW_GET_CLASS
|
GTK_SCROLLED_WINDOW_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_scrolled_window_get_type
|
gtk_scrolled_window_get_type
|
||||||
|
GtkScrolledWindowPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -2849,6 +2849,7 @@ GTK_IS_SEPARATOR_CLASS
|
|||||||
GTK_SEPARATOR_GET_CLASS
|
GTK_SEPARATOR_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_separator_get_type
|
gtk_separator_get_type
|
||||||
|
GtkSeparatorPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -3546,6 +3547,7 @@ GTK_IS_TOGGLE_BUTTON_CLASS
|
|||||||
GTK_TOGGLE_BUTTON_GET_CLASS
|
GTK_TOGGLE_BUTTON_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_toggle_button_get_type
|
gtk_toggle_button_get_type
|
||||||
|
GtkToggleButtonPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4418,6 +4420,7 @@ GTK_CELL_RENDERER_CLASS
|
|||||||
GTK_IS_CELL_RENDERER_CLASS
|
GTK_IS_CELL_RENDERER_CLASS
|
||||||
GTK_CELL_RENDERER_GET_CLASS
|
GTK_CELL_RENDERER_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkCellRendererPrivate
|
||||||
gtk_cell_renderer_get_type
|
gtk_cell_renderer_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
@ -4453,6 +4456,7 @@ GTK_IS_CELL_RENDERER_COMBO_CLASS
|
|||||||
GTK_CELL_RENDERER_COMBO_GET_CLASS
|
GTK_CELL_RENDERER_COMBO_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_cell_renderer_combo_get_type
|
gtk_cell_renderer_combo_get_type
|
||||||
|
GtkCellRendererComboPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4503,6 +4507,7 @@ GTK_IS_CELL_RENDERER_PIXBUF_CLASS
|
|||||||
GTK_CELL_RENDERER_PIXBUF_GET_CLASS
|
GTK_CELL_RENDERER_PIXBUF_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_cell_renderer_pixbuf_get_type
|
gtk_cell_renderer_pixbuf_get_type
|
||||||
|
GtkCellRendererPixbufPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4520,6 +4525,7 @@ GTK_IS_CELL_RENDERER_TEXT_CLASS
|
|||||||
GTK_CELL_RENDERER_TEXT_GET_CLASS
|
GTK_CELL_RENDERER_TEXT_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_cell_renderer_text_get_type
|
gtk_cell_renderer_text_get_type
|
||||||
|
GtkCellRendererTextPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4543,6 +4549,7 @@ GTK_IS_CELL_RENDERER_TOGGLE_CLASS
|
|||||||
GTK_CELL_RENDERER_TOGGLE_GET_CLASS
|
GTK_CELL_RENDERER_TOGGLE_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_cell_renderer_toggle_get_type
|
gtk_cell_renderer_toggle_get_type
|
||||||
|
GtkCellRendererTogglePrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4578,6 +4585,7 @@ GTK_IS_CELL_RENDERER_ACCEL_CLASS
|
|||||||
GTK_CELL_RENDERER_ACCEL_GET_CLASS
|
GTK_CELL_RENDERER_ACCEL_GET_CLASS
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_cell_renderer_accel_get_type
|
gtk_cell_renderer_accel_get_type
|
||||||
|
GtkCellRendererAccelPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -4707,22 +4715,6 @@ gtk_vpaned_get_type
|
|||||||
GtkPanedPrivate
|
GtkPanedPrivate
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gtkvruler</FILE>
|
|
||||||
<TITLE>GtkVRuler</TITLE>
|
|
||||||
GtkVRuler
|
|
||||||
gtk_vruler_new
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
GTK_VRULER
|
|
||||||
GTK_IS_VRULER
|
|
||||||
GTK_TYPE_VRULER
|
|
||||||
GTK_VRULER_CLASS
|
|
||||||
GTK_IS_VRULER_CLASS
|
|
||||||
GTK_VRULER_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
gtk_vruler_get_type
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtkvscale</FILE>
|
<FILE>gtkvscale</FILE>
|
||||||
<TITLE>GtkVScale</TITLE>
|
<TITLE>GtkVScale</TITLE>
|
||||||
@ -5550,7 +5542,6 @@ GtkExpanderStyle
|
|||||||
GtkIMPreeditStyle
|
GtkIMPreeditStyle
|
||||||
GtkIMStatusStyle
|
GtkIMStatusStyle
|
||||||
GtkJustification
|
GtkJustification
|
||||||
GtkMetricType
|
|
||||||
GtkMovementStep
|
GtkMovementStep
|
||||||
GtkOrientation
|
GtkOrientation
|
||||||
GtkPackType
|
GtkPackType
|
||||||
@ -5811,6 +5802,7 @@ GTK_IS_ICON_FACTORY_CLASS
|
|||||||
GTK_TYPE_ICON_SET
|
GTK_TYPE_ICON_SET
|
||||||
GTK_TYPE_ICON_SOURCE
|
GTK_TYPE_ICON_SOURCE
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
|
GtkIconFactoryPrivate
|
||||||
gtk_icon_factory_get_type
|
gtk_icon_factory_get_type
|
||||||
gtk_icon_set_get_type
|
gtk_icon_set_get_type
|
||||||
gtk_icon_source_get_type
|
gtk_icon_source_get_type
|
||||||
@ -6399,29 +6391,76 @@ gtk_grid_get_type
|
|||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtkopenwithdialog</FILE>
|
<FILE>gtkswitch</FILE>
|
||||||
<TITLE>GtkOpenWithDialog</TITLE>
|
GtkSwitch
|
||||||
GtkOpenWithDialog
|
gtk_switch_new
|
||||||
GtkOpenWithDialogMode
|
gtk_switch_set_active
|
||||||
gtk_open_with_dialog_new
|
gtk_switch_get_active
|
||||||
gtk_open_with_dialog_new_for_content_type
|
|
||||||
gtk_open_with_dialog_get_mode
|
|
||||||
gtk_open_with_dialog_get_selected_application
|
|
||||||
gtk_open_with_dialog_set_show_set_as_default_button
|
|
||||||
gtk_open_with_dialog_get_show_set_as_default_button
|
|
||||||
gtk_open_with_dialog_set_show_other_applications
|
|
||||||
gtk_open_with_dialog_get_show_other_applications
|
|
||||||
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GtkOpenWithDialogClass
|
GtkSwitchClass
|
||||||
GTK_TYPE_OPEN_WITH_DIALOG
|
GTK_TYPE_SWITCH
|
||||||
GTK_OPEN_WITH_DIALOG
|
GTK_SWITCH
|
||||||
GTK_OPEN_WITH_DIALOG_CLASS
|
GTK_SWITCH_CLASS
|
||||||
GTK_IS_OPEN_WITH_DIALOG
|
GTK_IS_SWITCH
|
||||||
GTK_IS_OPEN_WITH_DIALOG_CLASS
|
GTK_IS_SWITCH_CLASS
|
||||||
GTK_OPEN_WITH_DIALOG_GET_CLASS
|
GTK_SWITCH_GET_CLASS
|
||||||
|
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
GtkOpenWithDialogPrivate
|
GtkSwitchPrivate
|
||||||
gtk_open_with_dialog_get_type
|
gtk_switch_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>gtkappchooserdialog</FILE>
|
||||||
|
<TITLE>GtkAppChooserDialog</TITLE>
|
||||||
|
GtkAppChooserDialog
|
||||||
|
gtk_app_chooser_dialog_new
|
||||||
|
gtk_app_chooser_dialog_new_for_content_type
|
||||||
|
gtk_app_chooser_dialog_get_widget
|
||||||
|
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
GtkAppChooserDialogClass
|
||||||
|
GTK_TYPE_APP_CHOOSER_DIALOG
|
||||||
|
GTK_APP_CHOOSER_DIALOG
|
||||||
|
GTK_APP_CHOOSER_DIALOG_CLASS
|
||||||
|
GTK_IS_APP_CHOOSER_DIALOG
|
||||||
|
GTK_IS_APP_CHOOSER_DIALOG_CLASS
|
||||||
|
GTK_APP_CHOOSER_DIALOG_GET_CLASS
|
||||||
|
|
||||||
|
<SUBSECTION Private>
|
||||||
|
GtkAppChooserDialogPrivate
|
||||||
|
gtk_app_chooser_dialog_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>gtkappchooserwidget</FILE>
|
||||||
|
<TITLE>GtkAppChooserWidget</TITLE>
|
||||||
|
GtkAppChooserWidget
|
||||||
|
gtk_app_chooser_widget_new
|
||||||
|
gtk_app_chooser_widget_set_show_default
|
||||||
|
gtk_app_chooser_widget_get_show_default
|
||||||
|
gtk_app_chooser_widget_set_show_recommended
|
||||||
|
gtk_app_chooser_widget_get_show_recommended
|
||||||
|
gtk_app_chooser_widget_set_show_fallback
|
||||||
|
gtk_app_chooser_widget_get_show_fallback
|
||||||
|
gtk_app_chooser_widget_set_show_other
|
||||||
|
gtk_app_chooser_widget_get_show_other
|
||||||
|
gtk_app_chooser_widget_set_show_all
|
||||||
|
gtk_app_chooser_widget_get_show_all
|
||||||
|
gtk_app_chooser_widget_set_default_text
|
||||||
|
gtk_app_chooser_widget_get_default_text
|
||||||
|
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
GtkAppChooserWidgetClass
|
||||||
|
GTK_TYPE_APP_CHOOSER_WIDGET
|
||||||
|
GTK_APP_CHOOSER_WIDGET
|
||||||
|
GTK_APP_CHOOSER_WIDGET_CLASS
|
||||||
|
GTK_IS_APP_CHOOSER_WIDGET
|
||||||
|
GTK_IS_APP_CHOOSER_WIDGET_CLASS
|
||||||
|
GTK_APP_CHOOSER_WIDGET_GET_CLASS
|
||||||
|
|
||||||
|
<SUBSECTION Private>
|
||||||
|
GtkAppChooserWidgetPrivate
|
||||||
|
gtk_app_chooser_widget_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
@ -66,7 +66,6 @@ gtk_handle_box_get_type
|
|||||||
gtk_hbox_get_type
|
gtk_hbox_get_type
|
||||||
gtk_hbutton_box_get_type
|
gtk_hbutton_box_get_type
|
||||||
gtk_hpaned_get_type
|
gtk_hpaned_get_type
|
||||||
gtk_hruler_get_type
|
|
||||||
gtk_hscale_get_type
|
gtk_hscale_get_type
|
||||||
gtk_hscrollbar_get_type
|
gtk_hscrollbar_get_type
|
||||||
gtk_hseparator_get_type
|
gtk_hseparator_get_type
|
||||||
@ -122,7 +121,6 @@ gtk_recent_chooser_dialog_get_type
|
|||||||
gtk_recent_chooser_menu_get_type
|
gtk_recent_chooser_menu_get_type
|
||||||
gtk_recent_chooser_widget_get_type
|
gtk_recent_chooser_widget_get_type
|
||||||
gtk_recent_manager_get_type
|
gtk_recent_manager_get_type
|
||||||
gtk_ruler_get_type
|
|
||||||
gtk_scale_button_get_type
|
gtk_scale_button_get_type
|
||||||
gtk_scale_get_type
|
gtk_scale_get_type
|
||||||
gtk_scrollable_get_type
|
gtk_scrollable_get_type
|
||||||
@ -138,6 +136,7 @@ gtk_spin_button_get_type
|
|||||||
gtk_spinner_get_type
|
gtk_spinner_get_type
|
||||||
gtk_statusbar_get_type
|
gtk_statusbar_get_type
|
||||||
gtk_status_icon_get_type
|
gtk_status_icon_get_type
|
||||||
|
gtk_switch_get_type
|
||||||
gtk_style_get_type
|
gtk_style_get_type
|
||||||
gtk_table_get_type
|
gtk_table_get_type
|
||||||
gtk_tearoff_menu_item_get_type
|
gtk_tearoff_menu_item_get_type
|
||||||
@ -172,7 +171,6 @@ gtk_vbutton_box_get_type
|
|||||||
gtk_viewport_get_type
|
gtk_viewport_get_type
|
||||||
gtk_volume_button_get_type
|
gtk_volume_button_get_type
|
||||||
gtk_vpaned_get_type
|
gtk_vpaned_get_type
|
||||||
gtk_vruler_get_type
|
|
||||||
gtk_vscale_get_type
|
gtk_vscale_get_type
|
||||||
gtk_vscrollbar_get_type
|
gtk_vscrollbar_get_type
|
||||||
gtk_vseparator_get_type
|
gtk_vseparator_get_type
|
||||||
|
BIN
docs/reference/gtk/images/switch.png
Normal file
BIN
docs/reference/gtk/images/switch.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
@ -155,15 +155,6 @@ Used for justifying the text inside a #GtkLabel widget. (See also
|
|||||||
@GTK_JUSTIFY_CENTER: The text is placed in the center of the label.
|
@GTK_JUSTIFY_CENTER: The text is placed in the center of the label.
|
||||||
@GTK_JUSTIFY_FILL: The text is placed is distributed across the label.
|
@GTK_JUSTIFY_FILL: The text is placed is distributed across the label.
|
||||||
|
|
||||||
<!-- ##### ENUM GtkMetricType ##### -->
|
|
||||||
<para>
|
|
||||||
Used to indicate which metric is used by a #GtkRuler.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@GTK_PIXELS: Pixels.
|
|
||||||
@GTK_INCHES: Inches.
|
|
||||||
@GTK_CENTIMETERS: Centimeters.
|
|
||||||
|
|
||||||
<!-- ##### ENUM GtkMovementStep ##### -->
|
<!-- ##### ENUM GtkMovementStep ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
@ -123,4 +123,7 @@
|
|||||||
<link linkend="GtkFileChooserDialog">
|
<link linkend="GtkFileChooserDialog">
|
||||||
<inlinegraphic fileref="filechooser.png" format="PNG"></inlinegraphic>
|
<inlinegraphic fileref="filechooser.png" format="PNG"></inlinegraphic>
|
||||||
</link>
|
</link>
|
||||||
|
<link linkend="GtkSwitch">
|
||||||
|
<inlinegraphic fileref="switch.png" format="PNG"></inlinegraphic>
|
||||||
|
</link>
|
||||||
</para>
|
</para>
|
||||||
|
@ -115,6 +115,7 @@ new_widget_info (const char *name,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
info->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
info->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_has_resize_grip (GTK_WINDOW (info->window), FALSE);
|
||||||
info->include_decorations = FALSE;
|
info->include_decorations = FALSE;
|
||||||
gtk_widget_show_all (widget);
|
gtk_widget_show_all (widget);
|
||||||
gtk_container_add (GTK_CONTAINER (info->window), widget);
|
gtk_container_add (GTK_CONTAINER (info->window), widget);
|
||||||
@ -159,6 +160,26 @@ create_button (void)
|
|||||||
return new_widget_info ("button", align, SMALL);
|
return new_widget_info ("button", align, SMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WidgetInfo *
|
||||||
|
create_switch (void)
|
||||||
|
{
|
||||||
|
GtkWidget *widget;
|
||||||
|
GtkWidget *align;
|
||||||
|
GtkWidget *sw;
|
||||||
|
|
||||||
|
widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
|
||||||
|
sw = gtk_switch_new ();
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (sw), TRUE);
|
||||||
|
gtk_box_pack_start (GTK_BOX (widget), sw, TRUE, TRUE, 0);
|
||||||
|
sw = gtk_switch_new ();
|
||||||
|
gtk_box_pack_start (GTK_BOX (widget), sw, TRUE, TRUE, 0);
|
||||||
|
|
||||||
|
align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
|
||||||
|
gtk_container_add (GTK_CONTAINER (align), widget);
|
||||||
|
|
||||||
|
return new_widget_info ("switch", align, SMALL);
|
||||||
|
}
|
||||||
|
|
||||||
static WidgetInfo *
|
static WidgetInfo *
|
||||||
create_toggle_button (void)
|
create_toggle_button (void)
|
||||||
{
|
{
|
||||||
@ -1095,6 +1116,7 @@ get_all_widgets (void)
|
|||||||
retval = g_list_prepend (retval, create_page_setup_dialog ());
|
retval = g_list_prepend (retval, create_page_setup_dialog ());
|
||||||
retval = g_list_prepend (retval, create_print_dialog ());
|
retval = g_list_prepend (retval, create_print_dialog ());
|
||||||
retval = g_list_prepend (retval, create_volume_button ());
|
retval = g_list_prepend (retval, create_volume_button ());
|
||||||
|
retval = g_list_prepend (retval, create_switch ());
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,7 @@ endif
|
|||||||
# This places the generated .def file in srcdir, since it is expected to be there.
|
# This places the generated .def file in srcdir, since it is expected to be there.
|
||||||
# (The one from a tarball is)
|
# (The one from a tarball is)
|
||||||
gdk.def: gdk.symbols
|
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
|
(echo -e EXPORTS; $(CPP) -P -DGDK_WINDOWING_WIN32 - <$(srcdir)/gdk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gdk.def
|
||||||
|
|
||||||
TESTS_ENVIRONMENT = srcdir="$(srcdir)"
|
TESTS_ENVIRONMENT = srcdir="$(srcdir)"
|
||||||
if OS_LINUX
|
if OS_LINUX
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
cpp -DINCLUDE_VARIABLES -P -DALL_FILES -DGDK_ENABLE_BROKEN -include ../config.h -include ./gdkconfig.h ${srcdir:-.}/gdk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' | sort | uniq > expected-abi
|
cpp -P -DGDK_ENABLE_BROKEN -include ../config.h -include ./gdkconfig.h ${srcdir:-.}/gdk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' | sort | uniq > expected-abi
|
||||||
nm -D -g --defined-only .libs/libgdk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi
|
nm -D -g --defined-only .libs/libgdk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi
|
||||||
diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
|
diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
|
||||||
|
@ -316,8 +316,8 @@ gdk_get_display_arg_name (void)
|
|||||||
* display has previously been set, simply returns that. An internal
|
* display has previously been set, simply returns that. An internal
|
||||||
* function that should not be used by applications.
|
* function that should not be used by applications.
|
||||||
*
|
*
|
||||||
* Return value: the default display, if it could be opened,
|
* Return value: (transfer none): the default display, if it could be
|
||||||
* otherwise %NULL.
|
* opened, otherwise %NULL.
|
||||||
**/
|
**/
|
||||||
GdkDisplay *
|
GdkDisplay *
|
||||||
gdk_display_open_default_libgtk_only (void)
|
gdk_display_open_default_libgtk_only (void)
|
||||||
|
1422
gdk/gdk.symbols
1422
gdk/gdk.symbols
File diff suppressed because it is too large
Load Diff
160
gdk/gdkdevice.c
160
gdk/gdkdevice.c
@ -26,6 +26,14 @@
|
|||||||
#include "gdkinternals.h"
|
#include "gdkinternals.h"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _GdkDeviceKey GdkDeviceKey;
|
||||||
|
|
||||||
|
struct _GdkDeviceKey
|
||||||
|
{
|
||||||
|
guint keyval;
|
||||||
|
GdkModifierType modifiers;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct _GdkAxisInfo GdkAxisInfo;
|
typedef struct _GdkAxisInfo GdkAxisInfo;
|
||||||
|
|
||||||
struct _GdkAxisInfo
|
struct _GdkAxisInfo
|
||||||
@ -43,6 +51,12 @@ struct _GdkAxisInfo
|
|||||||
|
|
||||||
struct _GdkDevicePrivate
|
struct _GdkDevicePrivate
|
||||||
{
|
{
|
||||||
|
gchar *name;
|
||||||
|
GdkInputSource source;
|
||||||
|
GdkInputMode mode;
|
||||||
|
gboolean has_cursor;
|
||||||
|
gint num_keys;
|
||||||
|
GdkDeviceKey *keys;
|
||||||
GdkDeviceManager *device_manager;
|
GdkDeviceManager *device_manager;
|
||||||
GdkDisplay *display;
|
GdkDisplay *display;
|
||||||
GdkDevice *associated;
|
GdkDevice *associated;
|
||||||
@ -261,13 +275,11 @@ gdk_device_dispose (GObject *object)
|
|||||||
priv->axes = NULL;
|
priv->axes = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (device->name);
|
g_free (priv->name);
|
||||||
g_free (device->keys);
|
g_free (priv->keys);
|
||||||
g_free (device->axes);
|
|
||||||
|
|
||||||
device->name = NULL;
|
priv->name = NULL;
|
||||||
device->keys = NULL;
|
priv->keys = NULL;
|
||||||
device->axes = NULL;
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (gdk_device_parent_class)->dispose (object);
|
G_OBJECT_CLASS (gdk_device_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
@ -290,22 +302,22 @@ gdk_device_set_property (GObject *object,
|
|||||||
priv->device_manager = g_value_get_object (value);
|
priv->device_manager = g_value_get_object (value);
|
||||||
break;
|
break;
|
||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
if (device->name)
|
if (priv->name)
|
||||||
g_free (device->name);
|
g_free (priv->name);
|
||||||
|
|
||||||
device->name = g_value_dup_string (value);
|
priv->name = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
case PROP_TYPE:
|
case PROP_TYPE:
|
||||||
priv->type = g_value_get_enum (value);
|
priv->type = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
case PROP_INPUT_SOURCE:
|
case PROP_INPUT_SOURCE:
|
||||||
device->source = g_value_get_enum (value);
|
priv->source = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
case PROP_INPUT_MODE:
|
case PROP_INPUT_MODE:
|
||||||
gdk_device_set_mode (device, g_value_get_enum (value));
|
gdk_device_set_mode (device, g_value_get_enum (value));
|
||||||
break;
|
break;
|
||||||
case PROP_HAS_CURSOR:
|
case PROP_HAS_CURSOR:
|
||||||
device->has_cursor = g_value_get_boolean (value);
|
priv->has_cursor = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
@ -334,21 +346,19 @@ gdk_device_get_property (GObject *object,
|
|||||||
g_value_set_object (value, priv->associated);
|
g_value_set_object (value, priv->associated);
|
||||||
break;
|
break;
|
||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
g_value_set_string (value,
|
g_value_set_string (value, priv->name);
|
||||||
device->name);
|
|
||||||
break;
|
break;
|
||||||
case PROP_TYPE:
|
case PROP_TYPE:
|
||||||
g_value_set_enum (value, priv->type);
|
g_value_set_enum (value, priv->type);
|
||||||
break;
|
break;
|
||||||
case PROP_INPUT_SOURCE:
|
case PROP_INPUT_SOURCE:
|
||||||
g_value_set_enum (value, device->source);
|
g_value_set_enum (value, priv->source);
|
||||||
break;
|
break;
|
||||||
case PROP_INPUT_MODE:
|
case PROP_INPUT_MODE:
|
||||||
g_value_set_enum (value, device->mode);
|
g_value_set_enum (value, priv->mode);
|
||||||
break;
|
break;
|
||||||
case PROP_HAS_CURSOR:
|
case PROP_HAS_CURSOR:
|
||||||
g_value_set_boolean (value,
|
g_value_set_boolean (value, priv->has_cursor);
|
||||||
device->has_cursor);
|
|
||||||
break;
|
break;
|
||||||
case PROP_N_AXES:
|
case PROP_N_AXES:
|
||||||
g_value_set_uint (value, priv->axes->len);
|
g_value_set_uint (value, priv->axes->len);
|
||||||
@ -438,7 +448,7 @@ _gdk_device_allocate_history (GdkDevice *device,
|
|||||||
|
|
||||||
for (i = 0; i < n_events; i++)
|
for (i = 0; i < n_events; i++)
|
||||||
result[i] = g_malloc (sizeof (GdkTimeCoord) -
|
result[i] = g_malloc (sizeof (GdkTimeCoord) -
|
||||||
sizeof (double) * (GDK_MAX_TIMECOORD_AXES - device->num_axes));
|
sizeof (double) * (GDK_MAX_TIMECOORD_AXES - device->priv->axes->len));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -476,7 +486,7 @@ gdk_device_get_name (GdkDevice *device)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
|
||||||
|
|
||||||
return device->name;
|
return device->priv->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -494,7 +504,7 @@ gdk_device_get_has_cursor (GdkDevice *device)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
||||||
|
|
||||||
return device->has_cursor;
|
return device->priv->has_cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -512,7 +522,7 @@ gdk_device_get_source (GdkDevice *device)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
||||||
|
|
||||||
return device->source;
|
return device->priv->source;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -528,7 +538,8 @@ gdk_device_set_source (GdkDevice *device,
|
|||||||
{
|
{
|
||||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||||
|
|
||||||
device->source = source;
|
device->priv->source = source;
|
||||||
|
g_object_notify (G_OBJECT (device), "input-source");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -546,7 +557,7 @@ gdk_device_get_mode (GdkDevice *device)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
||||||
|
|
||||||
return device->mode;
|
return device->priv->mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -566,7 +577,7 @@ gdk_device_set_mode (GdkDevice *device,
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
||||||
|
|
||||||
if (device->mode == mode)
|
if (device->priv->mode == mode)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (mode == GDK_MODE_DISABLED &&
|
if (mode == GDK_MODE_DISABLED &&
|
||||||
@ -575,7 +586,7 @@ gdk_device_set_mode (GdkDevice *device,
|
|||||||
|
|
||||||
/* FIXME: setting has_cursor when mode is window? */
|
/* FIXME: setting has_cursor when mode is window? */
|
||||||
|
|
||||||
device->mode = mode;
|
device->priv->mode = mode;
|
||||||
g_object_notify (G_OBJECT (device), "input-mode");
|
g_object_notify (G_OBJECT (device), "input-mode");
|
||||||
|
|
||||||
if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER)
|
if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER)
|
||||||
@ -584,6 +595,24 @@ gdk_device_set_mode (GdkDevice *device,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_device_get_n_keys:
|
||||||
|
* @device: a #GdkDevice
|
||||||
|
*
|
||||||
|
* Returns the number of keys the device currently has.
|
||||||
|
*
|
||||||
|
* Returns: the number of keys.
|
||||||
|
*
|
||||||
|
* Since: 2.24
|
||||||
|
**/
|
||||||
|
gint
|
||||||
|
gdk_device_get_n_keys (GdkDevice *device)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
||||||
|
|
||||||
|
return device->priv->num_keys;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_device_get_key:
|
* gdk_device_get_key:
|
||||||
* @device: a #GdkDevice.
|
* @device: a #GdkDevice.
|
||||||
@ -605,17 +634,17 @@ gdk_device_get_key (GdkDevice *device,
|
|||||||
GdkModifierType *modifiers)
|
GdkModifierType *modifiers)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE);
|
||||||
g_return_val_if_fail (index_ < device->num_keys, FALSE);
|
g_return_val_if_fail (index_ < device->priv->num_keys, FALSE);
|
||||||
|
|
||||||
if (!device->keys[index_].keyval &&
|
if (!device->priv->keys[index_].keyval &&
|
||||||
!device->keys[index_].modifiers)
|
!device->priv->keys[index_].modifiers)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (keyval)
|
if (keyval)
|
||||||
*keyval = device->keys[index_].keyval;
|
*keyval = device->priv->keys[index_].keyval;
|
||||||
|
|
||||||
if (modifiers)
|
if (modifiers)
|
||||||
*modifiers = device->keys[index_].modifiers;
|
*modifiers = device->priv->keys[index_].modifiers;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -637,10 +666,10 @@ gdk_device_set_key (GdkDevice *device,
|
|||||||
GdkModifierType modifiers)
|
GdkModifierType modifiers)
|
||||||
{
|
{
|
||||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||||
g_return_if_fail (index_ < device->num_keys);
|
g_return_if_fail (index_ < device->priv->num_keys);
|
||||||
|
|
||||||
device->keys[index_].keyval = keyval;
|
device->priv->keys[index_].keyval = keyval;
|
||||||
device->keys[index_].modifiers = modifiers;
|
device->priv->keys[index_].modifiers = modifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -658,10 +687,14 @@ GdkAxisUse
|
|||||||
gdk_device_get_axis_use (GdkDevice *device,
|
gdk_device_get_axis_use (GdkDevice *device,
|
||||||
guint index_)
|
guint index_)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE);
|
GdkAxisInfo *info;
|
||||||
g_return_val_if_fail (index_ < device->num_axes, GDK_AXIS_IGNORE);
|
|
||||||
|
|
||||||
return device->axes[index_].use;
|
g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE);
|
||||||
|
g_return_val_if_fail (index_ < device->priv->axes->len, GDK_AXIS_IGNORE);
|
||||||
|
|
||||||
|
info = &g_array_index (device->priv->axes, GdkAxisInfo, index_);
|
||||||
|
|
||||||
|
return info->use;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -681,29 +714,27 @@ gdk_device_set_axis_use (GdkDevice *device,
|
|||||||
GdkAxisInfo *info;
|
GdkAxisInfo *info;
|
||||||
|
|
||||||
g_return_if_fail (GDK_IS_DEVICE (device));
|
g_return_if_fail (GDK_IS_DEVICE (device));
|
||||||
g_return_if_fail (index_ < device->num_axes);
|
g_return_if_fail (index_ < device->priv->axes->len);
|
||||||
|
|
||||||
priv = device->priv;
|
priv = device->priv;
|
||||||
info = &g_array_index (priv->axes, GdkAxisInfo, index_);
|
info = &g_array_index (priv->axes, GdkAxisInfo, index_);
|
||||||
info->use = use;
|
info->use = use;
|
||||||
|
|
||||||
device->axes[index_].use = use;
|
|
||||||
|
|
||||||
switch (use)
|
switch (use)
|
||||||
{
|
{
|
||||||
case GDK_AXIS_X:
|
case GDK_AXIS_X:
|
||||||
case GDK_AXIS_Y:
|
case GDK_AXIS_Y:
|
||||||
device->axes[index_].min = info->min_axis = 0;
|
info->min_axis = 0;
|
||||||
device->axes[index_].max = info->max_axis = 0;
|
info->max_axis = 0;
|
||||||
break;
|
break;
|
||||||
case GDK_AXIS_XTILT:
|
case GDK_AXIS_XTILT:
|
||||||
case GDK_AXIS_YTILT:
|
case GDK_AXIS_YTILT:
|
||||||
device->axes[index_].min = info->min_axis = -1;
|
info->min_axis = -1;
|
||||||
device->axes[index_].max = info->max_axis = 1;
|
info->max_axis = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
device->axes[index_].min = info->min_axis = 0;
|
info->min_axis = 0;
|
||||||
device->axes[index_].max = info->max_axis = 1;
|
info->max_axis = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -714,8 +745,8 @@ gdk_device_set_axis_use (GdkDevice *device,
|
|||||||
*
|
*
|
||||||
* Returns the #GdkDisplay to which @device pertains.
|
* Returns the #GdkDisplay to which @device pertains.
|
||||||
*
|
*
|
||||||
* Returns: a #GdkDisplay. This memory is owned by GTK+,
|
* Returns: (transfer none): a #GdkDisplay. This memory is owned
|
||||||
* and must not be freed or unreffed.
|
* by GTK+, and must not be freed or unreffed.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
@ -745,7 +776,7 @@ gdk_device_get_display (GdkDevice *device)
|
|||||||
* If @device is of type %GDK_DEVICE_TYPE_FLOATING, %NULL will be
|
* If @device is of type %GDK_DEVICE_TYPE_FLOATING, %NULL will be
|
||||||
* returned, as there is no associated device.
|
* returned, as there is no associated device.
|
||||||
*
|
*
|
||||||
* Returns: The associated device, or %NULL
|
* Returns: (transfer none): The associated device, or %NULL
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
@ -817,12 +848,12 @@ gdk_device_get_device_type (GdkDevice *device)
|
|||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
guint
|
gint
|
||||||
gdk_device_get_n_axes (GdkDevice *device)
|
gdk_device_get_n_axes (GdkDevice *device)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
|
||||||
|
|
||||||
return device->num_axes;
|
return device->priv->axes->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1093,10 +1124,6 @@ _gdk_device_reset_axes (GdkDevice *device)
|
|||||||
g_array_remove_index (priv->axes, i);
|
g_array_remove_index (priv->axes, i);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (device), "n-axes");
|
g_object_notify (G_OBJECT (device), "n-axes");
|
||||||
|
|
||||||
/* This is done for backwards compatibility */
|
|
||||||
g_free (device->axes);
|
|
||||||
device->axes = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
guint
|
guint
|
||||||
@ -1138,16 +1165,7 @@ _gdk_device_add_axis (GdkDevice *device,
|
|||||||
}
|
}
|
||||||
|
|
||||||
priv->axes = g_array_append_val (priv->axes, axis_info);
|
priv->axes = g_array_append_val (priv->axes, axis_info);
|
||||||
device->num_axes = priv->axes->len;
|
pos = device->priv->axes->len - 1;
|
||||||
pos = device->num_axes - 1;
|
|
||||||
|
|
||||||
/* This is done for backwards compatibility, since the public
|
|
||||||
* struct doesn't actually store the device data.
|
|
||||||
*/
|
|
||||||
device->axes = g_realloc (device->axes, sizeof (GdkDeviceAxis) * priv->axes->len);
|
|
||||||
device->axes[pos].use = axis_info.use;
|
|
||||||
device->axes[pos].min = axis_info.min_axis;
|
|
||||||
device->axes[pos].max = axis_info.max_axis;
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (device), "n-axes");
|
g_object_notify (G_OBJECT (device), "n-axes");
|
||||||
|
|
||||||
@ -1158,11 +1176,11 @@ void
|
|||||||
_gdk_device_set_keys (GdkDevice *device,
|
_gdk_device_set_keys (GdkDevice *device,
|
||||||
guint num_keys)
|
guint num_keys)
|
||||||
{
|
{
|
||||||
if (device->keys)
|
if (device->priv->keys)
|
||||||
g_free (device->keys);
|
g_free (device->priv->keys);
|
||||||
|
|
||||||
device->num_keys = num_keys;
|
device->priv->num_keys = num_keys;
|
||||||
device->keys = g_new0 (GdkDeviceKey, num_keys);
|
device->priv->keys = g_new0 (GdkDeviceKey, num_keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkAxisInfo *
|
static GdkAxisInfo *
|
||||||
@ -1321,16 +1339,14 @@ _gdk_device_translate_screen_coord (GdkDevice *device,
|
|||||||
gdouble value,
|
gdouble value,
|
||||||
gdouble *axis_value)
|
gdouble *axis_value)
|
||||||
{
|
{
|
||||||
GdkDevicePrivate *priv;
|
GdkDevicePrivate *priv = device->priv;
|
||||||
GdkAxisInfo axis_info;
|
GdkAxisInfo axis_info;
|
||||||
gdouble axis_width, scale, offset;
|
gdouble axis_width, scale, offset;
|
||||||
GdkWindowObject *window_private;
|
GdkWindowObject *window_private;
|
||||||
|
|
||||||
if (device->mode != GDK_MODE_SCREEN)
|
if (priv->mode != GDK_MODE_SCREEN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
priv = device->priv;
|
|
||||||
|
|
||||||
if (index_ >= priv->axes->len)
|
if (index_ >= priv->axes->len)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -35,9 +35,6 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
typedef struct _GdkDevice GdkDevice;
|
typedef struct _GdkDevice GdkDevice;
|
||||||
typedef struct _GdkDevicePrivate GdkDevicePrivate;
|
typedef struct _GdkDevicePrivate GdkDevicePrivate;
|
||||||
|
|
||||||
typedef struct _GdkDeviceKey GdkDeviceKey;
|
|
||||||
typedef struct _GdkDeviceAxis GdkDeviceAxis;
|
|
||||||
typedef struct _GdkTimeCoord GdkTimeCoord;
|
typedef struct _GdkTimeCoord GdkTimeCoord;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -141,37 +138,6 @@ typedef enum {
|
|||||||
GDK_DEVICE_TYPE_FLOATING
|
GDK_DEVICE_TYPE_FLOATING
|
||||||
} GdkDeviceType;
|
} GdkDeviceType;
|
||||||
|
|
||||||
/**
|
|
||||||
* GdkDeviceKey:
|
|
||||||
* @keyval: the keyval to generate when the macro button is pressed.
|
|
||||||
* If this is 0, no keypress will be generated.
|
|
||||||
* @modifiers: the modifiers set for the generated key event.
|
|
||||||
*
|
|
||||||
* The <structname>GdkDeviceKey</structname> structure contains information
|
|
||||||
* about the mapping of one device macro button onto a normal X key event.
|
|
||||||
*/
|
|
||||||
struct _GdkDeviceKey
|
|
||||||
{
|
|
||||||
guint keyval;
|
|
||||||
GdkModifierType modifiers;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GdkDeviceAxis:
|
|
||||||
* @use: specifies how the axis is used.
|
|
||||||
* @min: the minimal value that will be reported by this axis.
|
|
||||||
* @max: the maximal value that will be reported by this axis.
|
|
||||||
*
|
|
||||||
* The <structname>GdkDeviceAxis</structname> structure contains information
|
|
||||||
* about the range and mapping of a device axis.
|
|
||||||
*/
|
|
||||||
struct _GdkDeviceAxis
|
|
||||||
{
|
|
||||||
GdkAxisUse use;
|
|
||||||
gdouble min;
|
|
||||||
gdouble max;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* We don't allocate each coordinate this big, but we use it to
|
/* We don't allocate each coordinate this big, but we use it to
|
||||||
* be ANSI compliant and avoid accessing past the defined limits.
|
* be ANSI compliant and avoid accessing past the defined limits.
|
||||||
*/
|
*/
|
||||||
@ -194,18 +160,6 @@ struct _GdkDevice
|
|||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
|
|
||||||
/* All fields are read-only */
|
|
||||||
gchar *GSEAL (name);
|
|
||||||
GdkInputSource GSEAL (source);
|
|
||||||
GdkInputMode GSEAL (mode);
|
|
||||||
gboolean GSEAL (has_cursor); /* TRUE if a X pointer follows device motion */
|
|
||||||
|
|
||||||
gint GSEAL (num_axes);
|
|
||||||
GdkDeviceAxis *GSEAL (axes);
|
|
||||||
|
|
||||||
gint GSEAL (num_keys);
|
|
||||||
GdkDeviceKey *GSEAL (keys);
|
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GdkDevicePrivate *priv;
|
GdkDevicePrivate *priv;
|
||||||
};
|
};
|
||||||
@ -224,6 +178,7 @@ GdkInputMode gdk_device_get_mode (GdkDevice *device);
|
|||||||
gboolean gdk_device_set_mode (GdkDevice *device,
|
gboolean gdk_device_set_mode (GdkDevice *device,
|
||||||
GdkInputMode mode);
|
GdkInputMode mode);
|
||||||
|
|
||||||
|
gint gdk_device_get_n_keys (GdkDevice *device);
|
||||||
gboolean gdk_device_get_key (GdkDevice *device,
|
gboolean gdk_device_get_key (GdkDevice *device,
|
||||||
guint index_,
|
guint index_,
|
||||||
guint *keyval,
|
guint *keyval,
|
||||||
@ -253,7 +208,7 @@ gboolean gdk_device_get_history (GdkDevice *device,
|
|||||||
void gdk_device_free_history (GdkTimeCoord **events,
|
void gdk_device_free_history (GdkTimeCoord **events,
|
||||||
gint n_events);
|
gint n_events);
|
||||||
|
|
||||||
guint gdk_device_get_n_axes (GdkDevice *device);
|
gint gdk_device_get_n_axes (GdkDevice *device);
|
||||||
GList * gdk_device_list_axes (GdkDevice *device);
|
GList * gdk_device_list_axes (GdkDevice *device);
|
||||||
gboolean gdk_device_get_axis_value (GdkDevice *device,
|
gboolean gdk_device_get_axis_value (GdkDevice *device,
|
||||||
gdouble *axes,
|
gdouble *axes,
|
||||||
|
@ -260,8 +260,9 @@ gdk_device_manager_get_property (GObject *object,
|
|||||||
*
|
*
|
||||||
* Gets the #GdkDisplay associated to @device_manager.
|
* Gets the #GdkDisplay associated to @device_manager.
|
||||||
*
|
*
|
||||||
* Returns: the #GdkDisplay to which @device_manager is
|
* Returns: (transfer none): the #GdkDisplay to which @device_manager is
|
||||||
* associated to, or #NULL.
|
* associated to, or #NULL. This memory is owned by GDK and
|
||||||
|
* must not be freed or unreferenced.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
@ -312,7 +313,8 @@ gdk_device_manager_list_devices (GdkDeviceManager *device_manager,
|
|||||||
* You should use this function sheldomly, only in code that isn't triggered by a #GdkEvent
|
* You should use this function sheldomly, only in code that isn't triggered by a #GdkEvent
|
||||||
* and there aren't other means to get a meaningful #GdkDevice to operate on.
|
* and there aren't other means to get a meaningful #GdkDevice to operate on.
|
||||||
*
|
*
|
||||||
* Returns: The client pointer.
|
* Returns: (transfer none): The client pointer. This memory is
|
||||||
|
* owned by GDK and must not be freed or unreferenced.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
|
@ -494,7 +494,7 @@ gdk_display_pointer_ungrab (GdkDisplay *display,
|
|||||||
{
|
{
|
||||||
device = dev->data;
|
device = dev->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_MOUSE)
|
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
gdk_device_ungrab (device, time_);
|
gdk_device_ungrab (device, time_);
|
||||||
@ -570,7 +570,7 @@ gdk_display_keyboard_ungrab (GdkDisplay *display,
|
|||||||
{
|
{
|
||||||
device = dev->data;
|
device = dev->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
gdk_device_ungrab (device, time);
|
gdk_device_ungrab (device, time);
|
||||||
@ -654,8 +654,8 @@ gdk_event_send_clientmessage_toall (GdkEvent *event)
|
|||||||
*
|
*
|
||||||
* Returns the core pointer device for the default display.
|
* Returns the core pointer device for the default display.
|
||||||
*
|
*
|
||||||
* Return value: the core pointer device; this is owned by the
|
* Return value: (transfer none): the core pointer device; this is owned
|
||||||
* display and should not be freed.
|
* by the display and should not be freed.
|
||||||
*
|
*
|
||||||
* Deprecated: 3.0: Use gdk_device_manager_get_client_pointer() instead, or
|
* Deprecated: 3.0: Use gdk_device_manager_get_client_pointer() instead, or
|
||||||
* gdk_event_get_device() if a #GdkEvent with pointer device
|
* gdk_event_get_device() if a #GdkEvent with pointer device
|
||||||
@ -673,7 +673,7 @@ gdk_device_get_core_pointer (void)
|
|||||||
*
|
*
|
||||||
* Returns the core pointer device for the given display
|
* Returns the core pointer device for the given display
|
||||||
*
|
*
|
||||||
* Return value: the core pointer device; this is owned by the
|
* Return value: (transfer none): the core pointer device; this is owned by the
|
||||||
* display and should not be freed.
|
* display and should not be freed.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
@ -810,7 +810,7 @@ gdk_display_get_device_state (GdkDisplay *display,
|
|||||||
* Obtains the window underneath @device, returning the location of the device in @win_x and @win_y. Returns
|
* Obtains the window underneath @device, returning the location of the device in @win_x and @win_y. Returns
|
||||||
* %NULL if the window tree under @device is not known to GDK (for example, belongs to another application).
|
* %NULL if the window tree under @device is not known to GDK (for example, belongs to another application).
|
||||||
*
|
*
|
||||||
* Returns: the #GdkWindow under the device position, or %NULL.
|
* Returns: (transfer none): the #GdkWindow under the device position, or %NULL.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
@ -846,7 +846,7 @@ gdk_display_get_window_at_device_position (GdkDisplay *display,
|
|||||||
* #GdkDevice on a particular #GdkDisplay. This is only useful for such low-level tools as
|
* #GdkDevice on a particular #GdkDisplay. This is only useful for such low-level tools as
|
||||||
* an event recorder. Applications should never have any reason to use this facility.
|
* an event recorder. Applications should never have any reason to use this facility.
|
||||||
*
|
*
|
||||||
* Returns: The previous device hook table.
|
* Returns: (transfer none): The previous device hook table.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
@ -1067,7 +1067,7 @@ multihead_default_window_at_pointer (GdkDisplay *display,
|
|||||||
* event recorder. Applications should never have any
|
* event recorder. Applications should never have any
|
||||||
* reason to use this facility.
|
* reason to use this facility.
|
||||||
*
|
*
|
||||||
* Return value: the previous pointer hook table
|
* Return value: (transfer none): the previous pointer hook table
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*
|
*
|
||||||
@ -1209,7 +1209,7 @@ generate_grab_broken_event (GdkWindow *window,
|
|||||||
event->grab_broken.implicit = implicit;
|
event->grab_broken.implicit = implicit;
|
||||||
event->grab_broken.grab_window = grab_window;
|
event->grab_broken.grab_window = grab_window;
|
||||||
gdk_event_set_device (event, device);
|
gdk_event_set_device (event, device);
|
||||||
event->grab_broken.keyboard = (device->source == GDK_SOURCE_KEYBOARD) ? TRUE : FALSE;
|
event->grab_broken.keyboard = (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) ? TRUE : FALSE;
|
||||||
|
|
||||||
gdk_event_put (event);
|
gdk_event_put (event);
|
||||||
gdk_event_free (event);
|
gdk_event_free (event);
|
||||||
@ -1538,7 +1538,7 @@ _gdk_display_device_grab_update (GdkDisplay *display,
|
|||||||
|
|
||||||
if (!current_grab->activated)
|
if (!current_grab->activated)
|
||||||
{
|
{
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
switch_to_pointer_grab (display, device, current_grab, NULL, time, current_serial);
|
switch_to_pointer_grab (display, device, current_grab, NULL, time, current_serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1566,7 +1566,7 @@ _gdk_display_device_grab_update (GdkDisplay *display,
|
|||||||
grabs = g_list_delete_link (grabs, grabs);
|
grabs = g_list_delete_link (grabs, grabs);
|
||||||
g_hash_table_insert (display->device_grabs, device, grabs);
|
g_hash_table_insert (display->device_grabs, device, grabs);
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
switch_to_pointer_grab (display, device,
|
switch_to_pointer_grab (display, device,
|
||||||
next_grab, current_grab,
|
next_grab, current_grab,
|
||||||
time, current_serial);
|
time, current_serial);
|
||||||
@ -1663,7 +1663,7 @@ _gdk_display_check_grab_ownership (GdkDisplay *display,
|
|||||||
|
|
||||||
g_hash_table_iter_init (&iter, display->device_grabs);
|
g_hash_table_iter_init (&iter, display->device_grabs);
|
||||||
higher_ownership = device_ownership = GDK_OWNERSHIP_NONE;
|
higher_ownership = device_ownership = GDK_OWNERSHIP_NONE;
|
||||||
device_is_keyboard = (device->source == GDK_SOURCE_KEYBOARD);
|
device_is_keyboard = (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD);
|
||||||
|
|
||||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||||
{
|
{
|
||||||
@ -1679,8 +1679,8 @@ _gdk_display_check_grab_ownership (GdkDisplay *display,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Discard device if it's not of the same type */
|
/* Discard device if it's not of the same type */
|
||||||
if ((device_is_keyboard && dev->source != GDK_SOURCE_KEYBOARD) ||
|
if ((device_is_keyboard && gdk_device_get_source (dev) != GDK_SOURCE_KEYBOARD) ||
|
||||||
(!device_is_keyboard && dev->source == GDK_SOURCE_KEYBOARD))
|
(!device_is_keyboard && gdk_device_get_source (dev) == GDK_SOURCE_KEYBOARD))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
grab = grabs->data;
|
grab = grabs->data;
|
||||||
@ -1813,7 +1813,7 @@ gdk_display_pointer_is_grabbed (GdkDisplay *display)
|
|||||||
{
|
{
|
||||||
device = dev->data;
|
device = dev->data;
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_MOUSE &&
|
if (gdk_device_get_source (device) == GDK_SOURCE_MOUSE &&
|
||||||
gdk_display_device_is_grabbed (display, device))
|
gdk_display_device_is_grabbed (display, device))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1853,7 +1853,7 @@ gdk_display_device_is_grabbed (GdkDisplay *display,
|
|||||||
*
|
*
|
||||||
* Returns the #GdkDeviceManager associated to @display.
|
* Returns the #GdkDeviceManager associated to @display.
|
||||||
*
|
*
|
||||||
* Returns: A #GdkDeviceManager, or %NULL. This memory is
|
* Returns: (transfer none): A #GdkDeviceManager, or %NULL. This memory is
|
||||||
* owned by GDK and must not be freed or unreferenced.
|
* owned by GDK and must not be freed or unreferenced.
|
||||||
*
|
*
|
||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
|
@ -499,17 +499,16 @@ gdk_event_copy (const GdkEvent *event)
|
|||||||
case GDK_BUTTON_PRESS:
|
case GDK_BUTTON_PRESS:
|
||||||
case GDK_BUTTON_RELEASE:
|
case GDK_BUTTON_RELEASE:
|
||||||
if (event->button.axes)
|
if (event->button.axes)
|
||||||
new_event->button.axes = g_memdup (event->button.axes,
|
new_event->button.axes = g_memdup (event->button.axes,
|
||||||
sizeof (gdouble) * event->button.device->num_axes);
|
sizeof (gdouble) * gdk_device_get_n_axes (event->button.device));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_MOTION_NOTIFY:
|
case GDK_MOTION_NOTIFY:
|
||||||
if (event->motion.axes)
|
if (event->motion.axes)
|
||||||
new_event->motion.axes = g_memdup (event->motion.axes,
|
new_event->motion.axes = g_memdup (event->motion.axes,
|
||||||
sizeof (gdouble) * event->motion.device->num_axes);
|
sizeof (gdouble) * gdk_device_get_n_axes (event->motion.device));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1278,7 +1277,7 @@ gdk_event_set_screen (GdkEvent *event,
|
|||||||
* to which <literal>event->motion.x_root</literal> and
|
* to which <literal>event->motion.x_root</literal> and
|
||||||
* <literal>event->motion.y_root</literal> are relative.
|
* <literal>event->motion.y_root</literal> are relative.
|
||||||
*
|
*
|
||||||
* Return value: the screen for the event
|
* Return value: (transfer none): the screen for the event
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
|
@ -59,9 +59,15 @@ struct _GdkColorInfo
|
|||||||
guint ref_count;
|
guint ref_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GDK_EVENT_FILTER_REMOVED = 1 << 0
|
||||||
|
} GdkEventFilterFlags;
|
||||||
|
|
||||||
struct _GdkEventFilter {
|
struct _GdkEventFilter {
|
||||||
GdkFilterFunc function;
|
GdkFilterFunc function;
|
||||||
gpointer data;
|
gpointer data;
|
||||||
|
GdkEventFilterFlags flags;
|
||||||
|
guint ref_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GdkClientFilter {
|
struct _GdkClientFilter {
|
||||||
|
@ -412,7 +412,7 @@ gdk_keyval_is_lower (guint keyval)
|
|||||||
*
|
*
|
||||||
* Returns the #GdkKeymap attached to the default display.
|
* Returns the #GdkKeymap attached to the default display.
|
||||||
*
|
*
|
||||||
* Returns: the #GdkKeymap attached to the default display.
|
* Returns: (transfer none): the #GdkKeymap attached to the default display.
|
||||||
*/
|
*/
|
||||||
GdkKeymap*
|
GdkKeymap*
|
||||||
gdk_keymap_get_default (void)
|
gdk_keymap_get_default (void)
|
||||||
|
@ -703,8 +703,8 @@ gdk_offscreen_window_set_embedder (GdkWindow *window,
|
|||||||
*
|
*
|
||||||
* Gets the window that @window is embedded in.
|
* Gets the window that @window is embedded in.
|
||||||
*
|
*
|
||||||
* Returns: the embedding #GdkWindow, or %NULL if @window is not an
|
* Returns: (transfer none): the embedding #GdkWindow, or %NULL
|
||||||
* embedded offscreen window
|
* if @window is not an mbedded offscreen window
|
||||||
*
|
*
|
||||||
* Since: 2.18
|
* Since: 2.18
|
||||||
*/
|
*/
|
||||||
|
@ -317,7 +317,7 @@ gdk_pango_layout_get_clip_region (PangoLayout *layout,
|
|||||||
* is more convenient if you want to keep a context around and track
|
* is more convenient if you want to keep a context around and track
|
||||||
* changes to the screen's font rendering settings.
|
* changes to the screen's font rendering settings.
|
||||||
*
|
*
|
||||||
* Return value: a new #PangoContext for the default display
|
* Return value: (transfer full): a new #PangoContext for the default display
|
||||||
**/
|
**/
|
||||||
PangoContext *
|
PangoContext *
|
||||||
gdk_pango_context_get (void)
|
gdk_pango_context_get (void)
|
||||||
@ -343,7 +343,7 @@ gdk_pango_context_get (void)
|
|||||||
* is more convenient if you want to keep a context around and track
|
* is more convenient if you want to keep a context around and track
|
||||||
* changes to the screen's font rendering settings.
|
* changes to the screen's font rendering settings.
|
||||||
*
|
*
|
||||||
* Return value: a new #PangoContext for @screen
|
* Return value: (transfer full): a new #PangoContext for @screen
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
|
@ -115,8 +115,8 @@ parse_rgb_value (const char *str,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_rgba_parse:
|
* gdk_rgba_parse:
|
||||||
* @spec: the string specifying the color
|
|
||||||
* @rgba: the #GdkRGBA struct to fill in
|
* @rgba: the #GdkRGBA struct to fill in
|
||||||
|
* @spec: the string specifying the color
|
||||||
*
|
*
|
||||||
* Parses a textual representation of a color, filling in
|
* Parses a textual representation of a color, filling in
|
||||||
* the <structfield>red</structfield>, <structfield>green</structfield>,
|
* the <structfield>red</structfield>, <structfield>green</structfield>,
|
||||||
@ -150,8 +150,8 @@ parse_rgb_value (const char *str,
|
|||||||
* Since: 3.0
|
* Since: 3.0
|
||||||
**/
|
**/
|
||||||
gboolean
|
gboolean
|
||||||
gdk_rgba_parse (const gchar *spec,
|
gdk_rgba_parse (GdkRGBA *rgba,
|
||||||
GdkRGBA *rgba)
|
const gchar *spec)
|
||||||
{
|
{
|
||||||
gboolean has_alpha;
|
gboolean has_alpha;
|
||||||
gdouble r, g, b, a;
|
gdouble r, g, b, a;
|
||||||
|
@ -48,8 +48,8 @@ struct _GdkRGBA
|
|||||||
GdkRGBA * gdk_rgba_copy (GdkRGBA *rgba);
|
GdkRGBA * gdk_rgba_copy (GdkRGBA *rgba);
|
||||||
void gdk_rgba_free (GdkRGBA *rgba);
|
void gdk_rgba_free (GdkRGBA *rgba);
|
||||||
|
|
||||||
gboolean gdk_rgba_parse (const gchar *spec,
|
gboolean gdk_rgba_parse (GdkRGBA *rgba,
|
||||||
GdkRGBA *rgba);
|
const gchar *spec);
|
||||||
|
|
||||||
guint gdk_rgba_hash (gconstpointer p);
|
guint gdk_rgba_hash (gconstpointer p);
|
||||||
gboolean gdk_rgba_equal (gconstpointer p1,
|
gboolean gdk_rgba_equal (gconstpointer p1,
|
||||||
|
@ -97,9 +97,9 @@ gdk_selection_owner_set (GdkWindow *owner,
|
|||||||
*
|
*
|
||||||
* Determines the owner of the given selection.
|
* Determines the owner of the given selection.
|
||||||
*
|
*
|
||||||
* Returns: if there is a selection owner for this window,
|
* Returns: (transfer none): if there is a selection owner for
|
||||||
* and it is a window known to the current process,
|
* this window, and it is a window known to the current
|
||||||
* the #GdkWindow that owns the selection, otherwise
|
* process, the #GdkWindow that owns the selection, otherwise
|
||||||
* %NULL. Note that the return value may be owned
|
* %NULL. Note that the return value may be owned
|
||||||
* by a different process if a foreign window
|
* by a different process if a foreign window
|
||||||
* was previously created for that window, but
|
* was previously created for that window, but
|
||||||
|
@ -2212,7 +2212,7 @@ gdk_window_get_window_type (GdkWindow *window)
|
|||||||
*
|
*
|
||||||
* Gets the #GdkVisual describing the pixel format of @window.
|
* Gets the #GdkVisual describing the pixel format of @window.
|
||||||
*
|
*
|
||||||
* Return value: a #GdkVisual
|
* Return value: (transfer none): a #GdkVisual
|
||||||
*
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
**/
|
**/
|
||||||
@ -2234,7 +2234,7 @@ gdk_window_get_visual (GdkWindow *window)
|
|||||||
*
|
*
|
||||||
* Gets the #GdkScreen associated with a #GdkWindow.
|
* Gets the #GdkScreen associated with a #GdkWindow.
|
||||||
*
|
*
|
||||||
* Return value: the #GdkScreen associated with @window
|
* Return value: (transfer none): the #GdkScreen associated with @window
|
||||||
*
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
**/
|
**/
|
||||||
@ -2256,7 +2256,7 @@ gdk_window_get_screen (GdkWindow *window)
|
|||||||
*
|
*
|
||||||
* Gets the #GdkDisplay associated with a #GdkWindow.
|
* Gets the #GdkDisplay associated with a #GdkWindow.
|
||||||
*
|
*
|
||||||
* Return value: the #GdkDisplay associated with @window
|
* Return value: (transfer none): the #GdkDisplay associated with @window
|
||||||
*
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
**/
|
**/
|
||||||
@ -2577,13 +2577,18 @@ gdk_window_add_filter (GdkWindow *window,
|
|||||||
{
|
{
|
||||||
filter = (GdkEventFilter *)tmp_list->data;
|
filter = (GdkEventFilter *)tmp_list->data;
|
||||||
if ((filter->function == function) && (filter->data == data))
|
if ((filter->function == function) && (filter->data == data))
|
||||||
return;
|
{
|
||||||
|
filter->ref_count++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
tmp_list = tmp_list->next;
|
tmp_list = tmp_list->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
filter = g_new (GdkEventFilter, 1);
|
filter = g_new (GdkEventFilter, 1);
|
||||||
filter->function = function;
|
filter->function = function;
|
||||||
filter->data = data;
|
filter->data = data;
|
||||||
|
filter->ref_count = 1;
|
||||||
|
filter->flags = 0;
|
||||||
|
|
||||||
if (private)
|
if (private)
|
||||||
private->filters = g_list_append (private->filters, filter);
|
private->filters = g_list_append (private->filters, filter);
|
||||||
@ -2626,6 +2631,11 @@ gdk_window_remove_filter (GdkWindow *window,
|
|||||||
|
|
||||||
if ((filter->function == function) && (filter->data == data))
|
if ((filter->function == function) && (filter->data == data))
|
||||||
{
|
{
|
||||||
|
filter->flags |= GDK_EVENT_FILTER_REMOVED;
|
||||||
|
filter->ref_count--;
|
||||||
|
if (filter->ref_count != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (private)
|
if (private)
|
||||||
private->filters = g_list_remove_link (private->filters, node);
|
private->filters = g_list_remove_link (private->filters, node);
|
||||||
else
|
else
|
||||||
@ -5120,7 +5130,7 @@ gdk_window_at_pointer (gint *win_x,
|
|||||||
* Obtains the root window (parent all other windows are inside)
|
* Obtains the root window (parent all other windows are inside)
|
||||||
* for the default display and screen.
|
* for the default display and screen.
|
||||||
*
|
*
|
||||||
* Return value: the default root window
|
* Return value: (transfer none): the default root window
|
||||||
**/
|
**/
|
||||||
GdkWindow *
|
GdkWindow *
|
||||||
gdk_get_default_root_window (void)
|
gdk_get_default_root_window (void)
|
||||||
@ -5138,8 +5148,8 @@ gdk_get_default_root_window (void)
|
|||||||
* For example in the X backend, a native window handle is an Xlib
|
* For example in the X backend, a native window handle is an Xlib
|
||||||
* <type>XID</type>.
|
* <type>XID</type>.
|
||||||
*
|
*
|
||||||
* Return value: the newly-created #GdkWindow wrapper for the
|
* Return value: (transfer full): the newly-created #GdkWindow wrapper
|
||||||
* native window or %NULL if the window has been destroyed.
|
* for the native window, or %NULL if the window has been destroyed.
|
||||||
**/
|
**/
|
||||||
GdkWindow *
|
GdkWindow *
|
||||||
gdk_window_foreign_new (GdkNativeWindow anid)
|
gdk_window_foreign_new (GdkNativeWindow anid)
|
||||||
@ -8579,7 +8589,7 @@ send_crossing_event (GdkDisplay *display,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER &&
|
if (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER &&
|
||||||
device->mode != GDK_MODE_DISABLED &&
|
gdk_device_get_mode (device) != GDK_MODE_DISABLED &&
|
||||||
!g_list_find (window->devices_inside, device))
|
!g_list_find (window->devices_inside, device))
|
||||||
window->devices_inside = g_list_prepend (window->devices_inside, device);
|
window->devices_inside = g_list_prepend (window->devices_inside, device);
|
||||||
}
|
}
|
||||||
@ -8945,7 +8955,7 @@ gdk_pointer_grab (GdkWindow * window,
|
|||||||
{
|
{
|
||||||
device = dev->data;
|
device = dev->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_MOUSE)
|
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
res = _gdk_windowing_device_grab (device,
|
res = _gdk_windowing_device_grab (device,
|
||||||
@ -9050,7 +9060,7 @@ gdk_keyboard_grab (GdkWindow *window,
|
|||||||
{
|
{
|
||||||
device = dev->data;
|
device = dev->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
res = _gdk_windowing_device_grab (device,
|
res = _gdk_windowing_device_grab (device,
|
||||||
@ -9438,7 +9448,7 @@ proxy_pointer_event (GdkDisplay *display,
|
|||||||
event->motion.is_hint = is_hint;
|
event->motion.is_hint = is_hint;
|
||||||
event->motion.device = source_event->motion.device;
|
event->motion.device = source_event->motion.device;
|
||||||
event->motion.axes = g_memdup (source_event->motion.axes,
|
event->motion.axes = g_memdup (source_event->motion.axes,
|
||||||
sizeof (gdouble) * source_event->motion.device->num_axes);
|
sizeof (gdouble) * gdk_device_get_n_axes (source_event->motion.device));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9547,7 +9557,7 @@ proxy_button_event (GdkEvent *source_event,
|
|||||||
event->button.state = state;
|
event->button.state = state;
|
||||||
event->button.device = source_event->button.device;
|
event->button.device = source_event->button.device;
|
||||||
event->button.axes = g_memdup (source_event->button.axes,
|
event->button.axes = g_memdup (source_event->button.axes,
|
||||||
sizeof (gdouble) * source_event->button.device->num_axes);
|
sizeof (gdouble) * gdk_device_get_n_axes (source_event->button.device));
|
||||||
|
|
||||||
if (type == GDK_BUTTON_PRESS)
|
if (type == GDK_BUTTON_PRESS)
|
||||||
_gdk_event_button_generate (display, event);
|
_gdk_event_button_generate (display, event);
|
||||||
|
@ -132,7 +132,7 @@ gdkconfig.h : gdkconfig.h.win32
|
|||||||
|
|
||||||
gdk.def: gdk.symbols
|
gdk.def: gdk.symbols
|
||||||
echo EXPORTS > gdk.def
|
echo EXPORTS > gdk.def
|
||||||
cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DGDK_WINDOWING_WIN32 -DALL_FILES \
|
cl /EP -DG_OS_WIN32 -DGDK_WINDOWING_WIN32 \
|
||||||
-DG_GNUC_CONST= \
|
-DG_GNUC_CONST= \
|
||||||
gdk.symbols >> gdk.def
|
gdk.symbols >> gdk.def
|
||||||
|
|
||||||
|
@ -171,19 +171,40 @@ append_event (GdkEvent *event,
|
|||||||
static gint
|
static gint
|
||||||
gdk_event_apply_filters (NSEvent *nsevent,
|
gdk_event_apply_filters (NSEvent *nsevent,
|
||||||
GdkEvent *event,
|
GdkEvent *event,
|
||||||
GList *filters)
|
GList **filters)
|
||||||
{
|
{
|
||||||
GList *tmp_list;
|
GList *tmp_list;
|
||||||
GdkFilterReturn result;
|
GdkFilterReturn result;
|
||||||
|
|
||||||
tmp_list = filters;
|
tmp_list = *filters;
|
||||||
|
|
||||||
while (tmp_list)
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
|
GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
|
||||||
|
GList *node;
|
||||||
tmp_list = tmp_list->next;
|
|
||||||
|
if ((filter->flags & GDK_EVENT_FILTER_REMOVED) != 0)
|
||||||
|
{
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
filter->ref_count++;
|
||||||
result = filter->function (nsevent, event, filter->data);
|
result = filter->function (nsevent, event, filter->data);
|
||||||
|
|
||||||
|
/* get the next node after running the function since the
|
||||||
|
function may add or remove a next node */
|
||||||
|
node = tmp_list;
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
|
||||||
|
filter->ref_count--;
|
||||||
|
if (filter->ref_count == 0)
|
||||||
|
{
|
||||||
|
*filters = g_list_remove_link (*filters, node);
|
||||||
|
g_list_free_1 (node);
|
||||||
|
g_free (filter);
|
||||||
|
}
|
||||||
|
|
||||||
if (result != GDK_FILTER_CONTINUE)
|
if (result != GDK_FILTER_CONTINUE)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -550,7 +571,7 @@ find_toplevel_for_keyboard_event (NSEvent *nsevent)
|
|||||||
GdkDeviceGrabInfo *grab;
|
GdkDeviceGrabInfo *grab;
|
||||||
GdkDevice *device = l->data;
|
GdkDevice *device = l->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source(device) != GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
grab = _gdk_display_get_last_device_grab (display, device);
|
grab = _gdk_display_get_last_device_grab (display, device);
|
||||||
@ -1165,7 +1186,7 @@ gdk_event_translate (GdkEvent *event,
|
|||||||
/* Apply global filters */
|
/* Apply global filters */
|
||||||
GdkFilterReturn result;
|
GdkFilterReturn result;
|
||||||
|
|
||||||
result = gdk_event_apply_filters (nsevent, event, _gdk_default_filters);
|
result = gdk_event_apply_filters (nsevent, event, &_gdk_default_filters);
|
||||||
if (result != GDK_FILTER_CONTINUE)
|
if (result != GDK_FILTER_CONTINUE)
|
||||||
{
|
{
|
||||||
return_val = (result == GDK_FILTER_TRANSLATE) ? TRUE : FALSE;
|
return_val = (result == GDK_FILTER_TRANSLATE) ? TRUE : FALSE;
|
||||||
@ -1206,7 +1227,7 @@ gdk_event_translate (GdkEvent *event,
|
|||||||
{
|
{
|
||||||
g_object_ref (window);
|
g_object_ref (window);
|
||||||
|
|
||||||
result = gdk_event_apply_filters (nsevent, event, filter_private->filters);
|
result = gdk_event_apply_filters (nsevent, event, &filter_private->filters);
|
||||||
|
|
||||||
g_object_unref (window);
|
g_object_unref (window);
|
||||||
|
|
||||||
|
@ -228,7 +228,7 @@ _gdk_input_init (void)
|
|||||||
{
|
{
|
||||||
GdkDevice *device = l->data;
|
GdkDevice *device = l->data;
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source(device) == GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
_gdk_input_devices = g_list_prepend (_gdk_input_devices, l->data);
|
_gdk_input_devices = g_list_prepend (_gdk_input_devices, l->data);
|
||||||
@ -245,7 +245,7 @@ _gdk_input_init (void)
|
|||||||
{
|
{
|
||||||
GdkDevice *device = list->data;
|
GdkDevice *device = list->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_MOUSE)
|
if (gdk_device_get_source(device) != GDK_SOURCE_MOUSE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
_gdk_display->core_pointer = device;
|
_gdk_display->core_pointer = device;
|
||||||
@ -273,11 +273,7 @@ _gdk_input_exit (void)
|
|||||||
if (gdkdev != (GdkDevicePrivate *)_gdk_core_pointer)
|
if (gdkdev != (GdkDevicePrivate *)_gdk_core_pointer)
|
||||||
{
|
{
|
||||||
gdk_device_set_mode ((GdkDevice *)gdkdev, GDK_MODE_DISABLED);
|
gdk_device_set_mode ((GdkDevice *)gdkdev, GDK_MODE_DISABLED);
|
||||||
|
g_object_unref(gdkdev);
|
||||||
g_free (gdkdev->info.name);
|
|
||||||
g_free (gdkdev->info.axes);
|
|
||||||
g_free (gdkdev->info.keys);
|
|
||||||
g_free (gdkdev);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,17 +8,17 @@ test_color_parse (void)
|
|||||||
GdkRGBA expected;
|
GdkRGBA expected;
|
||||||
gboolean res;
|
gboolean res;
|
||||||
|
|
||||||
res = gdk_rgba_parse ("foo", &color);
|
res = gdk_rgba_parse (&color, "foo");
|
||||||
g_assert (!res);
|
g_assert (!res);
|
||||||
|
|
||||||
res = gdk_rgba_parse ("", &color);
|
res = gdk_rgba_parse (&color, "");
|
||||||
g_assert (!res);
|
g_assert (!res);
|
||||||
|
|
||||||
expected.red = 100/255.;
|
expected.red = 100/255.;
|
||||||
expected.green = 90/255.;
|
expected.green = 90/255.;
|
||||||
expected.blue = 80/255.;
|
expected.blue = 80/255.;
|
||||||
expected.alpha = 0.1;
|
expected.alpha = 0.1;
|
||||||
res = gdk_rgba_parse ("rgba(100,90,80,0.1)", &color);
|
res = gdk_rgba_parse (&color, "rgba(100,90,80,0.1)");
|
||||||
g_assert (res);
|
g_assert (res);
|
||||||
g_assert (gdk_rgba_equal (&color, &expected));
|
g_assert (gdk_rgba_equal (&color, &expected));
|
||||||
|
|
||||||
@ -26,11 +26,11 @@ test_color_parse (void)
|
|||||||
expected.green = 0.3;
|
expected.green = 0.3;
|
||||||
expected.blue = 0.2;
|
expected.blue = 0.2;
|
||||||
expected.alpha = 0.1;
|
expected.alpha = 0.1;
|
||||||
res = gdk_rgba_parse ("rgba(40%,30%,20%,0.1)", &color);
|
res = gdk_rgba_parse (&color, "rgba(40%,30%,20%,0.1)");
|
||||||
g_assert (res);
|
g_assert (res);
|
||||||
g_assert (gdk_rgba_equal (&color, &expected));
|
g_assert (gdk_rgba_equal (&color, &expected));
|
||||||
|
|
||||||
res = gdk_rgba_parse ("rgba( 40 % , 30 % , 20 % , 0.1 )", &color);
|
res = gdk_rgba_parse (&color, "rgba( 40 % , 30 % , 20 % , 0.1 )");
|
||||||
g_assert (res);
|
g_assert (res);
|
||||||
g_assert (gdk_rgba_equal (&color, &expected));
|
g_assert (gdk_rgba_equal (&color, &expected));
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ test_color_parse (void)
|
|||||||
expected.green = 0.0;
|
expected.green = 0.0;
|
||||||
expected.blue = 0.0;
|
expected.blue = 0.0;
|
||||||
expected.alpha = 1.0;
|
expected.alpha = 1.0;
|
||||||
res = gdk_rgba_parse ("red", &color);
|
res = gdk_rgba_parse (&color, "red");
|
||||||
g_assert (res);
|
g_assert (res);
|
||||||
g_assert (gdk_rgba_equal (&color, &expected));
|
g_assert (gdk_rgba_equal (&color, &expected));
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ test_color_parse (void)
|
|||||||
expected.green = 0x8080 / 65535.;
|
expected.green = 0x8080 / 65535.;
|
||||||
expected.blue = 1.0;
|
expected.blue = 1.0;
|
||||||
expected.alpha = 1.0;
|
expected.alpha = 1.0;
|
||||||
res = gdk_rgba_parse ("#0080ff", &color);
|
res = gdk_rgba_parse (&color, "#0080ff");
|
||||||
g_assert (res);
|
g_assert (res);
|
||||||
g_assert (gdk_rgba_equal (&color, &expected));
|
g_assert (gdk_rgba_equal (&color, &expected));
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ test_color_to_string (void)
|
|||||||
|
|
||||||
orig = g_strdup (setlocale (LC_ALL, NULL));
|
orig = g_strdup (setlocale (LC_ALL, NULL));
|
||||||
res = gdk_rgba_to_string (&rgba);
|
res = gdk_rgba_to_string (&rgba);
|
||||||
gdk_rgba_parse (res, &out);
|
gdk_rgba_parse (&out, res);
|
||||||
g_assert (gdk_rgba_equal (&rgba, &out));
|
g_assert (gdk_rgba_equal (&rgba, &out));
|
||||||
|
|
||||||
setlocale (LC_ALL, "de_DE.utf-8");
|
setlocale (LC_ALL, "de_DE.utf-8");
|
||||||
|
@ -319,7 +319,7 @@ gdk_device_win32_grab (GdkDevice *device,
|
|||||||
GdkCursor *cursor,
|
GdkCursor *cursor,
|
||||||
guint32 time_)
|
guint32 time_)
|
||||||
{
|
{
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
SetCapture (GDK_WINDOW_HWND (window));
|
SetCapture (GDK_WINDOW_HWND (window));
|
||||||
|
|
||||||
return GDK_GRAB_SUCCESS;
|
return GDK_GRAB_SUCCESS;
|
||||||
@ -333,7 +333,7 @@ gdk_device_win32_ungrab (GdkDevice *device,
|
|||||||
|
|
||||||
display = gdk_device_get_display (device);
|
display = gdk_device_get_display (device);
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
ReleaseCapture ();
|
ReleaseCapture ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab,
|
|||||||
if (!_gdk_device_wintab_get_window_coords (impl_window, &root_x, &root_y))
|
if (!_gdk_device_wintab_get_window_coords (impl_window, &root_x, &root_y))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < device->num_axes; i++)
|
for (i = 0; i < gdk_device_get_n_axes (device); i++)
|
||||||
{
|
{
|
||||||
GdkAxisUse use;
|
GdkAxisUse use;
|
||||||
|
|
||||||
|
@ -1025,7 +1025,7 @@ fill_key_event_string (GdkEvent *event)
|
|||||||
static GdkFilterReturn
|
static GdkFilterReturn
|
||||||
apply_event_filters (GdkWindow *window,
|
apply_event_filters (GdkWindow *window,
|
||||||
MSG *msg,
|
MSG *msg,
|
||||||
GList *filters)
|
GList **filters)
|
||||||
{
|
{
|
||||||
GdkFilterReturn result = GDK_FILTER_CONTINUE;
|
GdkFilterReturn result = GDK_FILTER_CONTINUE;
|
||||||
GdkEvent *event;
|
GdkEvent *event;
|
||||||
@ -1043,13 +1043,34 @@ apply_event_filters (GdkWindow *window,
|
|||||||
*/
|
*/
|
||||||
node = _gdk_event_queue_append (_gdk_display, event);
|
node = _gdk_event_queue_append (_gdk_display, event);
|
||||||
|
|
||||||
tmp_list = filters;
|
tmp_list = *filters;
|
||||||
while (tmp_list)
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
GdkEventFilter *filter = (GdkEventFilter *) tmp_list->data;
|
GdkEventFilter *filter = (GdkEventFilter *) tmp_list->data;
|
||||||
|
GList *node;
|
||||||
tmp_list = tmp_list->next;
|
|
||||||
|
if ((filter->flags & GDK_EVENT_FILTER_REMOVED) != 0)
|
||||||
|
{
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
filter->ref_count++;
|
||||||
result = filter->function (msg, event, filter->data);
|
result = filter->function (msg, event, filter->data);
|
||||||
|
|
||||||
|
/* get the next node after running the function since the
|
||||||
|
function may add or remove a next node */
|
||||||
|
node = tmp_list;
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
|
||||||
|
filter->ref_count--;
|
||||||
|
if (filter->ref_count == 0)
|
||||||
|
{
|
||||||
|
*filters = g_list_remove_link (*filters, node);
|
||||||
|
g_list_free_1 (node);
|
||||||
|
g_free (filter);
|
||||||
|
}
|
||||||
|
|
||||||
if (result != GDK_FILTER_CONTINUE)
|
if (result != GDK_FILTER_CONTINUE)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1756,7 +1777,7 @@ gdk_event_translate (MSG *msg,
|
|||||||
{
|
{
|
||||||
/* Apply global filters */
|
/* Apply global filters */
|
||||||
|
|
||||||
GdkFilterReturn result = apply_event_filters (NULL, msg, _gdk_default_filters);
|
GdkFilterReturn result = apply_event_filters (NULL, msg, &_gdk_default_filters);
|
||||||
|
|
||||||
/* If result is GDK_FILTER_CONTINUE, we continue as if nothing
|
/* If result is GDK_FILTER_CONTINUE, we continue as if nothing
|
||||||
* happened. If it is GDK_FILTER_REMOVE or GDK_FILTER_TRANSLATE,
|
* happened. If it is GDK_FILTER_REMOVE or GDK_FILTER_TRANSLATE,
|
||||||
@ -1822,7 +1843,7 @@ gdk_event_translate (MSG *msg,
|
|||||||
{
|
{
|
||||||
/* Apply per-window filters */
|
/* Apply per-window filters */
|
||||||
|
|
||||||
GdkFilterReturn result = apply_event_filters (window, msg, ((GdkWindowObject *) window)->filters);
|
GdkFilterReturn result = apply_event_filters (window, msg, &((GdkWindowObject *) window)->filters);
|
||||||
|
|
||||||
if (result == GDK_FILTER_REMOVE || result == GDK_FILTER_TRANSLATE)
|
if (result == GDK_FILTER_REMOVE || result == GDK_FILTER_TRANSLATE)
|
||||||
{
|
{
|
||||||
|
@ -36,54 +36,43 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_display_name (GFile *file)
|
get_display_name (GFile *file,
|
||||||
|
GFileInfo *info)
|
||||||
{
|
{
|
||||||
GFileInfo *info;
|
|
||||||
char *name, *tmp;
|
char *name, *tmp;
|
||||||
|
|
||||||
/* This does sync I/O, which isn't ideal.
|
|
||||||
* It should probably use the NautilusFile machinery
|
|
||||||
*/
|
|
||||||
|
|
||||||
name = NULL;
|
name = NULL;
|
||||||
info = g_file_query_info (file,
|
|
||||||
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, 0, NULL, NULL);
|
|
||||||
if (info)
|
if (info)
|
||||||
{
|
name = g_strdup (g_file_info_get_display_name (info));
|
||||||
name = g_strdup (g_file_info_get_display_name (info));
|
|
||||||
g_object_unref (info);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
{
|
{
|
||||||
name = g_file_get_basename (file);
|
name = g_file_get_basename (file);
|
||||||
if (!g_utf8_validate (name, -1, NULL))
|
if (!g_utf8_validate (name, -1, NULL))
|
||||||
{
|
{
|
||||||
tmp = name;
|
tmp = name;
|
||||||
name =
|
name =
|
||||||
g_uri_escape_string (name, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH,
|
g_uri_escape_string (name, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, TRUE);
|
||||||
TRUE);
|
g_free (tmp);
|
||||||
g_free (tmp);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GIcon *
|
static GIcon *
|
||||||
get_icon (GFile *file)
|
get_icon (GFile *file,
|
||||||
|
GFileInfo *info)
|
||||||
{
|
{
|
||||||
GFileInfo *info;
|
|
||||||
GIcon *icon;
|
GIcon *icon;
|
||||||
|
|
||||||
icon = NULL;
|
icon = NULL;
|
||||||
info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_ICON, 0, NULL, NULL);
|
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
icon = g_file_info_get_icon (info);
|
icon = g_file_info_get_icon (info);
|
||||||
if (icon)
|
if (icon)
|
||||||
g_object_ref (icon);
|
g_object_ref (icon);
|
||||||
g_object_unref (info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return icon;
|
return icon;
|
||||||
@ -99,13 +88,13 @@ gicon_to_string (GIcon *icon)
|
|||||||
{
|
{
|
||||||
file = g_file_icon_get_file (G_FILE_ICON (icon));
|
file = g_file_icon_get_file (G_FILE_ICON (icon));
|
||||||
if (file)
|
if (file)
|
||||||
return g_file_get_path (file);
|
return g_file_get_path (file);
|
||||||
}
|
}
|
||||||
else if (G_IS_THEMED_ICON (icon))
|
else if (G_IS_THEMED_ICON (icon))
|
||||||
{
|
{
|
||||||
names = g_themed_icon_get_names (G_THEMED_ICON (icon));
|
names = g_themed_icon_get_names (G_THEMED_ICON (icon));
|
||||||
if (names)
|
if (names)
|
||||||
return g_strdup (names[0]);
|
return g_strdup (names[0]);
|
||||||
}
|
}
|
||||||
else if (G_IS_EMBLEMED_ICON (icon))
|
else if (G_IS_EMBLEMED_ICON (icon))
|
||||||
{
|
{
|
||||||
@ -121,11 +110,11 @@ gicon_to_string (GIcon *icon)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
end_startup_notification (GdkDisplay *display,
|
end_startup_notification (GdkDisplay *display,
|
||||||
const char *startup_id)
|
const char *startup_id)
|
||||||
{
|
{
|
||||||
gdk_x11_display_broadcast_startup_message (display, "remove",
|
gdk_x11_display_broadcast_startup_message (display, "remove",
|
||||||
"ID", startup_id,
|
"ID", startup_id,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -210,19 +199,19 @@ startup_timeout (void *data)
|
|||||||
next = tmp->next;
|
next = tmp->next;
|
||||||
|
|
||||||
elapsed =
|
elapsed =
|
||||||
((((double) now.tv_sec - sn_data->time.tv_sec) * G_USEC_PER_SEC +
|
((((double) now.tv_sec - sn_data->time.tv_sec) * G_USEC_PER_SEC +
|
||||||
(now.tv_usec - sn_data->time.tv_usec))) / 1000.0;
|
(now.tv_usec - sn_data->time.tv_usec))) / 1000.0;
|
||||||
|
|
||||||
if (elapsed >= STARTUP_TIMEOUT_LENGTH)
|
if (elapsed >= STARTUP_TIMEOUT_LENGTH)
|
||||||
{
|
{
|
||||||
std->contexts = g_slist_remove (std->contexts, sn_data);
|
std->contexts = g_slist_remove (std->contexts, sn_data);
|
||||||
end_startup_notification (sn_data->display, sn_data->startup_id);
|
end_startup_notification (sn_data->display, sn_data->startup_id);
|
||||||
free_startup_notification_data (sn_data);
|
free_startup_notification_data (sn_data);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
min_timeout = MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed));
|
min_timeout = MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed));
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = next;
|
tmp = next;
|
||||||
}
|
}
|
||||||
@ -239,7 +228,7 @@ startup_timeout (void *data)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_startup_timeout (GdkScreen *screen,
|
add_startup_timeout (GdkScreen *screen,
|
||||||
const char *startup_id)
|
const char *startup_id)
|
||||||
{
|
{
|
||||||
StartupTimeoutData *data;
|
StartupTimeoutData *data;
|
||||||
StartupNotificationData *sn_data;
|
StartupNotificationData *sn_data;
|
||||||
@ -253,7 +242,7 @@ add_startup_timeout (GdkScreen *screen,
|
|||||||
data->timeout_id = 0;
|
data->timeout_id = 0;
|
||||||
|
|
||||||
g_object_set_data_full (G_OBJECT (screen), "appinfo-startup-data",
|
g_object_set_data_full (G_OBJECT (screen), "appinfo-startup-data",
|
||||||
data, free_startup_timeout);
|
data, free_startup_timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
sn_data = g_new (StartupNotificationData, 1);
|
sn_data = g_new (StartupNotificationData, 1);
|
||||||
@ -265,14 +254,14 @@ add_startup_timeout (GdkScreen *screen,
|
|||||||
|
|
||||||
if (data->timeout_id == 0)
|
if (data->timeout_id == 0)
|
||||||
data->timeout_id = g_timeout_add_seconds (STARTUP_TIMEOUT_LENGTH_SECONDS,
|
data->timeout_id = g_timeout_add_seconds (STARTUP_TIMEOUT_LENGTH_SECONDS,
|
||||||
startup_timeout, data);
|
startup_timeout, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
||||||
GAppInfo *info,
|
GAppInfo *info,
|
||||||
GList *files)
|
GList *files)
|
||||||
{
|
{
|
||||||
static int sequence = 0;
|
static int sequence = 0;
|
||||||
GdkAppLaunchContextPrivate *priv;
|
GdkAppLaunchContextPrivate *priv;
|
||||||
@ -288,6 +277,7 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
GIcon *icon;
|
GIcon *icon;
|
||||||
guint32 timestamp;
|
guint32 timestamp;
|
||||||
char *startup_id;
|
char *startup_id;
|
||||||
|
GFileInfo *fileinfo;
|
||||||
|
|
||||||
priv = GDK_APP_LAUNCH_CONTEXT (context)->priv;
|
priv = GDK_APP_LAUNCH_CONTEXT (context)->priv;
|
||||||
|
|
||||||
@ -307,20 +297,32 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
screen = gdk_display_get_default_screen (display);
|
screen = gdk_display_get_default_screen (display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fileinfo = NULL;
|
||||||
|
|
||||||
files_count = g_list_length (files);
|
files_count = g_list_length (files);
|
||||||
if (files_count == 0)
|
if (files_count == 0)
|
||||||
description = g_strdup_printf (_("Starting %s"), g_app_info_get_name (info));
|
{
|
||||||
|
description = g_strdup_printf (_("Starting %s"), g_app_info_get_name (info));
|
||||||
|
}
|
||||||
else if (files_count == 1)
|
else if (files_count == 1)
|
||||||
{
|
{
|
||||||
gchar *display_name = get_display_name (files->data);
|
gchar *display_name;
|
||||||
|
|
||||||
|
if (g_file_is_native (files->data))
|
||||||
|
fileinfo = g_file_query_info (files->data,
|
||||||
|
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
|
||||||
|
G_FILE_ATTRIBUTE_STANDARD_ICON,
|
||||||
|
0, NULL, NULL);
|
||||||
|
|
||||||
|
display_name = get_display_name (files->data, fileinfo);
|
||||||
description = g_strdup_printf (_("Opening %s"), display_name);
|
description = g_strdup_printf (_("Opening %s"), display_name);
|
||||||
g_free (display_name);
|
g_free (display_name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
description = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE,
|
description = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE,
|
||||||
"Opening %d Item",
|
"Opening %d Item",
|
||||||
"Opening %d Items",
|
"Opening %d Items",
|
||||||
files_count), files_count);
|
files_count), files_count);
|
||||||
|
|
||||||
icon_name = NULL;
|
icon_name = NULL;
|
||||||
if (priv->icon_name)
|
if (priv->icon_name)
|
||||||
@ -330,18 +332,18 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
icon = NULL;
|
icon = NULL;
|
||||||
|
|
||||||
if (priv->icon != NULL)
|
if (priv->icon != NULL)
|
||||||
icon = g_object_ref (priv->icon);
|
icon = g_object_ref (priv->icon);
|
||||||
else if (files_count == 1)
|
else if (files_count == 1)
|
||||||
icon = get_icon (files->data);
|
icon = get_icon (files->data, fileinfo);
|
||||||
|
|
||||||
if (icon == NULL)
|
if (icon == NULL)
|
||||||
{
|
{
|
||||||
icon = g_app_info_get_icon (info);
|
icon = g_app_info_get_icon (info);
|
||||||
g_object_ref (icon);
|
g_object_ref (icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (icon)
|
if (icon)
|
||||||
icon_name = gicon_to_string (icon);
|
icon_name = gicon_to_string (icon);
|
||||||
|
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
}
|
}
|
||||||
@ -353,7 +355,7 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
timestamp = gdk_x11_display_get_user_time (display);
|
timestamp = gdk_x11_display_get_user_time (display);
|
||||||
|
|
||||||
screen_str = g_strdup_printf ("%d", gdk_screen_get_number (screen));
|
screen_str = g_strdup_printf ("%d", gdk_screen_get_number (screen));
|
||||||
if (priv->workspace > -1)
|
if (priv->workspace > -1)
|
||||||
workspace_str = g_strdup_printf ("%d", priv->workspace);
|
workspace_str = g_strdup_printf ("%d", priv->workspace);
|
||||||
else
|
else
|
||||||
workspace_str = NULL;
|
workspace_str = NULL;
|
||||||
@ -364,30 +366,31 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
application_id = NULL;
|
application_id = NULL;
|
||||||
|
|
||||||
startup_id = g_strdup_printf ("%s-%lu-%s-%s-%d_TIME%lu",
|
startup_id = g_strdup_printf ("%s-%lu-%s-%s-%d_TIME%lu",
|
||||||
g_get_prgname (),
|
g_get_prgname (),
|
||||||
(unsigned long)getpid (),
|
(unsigned long)getpid (),
|
||||||
g_get_host_name (),
|
g_get_host_name (),
|
||||||
binary_name,
|
binary_name,
|
||||||
sequence++,
|
sequence++,
|
||||||
(unsigned long)timestamp);
|
(unsigned long)timestamp);
|
||||||
|
|
||||||
|
|
||||||
gdk_x11_display_broadcast_startup_message (display, "new",
|
gdk_x11_display_broadcast_startup_message (display, "new",
|
||||||
"ID", startup_id,
|
"ID", startup_id,
|
||||||
"NAME", g_app_info_get_name (info),
|
"NAME", g_app_info_get_name (info),
|
||||||
"SCREEN", screen_str,
|
"SCREEN", screen_str,
|
||||||
"BIN", binary_name,
|
"BIN", binary_name,
|
||||||
"ICON", icon_name,
|
"ICON", icon_name,
|
||||||
"DESKTOP", workspace_str,
|
"DESKTOP", workspace_str,
|
||||||
"DESCRIPTION", description,
|
"DESCRIPTION", description,
|
||||||
"WMCLASS", NULL, /* FIXME */
|
"WMCLASS", NULL, /* FIXME */
|
||||||
"APPLICATION_ID", application_id,
|
"APPLICATION_ID", application_id,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
g_free (description);
|
g_free (description);
|
||||||
g_free (screen_str);
|
g_free (screen_str);
|
||||||
g_free (workspace_str);
|
g_free (workspace_str);
|
||||||
g_free (icon_name);
|
g_free (icon_name);
|
||||||
|
if (fileinfo)
|
||||||
|
g_object_unref (fileinfo);
|
||||||
|
|
||||||
add_startup_timeout (screen, startup_id);
|
add_startup_timeout (screen, startup_id);
|
||||||
|
|
||||||
@ -396,8 +399,8 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_windowing_launch_failed (GAppLaunchContext *context,
|
_gdk_windowing_launch_failed (GAppLaunchContext *context,
|
||||||
const char *startup_notify_id)
|
const char *startup_notify_id)
|
||||||
{
|
{
|
||||||
GdkAppLaunchContextPrivate *priv;
|
GdkAppLaunchContextPrivate *priv;
|
||||||
GdkScreen *screen;
|
GdkScreen *screen;
|
||||||
@ -419,22 +422,22 @@ _gdk_windowing_launch_failed (GAppLaunchContext *context,
|
|||||||
if (data)
|
if (data)
|
||||||
{
|
{
|
||||||
for (l = data->contexts; l != NULL; l = l->next)
|
for (l = data->contexts; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
sn_data = l->data;
|
sn_data = l->data;
|
||||||
if (strcmp (startup_notify_id, sn_data->startup_id) == 0)
|
if (strcmp (startup_notify_id, sn_data->startup_id) == 0)
|
||||||
{
|
{
|
||||||
data->contexts = g_slist_remove (data->contexts, sn_data);
|
data->contexts = g_slist_remove (data->contexts, sn_data);
|
||||||
end_startup_notification (sn_data->display, sn_data->startup_id);
|
end_startup_notification (sn_data->display, sn_data->startup_id);
|
||||||
free_startup_notification_data (sn_data);
|
free_startup_notification_data (sn_data);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->contexts == NULL)
|
if (data->contexts == NULL)
|
||||||
{
|
{
|
||||||
g_source_remove (data->timeout_id);
|
g_source_remove (data->timeout_id);
|
||||||
data->timeout_id = 0;
|
data->timeout_id = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ gdk_x11_cursor_get_xcursor (GdkCursor *cursor)
|
|||||||
*
|
*
|
||||||
* Returns the display on which the #GdkCursor is defined.
|
* Returns the display on which the #GdkCursor is defined.
|
||||||
*
|
*
|
||||||
* Returns: the #GdkDisplay associated to @cursor
|
* Returns: (transfer none): the #GdkDisplay associated to @cursor
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
@ -387,7 +387,7 @@ gdk_cursor_get_display (GdkCursor *cursor)
|
|||||||
* on the cursor, GDK may not be able to obtain the image data. In this
|
* on the cursor, GDK may not be able to obtain the image data. In this
|
||||||
* case, %NULL is returned.
|
* case, %NULL is returned.
|
||||||
*
|
*
|
||||||
* Returns: a #GdkPixbuf representing @cursor, or %NULL
|
* Returns: (transfer full): a #GdkPixbuf representing @cursor, or %NULL
|
||||||
*
|
*
|
||||||
* Since: 2.8
|
* Since: 2.8
|
||||||
*/
|
*/
|
||||||
|
@ -313,7 +313,7 @@ gdk_device_core_grab (GdkDevice *device,
|
|||||||
else
|
else
|
||||||
xconfine_to = GDK_WINDOW_XID (confine_to);
|
xconfine_to = GDK_WINDOW_XID (confine_to);
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
/* Device is a keyboard */
|
/* Device is a keyboard */
|
||||||
status = XGrabKeyboard (GDK_DISPLAY_XDISPLAY (display),
|
status = XGrabKeyboard (GDK_DISPLAY_XDISPLAY (display),
|
||||||
@ -371,7 +371,7 @@ gdk_device_core_ungrab (GdkDevice *device,
|
|||||||
|
|
||||||
display = gdk_device_get_display (device);
|
display = gdk_device_get_display (device);
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
XUngrabKeyboard (GDK_DISPLAY_XDISPLAY (display), time_);
|
XUngrabKeyboard (GDK_DISPLAY_XDISPLAY (display), time_);
|
||||||
else
|
else
|
||||||
XUngrabPointer (GDK_DISPLAY_XDISPLAY (display), time_);
|
XUngrabPointer (GDK_DISPLAY_XDISPLAY (display), time_);
|
||||||
|
@ -155,7 +155,8 @@ gdk_device_xi_constructed (GObject *object)
|
|||||||
device->device_id);
|
device->device_id);
|
||||||
|
|
||||||
if (gdk_error_trap_pop ())
|
if (gdk_error_trap_pop ())
|
||||||
g_warning ("Device %s can't be opened", GDK_DEVICE (device)->name);
|
g_warning ("Device %s can't be opened",
|
||||||
|
gdk_device_get_name (GDK_DEVICE (device)));
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed)
|
if (G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed)
|
||||||
G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed (object);
|
G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed (object);
|
||||||
@ -556,10 +557,11 @@ gdk_device_xi_update_axes (GdkDevice *device,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
device_xi = GDK_DEVICE_XI (device);
|
device_xi = GDK_DEVICE_XI (device);
|
||||||
g_return_if_fail (first_axis >= 0 && first_axis + axes_count <= device->num_axes);
|
g_return_if_fail (first_axis >= 0 &&
|
||||||
|
first_axis + axes_count <= gdk_device_get_n_axes (device));
|
||||||
|
|
||||||
if (!device_xi->axis_data)
|
if (!device_xi->axis_data)
|
||||||
device_xi->axis_data = g_new0 (gint, device->num_axes);
|
device_xi->axis_data = g_new0 (gint, gdk_device_get_n_axes (device));
|
||||||
|
|
||||||
for (i = 0; i < axes_count; i++)
|
for (i = 0; i < axes_count; i++)
|
||||||
device_xi->axis_data[first_axis + i] = axis_data[i];
|
device_xi->axis_data[first_axis + i] = axis_data[i];
|
||||||
@ -577,6 +579,7 @@ gdk_device_xi_translate_axes (GdkDevice *device,
|
|||||||
GdkWindow *impl_window;
|
GdkWindow *impl_window;
|
||||||
gdouble root_x, root_y;
|
gdouble root_x, root_y;
|
||||||
gdouble temp_x, temp_y;
|
gdouble temp_x, temp_y;
|
||||||
|
gint n_axes;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
device_xi = GDK_DEVICE_XI (device);
|
device_xi = GDK_DEVICE_XI (device);
|
||||||
@ -586,7 +589,9 @@ gdk_device_xi_translate_axes (GdkDevice *device,
|
|||||||
if (!gdk_device_xi_get_window_info (impl_window, &root_x, &root_y))
|
if (!gdk_device_xi_get_window_info (impl_window, &root_x, &root_y))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < device->num_axes; i++)
|
n_axes = gdk_device_get_n_axes (device);
|
||||||
|
|
||||||
|
for (i = 0; i < n_axes; i++)
|
||||||
{
|
{
|
||||||
GdkAxisUse use;
|
GdkAxisUse use;
|
||||||
|
|
||||||
@ -596,7 +601,7 @@ gdk_device_xi_translate_axes (GdkDevice *device,
|
|||||||
{
|
{
|
||||||
case GDK_AXIS_X:
|
case GDK_AXIS_X:
|
||||||
case GDK_AXIS_Y:
|
case GDK_AXIS_Y:
|
||||||
if (device->mode == GDK_MODE_WINDOW)
|
if (gdk_device_get_mode (device) == GDK_MODE_WINDOW)
|
||||||
_gdk_device_translate_window_coord (device, window,
|
_gdk_device_translate_window_coord (device, window,
|
||||||
i, axis_data[i],
|
i, axis_data[i],
|
||||||
&axes[i]);
|
&axes[i]);
|
||||||
|
@ -205,7 +205,7 @@ gdk_device_xi2_get_state (GdkDevice *device,
|
|||||||
case GDK_AXIS_X:
|
case GDK_AXIS_X:
|
||||||
case GDK_AXIS_Y:
|
case GDK_AXIS_Y:
|
||||||
case GDK_AXIS_IGNORE:
|
case GDK_AXIS_IGNORE:
|
||||||
if (device->mode == GDK_MODE_WINDOW)
|
if (gdk_device_get_mode (device) == GDK_MODE_WINDOW)
|
||||||
_gdk_device_translate_window_coord (device, window, j, value, &axes[j]);
|
_gdk_device_translate_window_coord (device, window, j, value, &axes[j]);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -441,7 +441,7 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator,
|
|||||||
event->button.x_root = (gdouble) xdbe->x_root;
|
event->button.x_root = (gdouble) xdbe->x_root;
|
||||||
event->button.y_root = (gdouble) xdbe->y_root;
|
event->button.y_root = (gdouble) xdbe->y_root;
|
||||||
|
|
||||||
event->button.axes = g_new0 (gdouble, device->num_axes);
|
event->button.axes = g_new0 (gdouble, gdk_device_get_n_axes (device));
|
||||||
gdk_device_xi_update_axes (device, xdbe->axes_count,
|
gdk_device_xi_update_axes (device, xdbe->axes_count,
|
||||||
xdbe->first_axis, xdbe->axis_data);
|
xdbe->first_axis, xdbe->axis_data);
|
||||||
gdk_device_xi_translate_axes (device, window,
|
gdk_device_xi_translate_axes (device, window,
|
||||||
@ -487,13 +487,15 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator,
|
|||||||
xdke->keycode));
|
xdke->keycode));
|
||||||
|
|
||||||
if (xdke->keycode < device_xi->min_keycode ||
|
if (xdke->keycode < device_xi->min_keycode ||
|
||||||
xdke->keycode >= device_xi->min_keycode + device->num_keys)
|
xdke->keycode >= device_xi->min_keycode + gdk_device_get_n_keys (device))
|
||||||
{
|
{
|
||||||
g_warning ("Invalid device key code received");
|
g_warning ("Invalid device key code received");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
event->key.keyval = device->keys[xdke->keycode - device_xi->min_keycode].keyval;
|
gdk_device_get_key (device, xdke->keycode - device_xi->min_keycode,
|
||||||
|
&event->key.keyval,
|
||||||
|
&event->key.state);
|
||||||
|
|
||||||
if (event->key.keyval == 0)
|
if (event->key.keyval == 0)
|
||||||
{
|
{
|
||||||
@ -509,8 +511,7 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator,
|
|||||||
event->key.window = g_object_ref (window);
|
event->key.window = g_object_ref (window);
|
||||||
event->key.time = xdke->time;
|
event->key.time = xdke->time;
|
||||||
|
|
||||||
event->key.state = translate_state (xdke->state, xdke->device_state)
|
event->key.state |= translate_state (xdke->state, xdke->device_state);
|
||||||
| device->keys[xdke->keycode - device_xi->min_keycode].modifiers;
|
|
||||||
|
|
||||||
/* Add a string translation for the key event */
|
/* Add a string translation for the key event */
|
||||||
if ((event->key.keyval >= 0x20) && (event->key.keyval <= 0xFF))
|
if ((event->key.keyval >= 0x20) && (event->key.keyval <= 0xFF))
|
||||||
@ -552,7 +553,7 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator,
|
|||||||
event->motion.x_root = (gdouble) xdme->x_root;
|
event->motion.x_root = (gdouble) xdme->x_root;
|
||||||
event->motion.y_root = (gdouble) xdme->y_root;
|
event->motion.y_root = (gdouble) xdme->y_root;
|
||||||
|
|
||||||
event->motion.axes = g_new0 (gdouble, device->num_axes);
|
event->motion.axes = g_new0 (gdouble, gdk_device_get_n_axes (device));
|
||||||
gdk_device_xi_update_axes (device, xdme->axes_count,
|
gdk_device_xi_update_axes (device, xdme->axes_count,
|
||||||
xdme->first_axis, xdme->axis_data);
|
xdme->first_axis, xdme->axis_data);
|
||||||
gdk_device_xi_translate_axes (device, window,
|
gdk_device_xi_translate_axes (device, window,
|
||||||
@ -626,7 +627,7 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator,
|
|||||||
for (i = 0; i < xdse->num_classes; i++)
|
for (i = 0; i < xdse->num_classes; i++)
|
||||||
{
|
{
|
||||||
if (input_class->class == ValuatorClass)
|
if (input_class->class == ValuatorClass)
|
||||||
gdk_device_xi_update_axes (device, device->num_axes, 0,
|
gdk_device_xi_update_axes (device, gdk_device_get_n_axes (device), 0,
|
||||||
((XValuatorState *)input_class)->valuators);
|
((XValuatorState *)input_class)->valuators);
|
||||||
|
|
||||||
input_class = (XInputClass *)(((char *)input_class)+input_class->length);
|
input_class = (XInputClass *)(((char *)input_class)+input_class->length);
|
||||||
|
@ -268,7 +268,7 @@ add_device (GdkDeviceManagerXI2 *device_manager,
|
|||||||
else if (dev->use == XIFloatingSlave)
|
else if (dev->use == XIFloatingSlave)
|
||||||
device_manager->floating_devices = g_list_append (device_manager->floating_devices, device);
|
device_manager->floating_devices = g_list_append (device_manager->floating_devices, device);
|
||||||
else
|
else
|
||||||
g_warning ("Unhandled device: %s\n", device->name);
|
g_warning ("Unhandled device: %s\n", gdk_device_get_name (device));
|
||||||
|
|
||||||
if (emit_signal)
|
if (emit_signal)
|
||||||
g_signal_emit_by_name (device_manager, "device-added", device);
|
g_signal_emit_by_name (device_manager, "device-added", device);
|
||||||
@ -755,7 +755,7 @@ translate_axes (GdkDevice *device,
|
|||||||
{
|
{
|
||||||
case GDK_AXIS_X:
|
case GDK_AXIS_X:
|
||||||
case GDK_AXIS_Y:
|
case GDK_AXIS_Y:
|
||||||
if (device->mode == GDK_MODE_WINDOW)
|
if (gdk_device_get_mode (device) == GDK_MODE_WINDOW)
|
||||||
_gdk_device_translate_window_coord (device, window, i, val, &axes[i]);
|
_gdk_device_translate_window_coord (device, window, i, val, &axes[i]);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1010,7 +1010,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
|
|||||||
event->button.window,
|
event->button.window,
|
||||||
&xev->valuators);
|
&xev->valuators);
|
||||||
|
|
||||||
if (event->button.device->mode == GDK_MODE_WINDOW)
|
if (gdk_device_get_mode (event->button.device) == GDK_MODE_WINDOW)
|
||||||
{
|
{
|
||||||
GdkDevice *device = event->button.device;
|
GdkDevice *device = event->button.device;
|
||||||
|
|
||||||
@ -1061,7 +1061,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
|
|||||||
event->motion.window,
|
event->motion.window,
|
||||||
&xev->valuators);
|
&xev->valuators);
|
||||||
|
|
||||||
if (event->motion.device->mode == GDK_MODE_WINDOW)
|
if (gdk_device_get_mode (event->motion.device) == GDK_MODE_WINDOW)
|
||||||
{
|
{
|
||||||
GdkDevice *device = event->motion.device;
|
GdkDevice *device = event->motion.device;
|
||||||
|
|
||||||
|
@ -1152,7 +1152,7 @@ _gdk_input_init (GdkDisplay *display)
|
|||||||
{
|
{
|
||||||
device = l->data;
|
device = l->data;
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
display_x11->input_devices = g_list_prepend (display_x11->input_devices,
|
display_x11->input_devices = g_list_prepend (display_x11->input_devices,
|
||||||
@ -1170,7 +1170,7 @@ _gdk_input_init (GdkDisplay *display)
|
|||||||
{
|
{
|
||||||
device = list->data;
|
device = list->data;
|
||||||
|
|
||||||
if (device->source != GDK_SOURCE_MOUSE)
|
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
display->core_pointer = device;
|
display->core_pointer = device;
|
||||||
@ -1187,11 +1187,12 @@ _gdk_input_init (GdkDisplay *display)
|
|||||||
/**
|
/**
|
||||||
* gdk_display_open:
|
* gdk_display_open:
|
||||||
* @display_name: the name of the display to open
|
* @display_name: the name of the display to open
|
||||||
* @returns: a #GdkDisplay, or %NULL if the display
|
|
||||||
* could not be opened.
|
|
||||||
*
|
*
|
||||||
* Opens a display.
|
* Opens a display.
|
||||||
*
|
*
|
||||||
|
* Return value: (transfer none): a #GdkDisplay, or %NULL if the display
|
||||||
|
* could not be opened.
|
||||||
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
GdkDisplay *
|
GdkDisplay *
|
||||||
@ -1581,7 +1582,7 @@ gdk_display_get_n_screens (GdkDisplay *display)
|
|||||||
*
|
*
|
||||||
* Returns a screen object for one of the screens of the display.
|
* Returns a screen object for one of the screens of the display.
|
||||||
*
|
*
|
||||||
* Returns: the #GdkScreen object
|
* Returns: (transfer none): the #GdkScreen object
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
@ -1601,7 +1602,7 @@ gdk_display_get_screen (GdkDisplay *display,
|
|||||||
*
|
*
|
||||||
* Get the default #GdkScreen for @display.
|
* Get the default #GdkScreen for @display.
|
||||||
*
|
*
|
||||||
* Returns: the default #GdkScreen object for @display
|
* Returns: (transfer none): the default #GdkScreen object for @display
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
@ -1771,7 +1772,8 @@ gdk_display_flush (GdkDisplay *display)
|
|||||||
* on @display. This window is implicitly created by GDK.
|
* on @display. This window is implicitly created by GDK.
|
||||||
* See gdk_window_set_group().
|
* See gdk_window_set_group().
|
||||||
*
|
*
|
||||||
* Return value: The default group leader window for @display
|
* Return value: (transfer none): The default group leader window
|
||||||
|
* for @display
|
||||||
*
|
*
|
||||||
* Since: 2.4
|
* Since: 2.4
|
||||||
**/
|
**/
|
||||||
@ -1935,7 +1937,7 @@ gdk_display_x11_finalize (GObject *object)
|
|||||||
*
|
*
|
||||||
* Find the #GdkDisplay corresponding to @display, if any exists.
|
* Find the #GdkDisplay corresponding to @display, if any exists.
|
||||||
*
|
*
|
||||||
* Return value: the #GdkDisplay, if found, otherwise %NULL.
|
* Return value: (transfer none): the #GdkDisplay, if found, otherwise %NULL.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
|
@ -257,7 +257,7 @@ gdk_drag_context_set_device (GdkDragContext *context,
|
|||||||
*
|
*
|
||||||
* Returns the #GdkDevice associated to the drag context.
|
* Returns the #GdkDevice associated to the drag context.
|
||||||
*
|
*
|
||||||
* Returns: The #GdkDevice associated to @context.
|
* Returns: (transfer none): The #GdkDevice associated to @context.
|
||||||
**/
|
**/
|
||||||
GdkDevice *
|
GdkDevice *
|
||||||
gdk_drag_context_get_device (GdkDragContext *context)
|
gdk_drag_context_get_device (GdkDragContext *context)
|
||||||
@ -3162,7 +3162,7 @@ gdk_drag_do_leave (GdkDragContext *context, guint32 time)
|
|||||||
*
|
*
|
||||||
* This function is called by the drag source.
|
* This function is called by the drag source.
|
||||||
*
|
*
|
||||||
* Return value: a newly created #GdkDragContext.
|
* Return value: (transfer full): a newly created #GdkDragContext.
|
||||||
**/
|
**/
|
||||||
GdkDragContext *
|
GdkDragContext *
|
||||||
gdk_drag_begin (GdkWindow *window,
|
gdk_drag_begin (GdkWindow *window,
|
||||||
|
@ -57,20 +57,40 @@ static GList *event_sources = NULL;
|
|||||||
static gint
|
static gint
|
||||||
gdk_event_apply_filters (XEvent *xevent,
|
gdk_event_apply_filters (XEvent *xevent,
|
||||||
GdkEvent *event,
|
GdkEvent *event,
|
||||||
GList *filters)
|
GList **filters)
|
||||||
{
|
{
|
||||||
GList *tmp_list;
|
GList *tmp_list;
|
||||||
GdkFilterReturn result;
|
GdkFilterReturn result;
|
||||||
|
|
||||||
tmp_list = filters;
|
tmp_list = *filters;
|
||||||
|
|
||||||
while (tmp_list)
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
|
GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
|
||||||
|
GList *node;
|
||||||
|
|
||||||
tmp_list = tmp_list->next;
|
if ((filter->flags & GDK_EVENT_FILTER_REMOVED) != 0)
|
||||||
|
{
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
filter->ref_count++;
|
||||||
result = filter->function (xevent, event, filter->data);
|
result = filter->function (xevent, event, filter->data);
|
||||||
|
|
||||||
|
/* get the next node after running the function since the
|
||||||
|
function may add or remove a next node */
|
||||||
|
node = tmp_list;
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
|
||||||
|
filter->ref_count--;
|
||||||
|
if (filter->ref_count == 0)
|
||||||
|
{
|
||||||
|
*filters = g_list_remove_link (*filters, node);
|
||||||
|
g_list_free_1 (node);
|
||||||
|
g_free (filter);
|
||||||
|
}
|
||||||
|
|
||||||
if (result != GDK_FILTER_CONTINUE)
|
if (result != GDK_FILTER_CONTINUE)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -143,7 +163,7 @@ gdk_event_source_translate_event (GdkEventSource *event_source,
|
|||||||
/* Apply global filters */
|
/* Apply global filters */
|
||||||
|
|
||||||
result = gdk_event_apply_filters (xevent, event,
|
result = gdk_event_apply_filters (xevent, event,
|
||||||
_gdk_default_filters);
|
&_gdk_default_filters);
|
||||||
|
|
||||||
if (result == GDK_FILTER_REMOVE)
|
if (result == GDK_FILTER_REMOVE)
|
||||||
{
|
{
|
||||||
@ -167,7 +187,7 @@ gdk_event_source_translate_event (GdkEventSource *event_source,
|
|||||||
if (filter_private->filters)
|
if (filter_private->filters)
|
||||||
{
|
{
|
||||||
result = gdk_event_apply_filters (xevent, event,
|
result = gdk_event_apply_filters (xevent, event,
|
||||||
filter_private->filters);
|
&filter_private->filters);
|
||||||
|
|
||||||
if (result == GDK_FILTER_REMOVE)
|
if (result == GDK_FILTER_REMOVE)
|
||||||
{
|
{
|
||||||
|
@ -289,10 +289,11 @@ get_xkb (GdkKeymapX11 *keymap_x11)
|
|||||||
/**
|
/**
|
||||||
* gdk_keymap_get_for_display:
|
* gdk_keymap_get_for_display:
|
||||||
* @display: the #GdkDisplay.
|
* @display: the #GdkDisplay.
|
||||||
* @returns: the #GdkKeymap attached to @display.
|
|
||||||
*
|
*
|
||||||
* Returns the #GdkKeymap attached to @display.
|
* Returns the #GdkKeymap attached to @display.
|
||||||
*
|
*
|
||||||
|
* Return value: (transfer none): the #GdkKeymap attached to @display.
|
||||||
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
GdkKeymap*
|
GdkKeymap*
|
||||||
|
@ -117,7 +117,7 @@ _gdk_screen_x11_init (GdkScreenX11 *screen)
|
|||||||
*
|
*
|
||||||
* Gets the display to which the @screen belongs.
|
* Gets the display to which the @screen belongs.
|
||||||
*
|
*
|
||||||
* Returns: the display to which @screen belongs
|
* Returns: (transfer none): the display to which @screen belongs
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
@ -1229,7 +1229,7 @@ gdk_screen_make_display_name (GdkScreen *screen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_screen_get_active_window
|
* gdk_screen_get_active_window:
|
||||||
* @screen: a #GdkScreen
|
* @screen: a #GdkScreen
|
||||||
*
|
*
|
||||||
* Returns the screen's currently active window.
|
* Returns the screen's currently active window.
|
||||||
@ -1247,7 +1247,7 @@ gdk_screen_make_display_name (GdkScreen *screen)
|
|||||||
* The returned window should be unrefed using g_object_unref() when
|
* The returned window should be unrefed using g_object_unref() when
|
||||||
* no longer needed.
|
* no longer needed.
|
||||||
*
|
*
|
||||||
* Return value: the currently active window, or %NULL.
|
* Return value: (transfer full): the currently active window, or %NULL.
|
||||||
*
|
*
|
||||||
* Since: 2.10
|
* Since: 2.10
|
||||||
**/
|
**/
|
||||||
|
@ -197,9 +197,9 @@ gdk_selection_owner_set_for_display (GdkDisplay *display,
|
|||||||
* process if a foreign window was previously created for that
|
* process if a foreign window was previously created for that
|
||||||
* window, but a new foreign window will never be created by this call.
|
* window, but a new foreign window will never be created by this call.
|
||||||
*
|
*
|
||||||
* Returns: if there is a selection owner for this window, and it is a
|
* Returns: (transfer none): if there is a selection owner for this window,
|
||||||
* window known to the current process, the #GdkWindow that owns the
|
* and it is a window known to the current process, the #GdkWindow that
|
||||||
* selection, otherwise %NULL.
|
* owns the selection, otherwise %NULL.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
|
@ -841,9 +841,9 @@ x_event_mask_to_gdk_event_mask (long mask)
|
|||||||
* For example in the X backend, a native window handle is an Xlib
|
* For example in the X backend, a native window handle is an Xlib
|
||||||
* <type>XID</type>.
|
* <type>XID</type>.
|
||||||
*
|
*
|
||||||
* Return value: a #GdkWindow wrapper for the native window or
|
* Return value: (transfer full): a #GdkWindow wrapper for the native
|
||||||
* %NULL if the window has been destroyed. The wrapper will be
|
* window, or %NULL if the window has been destroyed. The wrapper
|
||||||
* newly created, if one doesn't exist already.
|
* will be newly created, if one doesn't exist already.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
@ -945,8 +945,8 @@ gdk_window_foreign_new_for_display (GdkDisplay *display,
|
|||||||
* For example in the X backend, a native window handle is an Xlib
|
* For example in the X backend, a native window handle is an Xlib
|
||||||
* <type>XID</type>.
|
* <type>XID</type>.
|
||||||
*
|
*
|
||||||
* Return value: the #GdkWindow wrapper for the native window,
|
* Return value: (transfer none): the #GdkWindow wrapper for the native
|
||||||
* or %NULL if there is none.
|
* window, or %NULL if there is none.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
**/
|
**/
|
||||||
@ -965,8 +965,8 @@ gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid)
|
|||||||
* For example in the X backend, a native window handle is an Xlib
|
* For example in the X backend, a native window handle is an Xlib
|
||||||
* <type>XID</type>.
|
* <type>XID</type>.
|
||||||
*
|
*
|
||||||
* Return value: the #GdkWindow wrapper for the native window,
|
* Return value: (transfer none): the #GdkWindow wrapper for the native
|
||||||
* or %NULL if there is none.
|
* window, or %NULL if there is none.
|
||||||
**/
|
**/
|
||||||
GdkWindow *
|
GdkWindow *
|
||||||
gdk_window_lookup (GdkNativeWindow anid)
|
gdk_window_lookup (GdkNativeWindow anid)
|
||||||
|
@ -80,8 +80,8 @@ _gdk_xid_table_remove (GdkDisplay *display,
|
|||||||
*
|
*
|
||||||
* Returns the GDK object associated with the given X id.
|
* Returns the GDK object associated with the given X id.
|
||||||
*
|
*
|
||||||
* Return value: the associated #GdkWindow or %NULL if no
|
* Return value: (transfer none): the associated #GdkWindow, or %NULL
|
||||||
* object is associated with the X id.
|
* of no object is associated with the X id.
|
||||||
*
|
*
|
||||||
* Since: 2.2
|
* Since: 2.2
|
||||||
*/
|
*/
|
||||||
@ -110,8 +110,8 @@ gdk_xid_table_lookup_for_display (GdkDisplay *display,
|
|||||||
* Returns the Gdk object associated with the given X id for the default
|
* Returns the Gdk object associated with the given X id for the default
|
||||||
* display.
|
* display.
|
||||||
*
|
*
|
||||||
* Return value: the associated #GdkWindow or %NULL if no
|
* Return value: (transfer none): the associated #GdkWindow, or %NULL
|
||||||
* object is associated with the X id.
|
* if no object is associated with the X id.
|
||||||
*/
|
*/
|
||||||
gpointer
|
gpointer
|
||||||
gdk_xid_table_lookup (XID xid)
|
gdk_xid_table_lookup (XID xid)
|
||||||
|
@ -101,7 +101,7 @@ endif
|
|||||||
# This places the generated .def file in srcdir, since it is expected to be there.
|
# This places the generated .def file in srcdir, since it is expected to be there.
|
||||||
# (The one from a tarball is)
|
# (The one from a tarball is)
|
||||||
gtk.def: gtk.symbols
|
gtk.def: gtk.symbols
|
||||||
(echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gtk.symbols | $(SED) -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gtk.def
|
(echo -e EXPORTS; $(CPP) -P -DG_OS_WIN32 - <$(srcdir)/gtk.symbols | $(SED) -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gtk.def
|
||||||
|
|
||||||
TESTS_ENVIRONMENT = srcdir="$(srcdir)" gtk_all_c_sources="$(gtk_all_c_sources)"
|
TESTS_ENVIRONMENT = srcdir="$(srcdir)" gtk_all_c_sources="$(gtk_all_c_sources)"
|
||||||
if OS_LINUX
|
if OS_LINUX
|
||||||
@ -218,7 +218,6 @@ gtk_public_h_sources = \
|
|||||||
gtkhbbox.h \
|
gtkhbbox.h \
|
||||||
gtkhbox.h \
|
gtkhbox.h \
|
||||||
gtkhpaned.h \
|
gtkhpaned.h \
|
||||||
gtkhruler.h \
|
|
||||||
gtkhscale.h \
|
gtkhscale.h \
|
||||||
gtkhscrollbar.h \
|
gtkhscrollbar.h \
|
||||||
gtkhseparator.h \
|
gtkhseparator.h \
|
||||||
@ -273,7 +272,6 @@ gtk_public_h_sources = \
|
|||||||
gtkrecentchooserwidget.h \
|
gtkrecentchooserwidget.h \
|
||||||
gtkrecentfilter.h \
|
gtkrecentfilter.h \
|
||||||
gtkrecentmanager.h \
|
gtkrecentmanager.h \
|
||||||
gtkruler.h \
|
|
||||||
gtkscale.h \
|
gtkscale.h \
|
||||||
gtkscalebutton.h \
|
gtkscalebutton.h \
|
||||||
gtkscrollable.h \
|
gtkscrollable.h \
|
||||||
@ -294,6 +292,7 @@ gtk_public_h_sources = \
|
|||||||
gtkstatusicon.h \
|
gtkstatusicon.h \
|
||||||
gtkstock.h \
|
gtkstock.h \
|
||||||
gtkstyle.h \
|
gtkstyle.h \
|
||||||
|
gtkswitch.h \
|
||||||
gtktable.h \
|
gtktable.h \
|
||||||
gtktearoffmenuitem.h \
|
gtktearoffmenuitem.h \
|
||||||
gtktestutils.h \
|
gtktestutils.h \
|
||||||
@ -332,7 +331,6 @@ gtk_public_h_sources = \
|
|||||||
gtkviewport.h \
|
gtkviewport.h \
|
||||||
gtkvolumebutton.h \
|
gtkvolumebutton.h \
|
||||||
gtkvpaned.h \
|
gtkvpaned.h \
|
||||||
gtkvruler.h \
|
|
||||||
gtkvscale.h \
|
gtkvscale.h \
|
||||||
gtkvscrollbar.h \
|
gtkvscrollbar.h \
|
||||||
gtkvseparator.h \
|
gtkvseparator.h \
|
||||||
@ -505,7 +503,6 @@ gtk_base_c_sources = \
|
|||||||
gtkhbbox.c \
|
gtkhbbox.c \
|
||||||
gtkhbox.c \
|
gtkhbox.c \
|
||||||
gtkhpaned.c \
|
gtkhpaned.c \
|
||||||
gtkhruler.c \
|
|
||||||
gtkhscale.c \
|
gtkhscale.c \
|
||||||
gtkhscrollbar.c \
|
gtkhscrollbar.c \
|
||||||
gtkhseparator.c \
|
gtkhseparator.c \
|
||||||
@ -571,7 +568,6 @@ gtk_base_c_sources = \
|
|||||||
gtkrecentchooser.c \
|
gtkrecentchooser.c \
|
||||||
gtkrecentfilter.c \
|
gtkrecentfilter.c \
|
||||||
gtkrecentmanager.c \
|
gtkrecentmanager.c \
|
||||||
gtkruler.c \
|
|
||||||
gtkscale.c \
|
gtkscale.c \
|
||||||
gtkscalebutton.c \
|
gtkscalebutton.c \
|
||||||
gtkscrollable.c \
|
gtkscrollable.c \
|
||||||
@ -592,6 +588,7 @@ gtk_base_c_sources = \
|
|||||||
gtkstatusicon.c \
|
gtkstatusicon.c \
|
||||||
gtkstock.c \
|
gtkstock.c \
|
||||||
gtkstyle.c \
|
gtkstyle.c \
|
||||||
|
gtkswitch.c \
|
||||||
gtktable.c \
|
gtktable.c \
|
||||||
gtktearoffmenuitem.c \
|
gtktearoffmenuitem.c \
|
||||||
gtktestutils.c \
|
gtktestutils.c \
|
||||||
@ -639,7 +636,6 @@ gtk_base_c_sources = \
|
|||||||
gtkvolumebutton.c \
|
gtkvolumebutton.c \
|
||||||
gtkviewport.c \
|
gtkviewport.c \
|
||||||
gtkvpaned.c \
|
gtkvpaned.c \
|
||||||
gtkvruler.c \
|
|
||||||
gtkvscale.c \
|
gtkvscale.c \
|
||||||
gtkvscrollbar.c \
|
gtkvscrollbar.c \
|
||||||
gtkvseparator.c \
|
gtkvseparator.c \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
cpp -DINCLUDE_VARIABLES -P -DG_OS_UNIX -DGTK_WINDOWING_X11 -DALL_FILES ${srcdir:-.}/gtk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi
|
cpp -P -DG_OS_UNIX -DGDK_WINDOWING_X11 ${srcdir:-.}/gtk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi
|
||||||
nm -D -g --defined-only .libs/libgtk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi
|
nm -D -g --defined-only .libs/libgtk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi
|
||||||
diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
|
diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
|
||||||
|
@ -102,7 +102,6 @@
|
|||||||
#include <gtk/gtkhbbox.h>
|
#include <gtk/gtkhbbox.h>
|
||||||
#include <gtk/gtkhbox.h>
|
#include <gtk/gtkhbox.h>
|
||||||
#include <gtk/gtkhpaned.h>
|
#include <gtk/gtkhpaned.h>
|
||||||
#include <gtk/gtkhruler.h>
|
|
||||||
#include <gtk/gtkhscale.h>
|
#include <gtk/gtkhscale.h>
|
||||||
#include <gtk/gtkhscrollbar.h>
|
#include <gtk/gtkhscrollbar.h>
|
||||||
#include <gtk/gtkhseparator.h>
|
#include <gtk/gtkhseparator.h>
|
||||||
@ -156,7 +155,6 @@
|
|||||||
#include <gtk/gtkrecentchooserwidget.h>
|
#include <gtk/gtkrecentchooserwidget.h>
|
||||||
#include <gtk/gtkrecentfilter.h>
|
#include <gtk/gtkrecentfilter.h>
|
||||||
#include <gtk/gtkrecentmanager.h>
|
#include <gtk/gtkrecentmanager.h>
|
||||||
#include <gtk/gtkruler.h>
|
|
||||||
#include <gtk/gtkscale.h>
|
#include <gtk/gtkscale.h>
|
||||||
#include <gtk/gtkscalebutton.h>
|
#include <gtk/gtkscalebutton.h>
|
||||||
#include <gtk/gtkscrollable.h>
|
#include <gtk/gtkscrollable.h>
|
||||||
@ -177,6 +175,7 @@
|
|||||||
#include <gtk/gtkstatusicon.h>
|
#include <gtk/gtkstatusicon.h>
|
||||||
#include <gtk/gtkstock.h>
|
#include <gtk/gtkstock.h>
|
||||||
#include <gtk/gtkstyle.h>
|
#include <gtk/gtkstyle.h>
|
||||||
|
#include <gtk/gtkswitch.h>
|
||||||
#include <gtk/gtktable.h>
|
#include <gtk/gtktable.h>
|
||||||
#include <gtk/gtktearoffmenuitem.h>
|
#include <gtk/gtktearoffmenuitem.h>
|
||||||
#include <gtk/gtktextbuffer.h>
|
#include <gtk/gtktextbuffer.h>
|
||||||
@ -215,7 +214,6 @@
|
|||||||
#include <gtk/gtkviewport.h>
|
#include <gtk/gtkviewport.h>
|
||||||
#include <gtk/gtkvolumebutton.h>
|
#include <gtk/gtkvolumebutton.h>
|
||||||
#include <gtk/gtkvpaned.h>
|
#include <gtk/gtkvpaned.h>
|
||||||
#include <gtk/gtkvruler.h>
|
|
||||||
#include <gtk/gtkvscale.h>
|
#include <gtk/gtkvscale.h>
|
||||||
#include <gtk/gtkvscrollbar.h>
|
#include <gtk/gtkvscrollbar.h>
|
||||||
#include <gtk/gtkvseparator.h>
|
#include <gtk/gtkvseparator.h>
|
||||||
|
3293
gtk/gtk.symbols
3293
gtk/gtk.symbols
File diff suppressed because it is too large
Load Diff
@ -164,6 +164,7 @@ static void gtk_assistant_get_child_property (GtkContainer *container,
|
|||||||
GParamSpec *pspec);
|
GParamSpec *pspec);
|
||||||
|
|
||||||
static AtkObject *gtk_assistant_get_accessible (GtkWidget *widget);
|
static AtkObject *gtk_assistant_get_accessible (GtkWidget *widget);
|
||||||
|
static GType gtk_assistant_accessible_factory_get_type (void);
|
||||||
|
|
||||||
static void gtk_assistant_buildable_interface_init (GtkBuildableIface *iface);
|
static void gtk_assistant_buildable_interface_init (GtkBuildableIface *iface);
|
||||||
static GObject *gtk_assistant_buildable_get_internal_child (GtkBuildable *buildable,
|
static GObject *gtk_assistant_buildable_get_internal_child (GtkBuildable *buildable,
|
||||||
@ -2438,27 +2439,59 @@ gtk_assistant_commit (GtkAssistant *assistant)
|
|||||||
set_assistant_buttons_state (assistant);
|
set_assistant_buttons_state (assistant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static AtkObject *
|
||||||
|
gtk_assistant_get_accessible (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
static gboolean first_time = TRUE;
|
||||||
|
|
||||||
|
if (first_time)
|
||||||
|
{
|
||||||
|
AtkObjectFactory *factory;
|
||||||
|
AtkRegistry *registry;
|
||||||
|
GType derived_type;
|
||||||
|
GType derived_atk_type;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Figure out whether accessibility is enabled by looking at the
|
||||||
|
* type of the accessible object which would be created for
|
||||||
|
* the parent type of GtkAssistant.
|
||||||
|
*/
|
||||||
|
derived_type = g_type_parent (GTK_TYPE_ASSISTANT);
|
||||||
|
|
||||||
|
registry = atk_get_default_registry ();
|
||||||
|
factory = atk_registry_get_factory (registry, derived_type);
|
||||||
|
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
||||||
|
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
|
||||||
|
atk_registry_set_factory_type (registry,
|
||||||
|
GTK_TYPE_ASSISTANT,
|
||||||
|
gtk_assistant_accessible_factory_get_type ());
|
||||||
|
|
||||||
|
first_time = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GTK_WIDGET_CLASS (gtk_assistant_parent_class)->get_accessible (widget);
|
||||||
|
}
|
||||||
|
|
||||||
/* accessible implementation */
|
/* accessible implementation */
|
||||||
|
|
||||||
|
/* dummy typedefs */
|
||||||
|
typedef struct _GtkAssistantAccessible GtkAssistantAccessible;
|
||||||
|
typedef struct _GtkAssistantAccessibleClass GtkAssistantAccessibleClass;
|
||||||
|
|
||||||
|
ATK_DEFINE_TYPE (GtkAssistantAccessible, gtk_assistant_accessible, GTK_TYPE_ASSISTANT);
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gtk_assistant_accessible_get_n_children (AtkObject *accessible)
|
gtk_assistant_accessible_get_n_children (AtkObject *accessible)
|
||||||
{
|
{
|
||||||
GtkAssistant *assistant;
|
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
||||||
|
if (widget == NULL)
|
||||||
if (!widget)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
assistant = GTK_ASSISTANT (widget);
|
return g_list_length (GTK_ASSISTANT (accessible)->priv->pages) + 1;
|
||||||
|
|
||||||
return g_list_length (assistant->priv->pages) + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static AtkObject *
|
static AtkObject *
|
||||||
gtk_assistant_accessible_ref_child (AtkObject *accessible,
|
gtk_assistant_accessible_ref_child (AtkObject *accessible,
|
||||||
gint index)
|
gint index)
|
||||||
@ -2471,7 +2504,7 @@ gtk_assistant_accessible_ref_child (AtkObject *accessible,
|
|||||||
const gchar *title;
|
const gchar *title;
|
||||||
|
|
||||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
||||||
if (!widget)
|
if (widget == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
assistant = GTK_ASSISTANT (widget);
|
assistant = GTK_ASSISTANT (widget);
|
||||||
@ -2504,57 +2537,26 @@ gtk_assistant_accessible_ref_child (AtkObject *accessible,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_assistant_accessible_class_init (AtkObjectClass *class)
|
gtk_assistant_accessible_class_init (GtkAssistantAccessibleClass *klass)
|
||||||
{
|
{
|
||||||
class->get_n_children = gtk_assistant_accessible_get_n_children;
|
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
||||||
class->ref_child = gtk_assistant_accessible_ref_child;
|
|
||||||
|
atk_class->get_n_children = gtk_assistant_accessible_get_n_children;
|
||||||
|
atk_class->ref_child = gtk_assistant_accessible_ref_child;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GType
|
static void
|
||||||
gtk_assistant_accessible_get_type (void)
|
gtk_assistant_accessible_init (GtkAssistantAccessible *self)
|
||||||
{
|
{
|
||||||
static GType type = 0;
|
|
||||||
|
|
||||||
if (!type)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Figure out the size of the class and instance
|
|
||||||
* we are deriving from
|
|
||||||
*/
|
|
||||||
AtkObjectFactory *factory;
|
|
||||||
GType derived_type;
|
|
||||||
GTypeQuery query;
|
|
||||||
GType derived_atk_type;
|
|
||||||
|
|
||||||
derived_type = g_type_parent (GTK_TYPE_ASSISTANT);
|
|
||||||
factory = atk_registry_get_factory (atk_get_default_registry (),
|
|
||||||
derived_type);
|
|
||||||
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
|
||||||
g_type_query (derived_atk_type, &query);
|
|
||||||
|
|
||||||
type = g_type_register_static_simple (derived_atk_type,
|
|
||||||
I_("GtkAssistantAccessible"),
|
|
||||||
query.class_size,
|
|
||||||
(GClassInitFunc) gtk_assistant_accessible_class_init,
|
|
||||||
query.instance_size,
|
|
||||||
NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return type;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static AtkObject *
|
/* factory */
|
||||||
gtk_assistant_accessible_new (GObject *obj)
|
typedef AtkObjectFactory GtkAssistantAccessibleFactory;
|
||||||
{
|
typedef AtkObjectFactoryClass GtkAssistantAccessibleFactoryClass;
|
||||||
AtkObject *accessible;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_ASSISTANT (obj), NULL);
|
G_DEFINE_TYPE (GtkAssistantAccessibleFactory,
|
||||||
|
gtk_assistant_accessible_factory,
|
||||||
accessible = g_object_new (gtk_assistant_accessible_get_type (), NULL);
|
ATK_TYPE_OBJECT_FACTORY);
|
||||||
atk_object_initialize (accessible, obj);
|
|
||||||
|
|
||||||
return accessible;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GType
|
static GType
|
||||||
gtk_assistant_accessible_factory_get_accessible_type (void)
|
gtk_assistant_accessible_factory_get_accessible_type (void)
|
||||||
@ -2565,7 +2567,12 @@ gtk_assistant_accessible_factory_get_accessible_type (void)
|
|||||||
static AtkObject*
|
static AtkObject*
|
||||||
gtk_assistant_accessible_factory_create_accessible (GObject *obj)
|
gtk_assistant_accessible_factory_create_accessible (GObject *obj)
|
||||||
{
|
{
|
||||||
return gtk_assistant_accessible_new (obj);
|
AtkObject *accessible;
|
||||||
|
|
||||||
|
accessible = g_object_new (gtk_assistant_accessible_get_type (), NULL);
|
||||||
|
atk_object_initialize (accessible, obj);
|
||||||
|
|
||||||
|
return accessible;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2575,59 +2582,12 @@ gtk_assistant_accessible_factory_class_init (AtkObjectFactoryClass *class)
|
|||||||
class->get_accessible_type = gtk_assistant_accessible_factory_get_accessible_type;
|
class->get_accessible_type = gtk_assistant_accessible_factory_get_accessible_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GType
|
static void
|
||||||
gtk_assistant_accessible_factory_get_type (void)
|
gtk_assistant_accessible_factory_init (AtkObjectFactory *factory)
|
||||||
{
|
{
|
||||||
static GType type = 0;
|
|
||||||
|
|
||||||
if (!type)
|
|
||||||
{
|
|
||||||
type = g_type_register_static_simple (ATK_TYPE_OBJECT_FACTORY,
|
|
||||||
I_("GtkAssistantAccessibleFactory"),
|
|
||||||
sizeof (AtkObjectFactoryClass),
|
|
||||||
(GClassInitFunc) gtk_assistant_accessible_factory_class_init,
|
|
||||||
sizeof (AtkObjectFactory),
|
|
||||||
NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static AtkObject *
|
|
||||||
gtk_assistant_get_accessible (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
static gboolean first_time = TRUE;
|
|
||||||
|
|
||||||
if (first_time)
|
|
||||||
{
|
|
||||||
AtkObjectFactory *factory;
|
|
||||||
AtkRegistry *registry;
|
|
||||||
GType derived_type;
|
|
||||||
GType derived_atk_type;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Figure out whether accessibility is enabled by looking at the
|
|
||||||
* type of the accessible object which would be created for
|
|
||||||
* the parent type of GtkAssistant.
|
|
||||||
*/
|
|
||||||
derived_type = g_type_parent (GTK_TYPE_ASSISTANT);
|
|
||||||
|
|
||||||
registry = atk_get_default_registry ();
|
|
||||||
factory = atk_registry_get_factory (registry,
|
|
||||||
derived_type);
|
|
||||||
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
|
||||||
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
|
|
||||||
{
|
|
||||||
atk_registry_set_factory_type (registry,
|
|
||||||
GTK_TYPE_ASSISTANT,
|
|
||||||
gtk_assistant_accessible_factory_get_type ());
|
|
||||||
}
|
|
||||||
first_time = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return GTK_WIDGET_CLASS (gtk_assistant_parent_class)->get_accessible (widget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* buildable implementation */
|
||||||
|
|
||||||
static GtkBuildableIface *parent_buildable_iface;
|
static GtkBuildableIface *parent_buildable_iface;
|
||||||
|
|
||||||
|
@ -274,17 +274,13 @@ gtk_box_class_init (GtkBoxClass *class)
|
|||||||
* GtkBox:fill:
|
* GtkBox:fill:
|
||||||
*
|
*
|
||||||
* Whether the child should receive extra space when the parent grows.
|
* Whether the child should receive extra space when the parent grows.
|
||||||
*
|
|
||||||
* Note that the default value for this property is %FALSE for GtkBox,
|
|
||||||
* but #GtkHBox, #GtkVBox and other subclasses use the old default
|
|
||||||
* of %TRUE.
|
|
||||||
*/
|
*/
|
||||||
gtk_container_class_install_child_property (container_class,
|
gtk_container_class_install_child_property (container_class,
|
||||||
CHILD_PROP_FILL,
|
CHILD_PROP_FILL,
|
||||||
g_param_spec_boolean ("fill",
|
g_param_spec_boolean ("fill",
|
||||||
P_("Fill"),
|
P_("Fill"),
|
||||||
P_("Whether extra space given to the child should be allocated to the child or used as padding"),
|
P_("Whether extra space given to the child should be allocated to the child or used as padding"),
|
||||||
FALSE,
|
TRUE,
|
||||||
GTK_PARAM_READWRITE));
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
gtk_container_class_install_child_property (container_class,
|
gtk_container_class_install_child_property (container_class,
|
||||||
@ -1648,7 +1644,7 @@ gtk_box_add (GtkContainer *container,
|
|||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (container), widget,
|
gtk_box_pack_start (GTK_BOX (container), widget,
|
||||||
priv->default_expand,
|
priv->default_expand,
|
||||||
priv->default_expand,
|
TRUE,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1563,7 +1563,7 @@ gtk_builder_value_from_string_type (GtkBuilder *builder,
|
|||||||
{
|
{
|
||||||
GdkRGBA rgba = { 0 };
|
GdkRGBA rgba = { 0 };
|
||||||
|
|
||||||
if (gdk_rgba_parse (string, &rgba))
|
if (gdk_rgba_parse (&rgba, string))
|
||||||
g_value_set_boxed (value, &rgba);
|
g_value_set_boxed (value, &rgba);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1827,10 +1827,10 @@ gtk_real_button_activate (GtkButton *button)
|
|||||||
|
|
||||||
device = gtk_get_current_event_device ();
|
device = gtk_get_current_event_device ();
|
||||||
|
|
||||||
if (device && device->source != GDK_SOURCE_KEYBOARD)
|
if (device && gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
|
||||||
device = gdk_device_get_associated_device (device);
|
device = gdk_device_get_associated_device (device);
|
||||||
|
|
||||||
g_return_if_fail (device && device->source == GDK_SOURCE_KEYBOARD);
|
g_return_if_fail (device && gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD);
|
||||||
|
|
||||||
if (gtk_widget_get_realized (widget) && !priv->activate_timeout)
|
if (gtk_widget_get_realized (widget) && !priv->activate_timeout)
|
||||||
{
|
{
|
||||||
|
@ -534,7 +534,7 @@ gtk_cell_renderer_set_property (GObject *object,
|
|||||||
|
|
||||||
if (!g_value_get_string (value))
|
if (!g_value_get_string (value))
|
||||||
set_cell_bg_color (cell, NULL);
|
set_cell_bg_color (cell, NULL);
|
||||||
else if (gdk_rgba_parse (g_value_get_string (value), &rgba))
|
else if (gdk_rgba_parse (&rgba, g_value_get_string (value)))
|
||||||
set_cell_bg_color (cell, &rgba);
|
set_cell_bg_color (cell, &rgba);
|
||||||
else
|
else
|
||||||
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
||||||
|
@ -616,7 +616,7 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
|
|||||||
if (!device)
|
if (!device)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyb = device;
|
keyb = device;
|
||||||
pointer = gdk_device_get_associated_device (device);
|
pointer = gdk_device_get_associated_device (device);
|
||||||
|
@ -1193,7 +1193,7 @@ gtk_cell_renderer_text_set_property (GObject *object,
|
|||||||
|
|
||||||
if (!g_value_get_string (value))
|
if (!g_value_get_string (value))
|
||||||
set_bg_color (celltext, NULL); /* reset to background_set to FALSE */
|
set_bg_color (celltext, NULL); /* reset to background_set to FALSE */
|
||||||
else if (gdk_rgba_parse (g_value_get_string (value), &rgba))
|
else if (gdk_rgba_parse (&rgba, g_value_get_string (value)))
|
||||||
set_bg_color (celltext, &rgba);
|
set_bg_color (celltext, &rgba);
|
||||||
else
|
else
|
||||||
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
||||||
@ -1208,7 +1208,7 @@ gtk_cell_renderer_text_set_property (GObject *object,
|
|||||||
|
|
||||||
if (!g_value_get_string (value))
|
if (!g_value_get_string (value))
|
||||||
set_fg_color (celltext, NULL); /* reset to foreground_set to FALSE */
|
set_fg_color (celltext, NULL); /* reset to foreground_set to FALSE */
|
||||||
else if (gdk_rgba_parse (g_value_get_string (value), &rgba))
|
else if (gdk_rgba_parse (&rgba, g_value_get_string (value)))
|
||||||
set_fg_color (celltext, &rgba);
|
set_fg_color (celltext, &rgba);
|
||||||
else
|
else
|
||||||
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
g_warning ("Don't know color `%s'", g_value_get_string (value));
|
||||||
|
@ -1912,7 +1912,7 @@ get_screen_color (GtkWidget *button)
|
|||||||
|
|
||||||
device = gtk_get_current_event_device ();
|
device = gtk_get_current_event_device ();
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyb_device = device;
|
keyb_device = device;
|
||||||
pointer_device = gdk_device_get_associated_device (device);
|
pointer_device = gdk_device_get_associated_device (device);
|
||||||
|
@ -143,6 +143,8 @@ struct _GtkComboBoxPrivate
|
|||||||
gint text_column;
|
gint text_column;
|
||||||
GtkCellRenderer *text_renderer;
|
GtkCellRenderer *text_renderer;
|
||||||
|
|
||||||
|
gint id_column;
|
||||||
|
|
||||||
GSList *cells;
|
GSList *cells;
|
||||||
|
|
||||||
guint popup_in_progress : 1;
|
guint popup_in_progress : 1;
|
||||||
@ -245,7 +247,9 @@ enum {
|
|||||||
PROP_EDITING_CANCELED,
|
PROP_EDITING_CANCELED,
|
||||||
PROP_HAS_ENTRY,
|
PROP_HAS_ENTRY,
|
||||||
PROP_ENTRY_TEXT_COLUMN,
|
PROP_ENTRY_TEXT_COLUMN,
|
||||||
PROP_POPUP_FIXED_WIDTH
|
PROP_POPUP_FIXED_WIDTH,
|
||||||
|
PROP_ID_COLUMN,
|
||||||
|
PROP_ACTIVE_ID
|
||||||
};
|
};
|
||||||
|
|
||||||
static guint combo_box_signals[LAST_SIGNAL] = {0,};
|
static guint combo_box_signals[LAST_SIGNAL] = {0,};
|
||||||
@ -948,6 +952,38 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass)
|
|||||||
-1, G_MAXINT, -1,
|
-1, G_MAXINT, -1,
|
||||||
GTK_PARAM_READWRITE));
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkComboBox:id-column:
|
||||||
|
*
|
||||||
|
* The column in the combo box's model that provides string
|
||||||
|
* IDs for the values in the model, if != -1.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (object_class,
|
||||||
|
PROP_ID_COLUMN,
|
||||||
|
g_param_spec_int ("id-column",
|
||||||
|
P_("ID Column"),
|
||||||
|
P_("The column in the combo box's model that provides "
|
||||||
|
"string IDs for the values in the model"),
|
||||||
|
-1, G_MAXINT, -1,
|
||||||
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkComboBox:active-id:
|
||||||
|
*
|
||||||
|
* The value of the ID column of the active row.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (object_class,
|
||||||
|
PROP_ACTIVE_ID,
|
||||||
|
g_param_spec_string ("active-id",
|
||||||
|
P_("Active id"),
|
||||||
|
P_("The value of the id column "
|
||||||
|
"for the active row"),
|
||||||
|
NULL, GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GtkComboBox:popup-fixed-width:
|
* GtkComboBox:popup-fixed-width:
|
||||||
*
|
*
|
||||||
@ -1077,6 +1113,7 @@ gtk_combo_box_init (GtkComboBox *combo_box)
|
|||||||
|
|
||||||
priv->text_column = -1;
|
priv->text_column = -1;
|
||||||
priv->text_renderer = NULL;
|
priv->text_renderer = NULL;
|
||||||
|
priv->id_column = -1;
|
||||||
|
|
||||||
gtk_combo_box_check_appearance (combo_box);
|
gtk_combo_box_check_appearance (combo_box);
|
||||||
}
|
}
|
||||||
@ -1168,6 +1205,14 @@ gtk_combo_box_set_property (GObject *object,
|
|||||||
gtk_combo_box_set_entry_text_column (combo_box, g_value_get_int (value));
|
gtk_combo_box_set_entry_text_column (combo_box, g_value_get_int (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_ID_COLUMN:
|
||||||
|
gtk_combo_box_set_id_column (combo_box, g_value_get_int (value));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_ACTIVE_ID:
|
||||||
|
gtk_combo_box_set_active_id (combo_box, g_value_get_string (value));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -1245,6 +1290,14 @@ gtk_combo_box_get_property (GObject *object,
|
|||||||
g_value_set_int (value, priv->text_column);
|
g_value_set_int (value, priv->text_column);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_ID_COLUMN:
|
||||||
|
g_value_set_int (value, priv->id_column);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_ACTIVE_ID:
|
||||||
|
g_value_set_string (value, gtk_combo_box_get_active_id (combo_box));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -2199,7 +2252,7 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box,
|
|||||||
|
|
||||||
time = gtk_get_current_event_time ();
|
time = gtk_get_current_event_time ();
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyboard = device;
|
keyboard = device;
|
||||||
pointer = gdk_device_get_associated_device (device);
|
pointer = gdk_device_get_associated_device (device);
|
||||||
@ -4879,6 +4932,7 @@ gtk_combo_box_new_with_model (GtkTreeModel *model)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_combo_box_new_with_model_and_entry:
|
* gtk_combo_box_new_with_model_and_entry:
|
||||||
|
* @model: A #GtkTreeModel
|
||||||
*
|
*
|
||||||
* Creates a new empty #GtkComboBox with an entry
|
* Creates a new empty #GtkComboBox with an entry
|
||||||
* and with the model initialized to @model.
|
* and with the model initialized to @model.
|
||||||
@ -5199,6 +5253,8 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box,
|
|||||||
|
|
||||||
g_signal_emit (combo_box, combo_box_signals[CHANGED], 0);
|
g_signal_emit (combo_box, combo_box_signals[CHANGED], 0);
|
||||||
g_object_notify (G_OBJECT (combo_box), "active");
|
g_object_notify (G_OBJECT (combo_box), "active");
|
||||||
|
if (combo_box->priv->id_column >= 0)
|
||||||
|
g_object_notify (G_OBJECT (combo_box), "active-id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -6587,3 +6643,157 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
|||||||
if (natural_size)
|
if (natural_size)
|
||||||
*natural_size = nat_height;
|
*natural_size = nat_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_set_id_column:
|
||||||
|
* @combo_box: A #GtkComboBox
|
||||||
|
* @id_column: A column in @model to get string IDs for values from
|
||||||
|
*
|
||||||
|
* Sets the model column which @combo_box should use to get string IDs
|
||||||
|
* for values from. The column @id_column in the model of @combo_box
|
||||||
|
* must be of type %G_TYPE_STRING.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_combo_box_set_id_column (GtkComboBox *combo_box,
|
||||||
|
gint id_column)
|
||||||
|
{
|
||||||
|
GtkComboBoxPrivate *priv = combo_box->priv;
|
||||||
|
GtkTreeModel *model;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
|
||||||
|
|
||||||
|
if (id_column != priv->id_column)
|
||||||
|
{
|
||||||
|
model = gtk_combo_box_get_model (combo_box);
|
||||||
|
|
||||||
|
g_return_if_fail (id_column >= 0);
|
||||||
|
g_return_if_fail (model == NULL ||
|
||||||
|
id_column < gtk_tree_model_get_n_columns (model));
|
||||||
|
|
||||||
|
priv->id_column = id_column;
|
||||||
|
|
||||||
|
g_object_notify (G_OBJECT (combo_box), "id-column");
|
||||||
|
g_object_notify (G_OBJECT (combo_box), "active-id");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_get_id_column:
|
||||||
|
* @combo_box: A #GtkComboBox
|
||||||
|
*
|
||||||
|
* Returns the column which @combo_box is using to get string IDs
|
||||||
|
* for values from.
|
||||||
|
*
|
||||||
|
* Return value: A column in the data source model of @combo_box.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
gint
|
||||||
|
gtk_combo_box_get_id_column (GtkComboBox *combo_box)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), 0);
|
||||||
|
|
||||||
|
return combo_box->priv->id_column;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_get_active_id:
|
||||||
|
* @combo_box: a #GtkComboBox
|
||||||
|
*
|
||||||
|
* Returns the ID of the active row of @combo_box. This value is taken
|
||||||
|
* from the active row and the column specified by the 'id-column'
|
||||||
|
* property of @combo_box (see gtk_combo_box_set_id_column()).
|
||||||
|
*
|
||||||
|
* The returned value is an interned string which means that you can
|
||||||
|
* compare the pointer by value to other interned strings and that you
|
||||||
|
* must not free it.
|
||||||
|
*
|
||||||
|
* If the 'id-column' property of @combo_box is not set or if no row is
|
||||||
|
* selected then %NULL is returned.
|
||||||
|
*
|
||||||
|
* Return value: the ID of the active row, or %NULL
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
**/
|
||||||
|
const gchar *
|
||||||
|
gtk_combo_box_get_active_id (GtkComboBox *combo_box)
|
||||||
|
{
|
||||||
|
GtkTreeModel *model;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
gint column;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), 0);
|
||||||
|
|
||||||
|
column = combo_box->priv->id_column;
|
||||||
|
|
||||||
|
if (column < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
model = gtk_combo_box_get_model (combo_box);
|
||||||
|
g_return_val_if_fail (gtk_tree_model_get_column_type (model, column) ==
|
||||||
|
G_TYPE_STRING, NULL);
|
||||||
|
|
||||||
|
if (gtk_combo_box_get_active_iter (combo_box, &iter))
|
||||||
|
{
|
||||||
|
const gchar *interned;
|
||||||
|
gchar *id;
|
||||||
|
|
||||||
|
gtk_tree_model_get (model, &iter, column, &id, -1);
|
||||||
|
interned = g_intern_string (id);
|
||||||
|
g_free (id);
|
||||||
|
|
||||||
|
return interned;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_set_active_id:
|
||||||
|
* @combo_box: a #GtkComboBox
|
||||||
|
* @active_id: the ID of the row to select
|
||||||
|
*
|
||||||
|
* Changes the active row of @combo_box to the one that has an ID equal to @id.
|
||||||
|
*
|
||||||
|
* If the 'id-column' property of @combo_box is unset or if no row has
|
||||||
|
* the given ID then nothing happens.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
gtk_combo_box_set_active_id (GtkComboBox *combo_box,
|
||||||
|
const gchar *active_id)
|
||||||
|
{
|
||||||
|
GtkTreeModel *model;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
gint column;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
|
||||||
|
|
||||||
|
column = combo_box->priv->id_column;
|
||||||
|
|
||||||
|
if (column < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
model = gtk_combo_box_get_model (combo_box);
|
||||||
|
g_return_if_fail (gtk_tree_model_get_column_type (model, column) ==
|
||||||
|
G_TYPE_STRING);
|
||||||
|
|
||||||
|
if (gtk_tree_model_get_iter_first (model, &iter))
|
||||||
|
do {
|
||||||
|
gboolean match;
|
||||||
|
gchar *id;
|
||||||
|
|
||||||
|
gtk_tree_model_get (model, &iter, column, &id, -1);
|
||||||
|
match = strcmp (id, active_id) == 0;
|
||||||
|
g_free (id);
|
||||||
|
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
gtk_combo_box_set_active_iter (combo_box, &iter);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (gtk_tree_model_iter_next (model, &iter));
|
||||||
|
}
|
||||||
|
@ -134,6 +134,12 @@ void gtk_combo_box_popup_for_device (GtkComboBox *combo_box,
|
|||||||
void gtk_combo_box_popdown (GtkComboBox *combo_box);
|
void gtk_combo_box_popdown (GtkComboBox *combo_box);
|
||||||
AtkObject* gtk_combo_box_get_popup_accessible (GtkComboBox *combo_box);
|
AtkObject* gtk_combo_box_get_popup_accessible (GtkComboBox *combo_box);
|
||||||
|
|
||||||
|
gint gtk_combo_box_get_id_column (GtkComboBox *combo_box);
|
||||||
|
void gtk_combo_box_set_id_column (GtkComboBox *combo_box,
|
||||||
|
gint id_column);
|
||||||
|
const gchar * gtk_combo_box_get_active_id (GtkComboBox *combo_box);
|
||||||
|
void gtk_combo_box_set_active_id (GtkComboBox *combo_box,
|
||||||
|
const gchar *active_id);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ gtk_combo_box_text_init (GtkComboBoxText *combo_box)
|
|||||||
{
|
{
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
|
|
||||||
store = gtk_list_store_new (1, G_TYPE_STRING);
|
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
|
||||||
gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (store));
|
gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (store));
|
||||||
g_object_unref (store);
|
g_object_unref (store);
|
||||||
}
|
}
|
||||||
@ -102,6 +102,7 @@ gtk_combo_box_text_new (void)
|
|||||||
{
|
{
|
||||||
return g_object_new (GTK_TYPE_COMBO_BOX_TEXT,
|
return g_object_new (GTK_TYPE_COMBO_BOX_TEXT,
|
||||||
"entry-text-column", 0,
|
"entry-text-column", 0,
|
||||||
|
"id-column", 1,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +122,7 @@ gtk_combo_box_text_new_with_entry (void)
|
|||||||
return g_object_new (GTK_TYPE_COMBO_BOX_TEXT,
|
return g_object_new (GTK_TYPE_COMBO_BOX_TEXT,
|
||||||
"has-entry", TRUE,
|
"has-entry", TRUE,
|
||||||
"entry-text-column", 0,
|
"entry-text-column", 0,
|
||||||
|
"id-column", 1,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,13 +133,16 @@ gtk_combo_box_text_new_with_entry (void)
|
|||||||
*
|
*
|
||||||
* Appends @text to the list of strings stored in @combo_box.
|
* Appends @text to the list of strings stored in @combo_box.
|
||||||
*
|
*
|
||||||
|
* This is the same as calling gtk_combo_box_text_insert_text() with a
|
||||||
|
* position of -1.
|
||||||
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gtk_combo_box_text_append_text (GtkComboBoxText *combo_box,
|
gtk_combo_box_text_append_text (GtkComboBoxText *combo_box,
|
||||||
const gchar *text)
|
const gchar *text)
|
||||||
{
|
{
|
||||||
gtk_combo_box_text_insert_text (combo_box, G_MAXINT, text);
|
gtk_combo_box_text_insert (combo_box, -1, NULL, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -147,13 +152,16 @@ gtk_combo_box_text_append_text (GtkComboBoxText *combo_box,
|
|||||||
*
|
*
|
||||||
* Prepends @text to the list of strings stored in @combo_box.
|
* Prepends @text to the list of strings stored in @combo_box.
|
||||||
*
|
*
|
||||||
|
* This is the same as calling gtk_combo_box_text_insert_text() with a
|
||||||
|
* position of 0.
|
||||||
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gtk_combo_box_text_prepend_text (GtkComboBoxText *combo_box,
|
gtk_combo_box_text_prepend_text (GtkComboBoxText *combo_box,
|
||||||
const gchar *text)
|
const gchar *text)
|
||||||
{
|
{
|
||||||
gtk_combo_box_text_insert_text (combo_box, 0, text);
|
gtk_combo_box_text_insert (combo_box, 0, NULL, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -164,12 +172,84 @@ gtk_combo_box_text_prepend_text (GtkComboBoxText *combo_box,
|
|||||||
*
|
*
|
||||||
* Inserts @text at @position in the list of strings stored in @combo_box.
|
* Inserts @text at @position in the list of strings stored in @combo_box.
|
||||||
*
|
*
|
||||||
|
* If @position is negative then @text is appended.
|
||||||
|
*
|
||||||
|
* This is the same as calling gtk_combo_box_text_insert() with a %NULL
|
||||||
|
* ID string.
|
||||||
|
*
|
||||||
* Since: 2.24
|
* Since: 2.24
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gtk_combo_box_text_insert_text (GtkComboBoxText *combo_box,
|
gtk_combo_box_text_insert_text (GtkComboBoxText *combo_box,
|
||||||
gint position,
|
gint position,
|
||||||
const gchar *text)
|
const gchar *text)
|
||||||
|
{
|
||||||
|
gtk_combo_box_text_insert (combo_box, position, NULL, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_text_append:
|
||||||
|
* @combo_box: A #GtkComboBoxText
|
||||||
|
* @text: A string
|
||||||
|
*
|
||||||
|
* Appends @text to the list of strings stored in @combo_box. If @id is
|
||||||
|
* non-%NULL then it is used as the ID of the row.
|
||||||
|
*
|
||||||
|
* This is the same as calling gtk_combo_box_text_insert() with a
|
||||||
|
* position of -1.
|
||||||
|
*
|
||||||
|
* Since: 2.24
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_combo_box_text_append (GtkComboBoxText *combo_box,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text)
|
||||||
|
{
|
||||||
|
gtk_combo_box_text_insert (combo_box, -1, id, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_text_prepend:
|
||||||
|
* @combo_box: A #GtkComboBox
|
||||||
|
* @text: A string
|
||||||
|
*
|
||||||
|
* Prepends @text to the list of strings stored in @combo_box. If @id
|
||||||
|
* is non-%NULL then it is used as the ID of the row.
|
||||||
|
*
|
||||||
|
* This is the same as calling gtk_combo_box_text_insert() with a
|
||||||
|
* position of 0.
|
||||||
|
*
|
||||||
|
* Since: 2.24
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_combo_box_text_prepend (GtkComboBoxText *combo_box,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text)
|
||||||
|
{
|
||||||
|
gtk_combo_box_text_insert (combo_box, 0, id, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_combo_box_text_insert:
|
||||||
|
* @combo_box: A #GtkComboBoxText
|
||||||
|
* @position: An index to insert @text
|
||||||
|
* @id: a string ID for this value, or %NULL
|
||||||
|
* @text: A string to display
|
||||||
|
*
|
||||||
|
* Inserts @text at @position in the list of strings stored in @combo_box.
|
||||||
|
* If @id is non-%NULL then it is used as the ID of the row. See
|
||||||
|
* #GtkComboBox::id-column.
|
||||||
|
*
|
||||||
|
* If @position is negative then @text is appended.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_combo_box_text_insert (GtkComboBoxText *combo_box,
|
||||||
|
gint position,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text)
|
||||||
{
|
{
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
@ -177,9 +257,11 @@ gtk_combo_box_text_insert_text (GtkComboBoxText *combo_box,
|
|||||||
gint column_type;
|
gint column_type;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (combo_box));
|
g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (combo_box));
|
||||||
g_return_if_fail (position >= 0);
|
|
||||||
g_return_if_fail (text != NULL);
|
g_return_if_fail (text != NULL);
|
||||||
|
|
||||||
|
if (position < 0)
|
||||||
|
position = G_MAXINT;
|
||||||
|
|
||||||
store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)));
|
store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)));
|
||||||
g_return_if_fail (GTK_IS_LIST_STORE (store));
|
g_return_if_fail (GTK_IS_LIST_STORE (store));
|
||||||
text_column = gtk_combo_box_get_entry_text_column (GTK_COMBO_BOX (combo_box));
|
text_column = gtk_combo_box_get_entry_text_column (GTK_COMBO_BOX (combo_box));
|
||||||
@ -188,6 +270,17 @@ gtk_combo_box_text_insert_text (GtkComboBoxText *combo_box,
|
|||||||
|
|
||||||
gtk_list_store_insert (store, &iter, position);
|
gtk_list_store_insert (store, &iter, position);
|
||||||
gtk_list_store_set (store, &iter, text_column, text, -1);
|
gtk_list_store_set (store, &iter, text_column, text, -1);
|
||||||
|
|
||||||
|
if (id != NULL)
|
||||||
|
{
|
||||||
|
gint id_column;
|
||||||
|
|
||||||
|
id_column = gtk_combo_box_get_id_column (GTK_COMBO_BOX (combo_box));
|
||||||
|
column_type = gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), id_column);
|
||||||
|
g_return_if_fail (column_type == G_TYPE_STRING);
|
||||||
|
|
||||||
|
gtk_list_store_set (store, &iter, id_column, id, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,6 +72,16 @@ void gtk_combo_box_text_remove (GtkComboBoxText *combo_box
|
|||||||
void gtk_combo_box_text_remove_all (GtkComboBoxText *combo_box);
|
void gtk_combo_box_text_remove_all (GtkComboBoxText *combo_box);
|
||||||
gchar *gtk_combo_box_text_get_active_text (GtkComboBoxText *combo_box);
|
gchar *gtk_combo_box_text_get_active_text (GtkComboBoxText *combo_box);
|
||||||
|
|
||||||
|
void gtk_combo_box_text_insert (GtkComboBoxText *combo_box,
|
||||||
|
gint position,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text);
|
||||||
|
void gtk_combo_box_text_append (GtkComboBoxText *combo_box,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text);
|
||||||
|
void gtk_combo_box_text_prepend (GtkComboBoxText *combo_box,
|
||||||
|
const gchar *id,
|
||||||
|
const gchar *text);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -2329,7 +2329,7 @@ gtk_drag_begin_internal (GtkWidget *widget,
|
|||||||
|
|
||||||
pointer = gdk_event_get_device (event);
|
pointer = gdk_event_get_device (event);
|
||||||
|
|
||||||
if (pointer->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (pointer) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyboard = pointer;
|
keyboard = pointer;
|
||||||
pointer = gdk_device_get_associated_device (keyboard);
|
pointer = gdk_device_get_associated_device (keyboard);
|
||||||
|
@ -9710,7 +9710,7 @@ gtk_entry_completion_changed (GtkWidget *widget,
|
|||||||
|
|
||||||
device = gtk_get_current_event_device ();
|
device = gtk_get_current_event_device ();
|
||||||
|
|
||||||
if (device && device->source == GDK_SOURCE_KEYBOARD)
|
if (device && gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
device = gdk_device_get_associated_device (device);
|
device = gdk_device_get_associated_device (device);
|
||||||
|
|
||||||
if (device)
|
if (device)
|
||||||
|
@ -208,13 +208,6 @@ typedef enum
|
|||||||
GTK_MESSAGE_OTHER
|
GTK_MESSAGE_OTHER
|
||||||
} GtkMessageType;
|
} GtkMessageType;
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_PIXELS,
|
|
||||||
GTK_INCHES,
|
|
||||||
GTK_CENTIMETERS
|
|
||||||
} GtkMetricType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GtkMovementStep:
|
* GtkMovementStep:
|
||||||
* @GTK_MOVEMENT_LOGICAL_POSITIONS: Move forward or back by graphemes
|
* @GTK_MOVEMENT_LOGICAL_POSITIONS: Move forward or back by graphemes
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "gtkhruler.h"
|
|
||||||
#include "gtkorientable.h"
|
|
||||||
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (GtkHRuler, gtk_hruler, GTK_TYPE_RULER)
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_hruler_class_init (GtkHRulerClass *klass)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_hruler_init (GtkHRuler *hruler)
|
|
||||||
{
|
|
||||||
gtk_orientable_set_orientation (GTK_ORIENTABLE (hruler),
|
|
||||||
GTK_ORIENTATION_HORIZONTAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *
|
|
||||||
gtk_hruler_new (void)
|
|
||||||
{
|
|
||||||
return g_object_new (GTK_TYPE_HRULER, NULL);
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NOTE this widget is considered too specialized/little-used for
|
|
||||||
* GTK+, and will in the future be moved to some other package. If
|
|
||||||
* your application needs this widget, feel free to use it, as the
|
|
||||||
* widget does work and is useful in some applications; it's just not
|
|
||||||
* of general interest. However, we are not accepting new features for
|
|
||||||
* the widget, and it will eventually move out of the GTK+
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
|
||||||
#error "Only <gtk/gtk.h> can be included directly."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __GTK_HRULER_H__
|
|
||||||
#define __GTK_HRULER_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtkruler.h>
|
|
||||||
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
|
|
||||||
#define GTK_TYPE_HRULER (gtk_hruler_get_type ())
|
|
||||||
#define GTK_HRULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_HRULER, GtkHRuler))
|
|
||||||
#define GTK_HRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_HRULER, GtkHRulerClass))
|
|
||||||
#define GTK_IS_HRULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_HRULER))
|
|
||||||
#define GTK_IS_HRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_HRULER))
|
|
||||||
#define GTK_HRULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_HRULER, GtkHRulerClass))
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GtkHRuler GtkHRuler;
|
|
||||||
typedef struct _GtkHRulerClass GtkHRulerClass;
|
|
||||||
|
|
||||||
struct _GtkHRuler
|
|
||||||
{
|
|
||||||
GtkRuler ruler;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkHRulerClass
|
|
||||||
{
|
|
||||||
GtkRulerClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GType gtk_hruler_get_type (void) G_GNUC_CONST;
|
|
||||||
GtkWidget* gtk_hruler_new (void);
|
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GTK_HRULER_H__ */
|
|
@ -317,7 +317,7 @@ static void gtk_icon_view_set_hadjustment (GtkIco
|
|||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void gtk_icon_view_set_vadjustment (GtkIconView *icon_view,
|
static void gtk_icon_view_set_vadjustment (GtkIconView *icon_view,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view,
|
static void gtk_icon_view_accessible_set_adjustment (AtkObject *accessible,
|
||||||
GtkOrientation orientation,
|
GtkOrientation orientation,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment,
|
static void gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment,
|
||||||
@ -2707,6 +2707,7 @@ gtk_icon_view_set_hadjustment (GtkIconView *icon_view,
|
|||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
{
|
{
|
||||||
GtkIconViewPrivate *priv = icon_view->priv;
|
GtkIconViewPrivate *priv = icon_view->priv;
|
||||||
|
AtkObject *atk_obj;
|
||||||
|
|
||||||
if (adjustment && priv->hadjustment == adjustment)
|
if (adjustment && priv->hadjustment == adjustment)
|
||||||
return;
|
return;
|
||||||
@ -2728,9 +2729,10 @@ gtk_icon_view_set_hadjustment (GtkIconView *icon_view,
|
|||||||
priv->hadjustment = g_object_ref_sink (adjustment);
|
priv->hadjustment = g_object_ref_sink (adjustment);
|
||||||
gtk_icon_view_set_hadjustment_values (icon_view);
|
gtk_icon_view_set_hadjustment_values (icon_view);
|
||||||
|
|
||||||
gtk_icon_view_accessible_set_adjustment (icon_view,
|
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
||||||
|
gtk_icon_view_accessible_set_adjustment (atk_obj,
|
||||||
GTK_ORIENTATION_HORIZONTAL,
|
GTK_ORIENTATION_HORIZONTAL,
|
||||||
priv->hadjustment);
|
adjustment);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (icon_view), "hadjustment");
|
g_object_notify (G_OBJECT (icon_view), "hadjustment");
|
||||||
}
|
}
|
||||||
@ -2740,6 +2742,7 @@ gtk_icon_view_set_vadjustment (GtkIconView *icon_view,
|
|||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
{
|
{
|
||||||
GtkIconViewPrivate *priv = icon_view->priv;
|
GtkIconViewPrivate *priv = icon_view->priv;
|
||||||
|
AtkObject *atk_obj;
|
||||||
|
|
||||||
if (adjustment && priv->vadjustment == adjustment)
|
if (adjustment && priv->vadjustment == adjustment)
|
||||||
return;
|
return;
|
||||||
@ -2761,9 +2764,10 @@ gtk_icon_view_set_vadjustment (GtkIconView *icon_view,
|
|||||||
priv->vadjustment = g_object_ref_sink (adjustment);
|
priv->vadjustment = g_object_ref_sink (adjustment);
|
||||||
gtk_icon_view_set_vadjustment_values (icon_view);
|
gtk_icon_view_set_vadjustment_values (icon_view);
|
||||||
|
|
||||||
gtk_icon_view_accessible_set_adjustment (icon_view,
|
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
||||||
|
gtk_icon_view_accessible_set_adjustment (atk_obj,
|
||||||
GTK_ORIENTATION_VERTICAL,
|
GTK_ORIENTATION_VERTICAL,
|
||||||
priv->vadjustment);
|
adjustment);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (icon_view), "vadjustment");
|
g_object_notify (G_OBJECT (icon_view), "vadjustment");
|
||||||
}
|
}
|
||||||
@ -9207,32 +9211,21 @@ gtk_icon_view_accessible_traverse_items (GtkIconViewAccessible *view,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment,
|
gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment,
|
||||||
GtkIconView *icon_view)
|
GtkIconViewAccessible *view)
|
||||||
{
|
{
|
||||||
AtkObject *obj;
|
|
||||||
GtkIconViewAccessible *view;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The scrollbars have changed
|
|
||||||
*/
|
|
||||||
obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
|
||||||
view = GTK_ICON_VIEW_ACCESSIBLE (obj);
|
|
||||||
|
|
||||||
gtk_icon_view_accessible_traverse_items (view, NULL);
|
gtk_icon_view_accessible_traverse_items (view, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view,
|
gtk_icon_view_accessible_set_adjustment (AtkObject *accessible,
|
||||||
GtkOrientation orientation,
|
GtkOrientation orientation,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
{
|
{
|
||||||
AtkObject *atk_obj;
|
|
||||||
GtkIconViewAccessiblePrivate *priv;
|
GtkIconViewAccessiblePrivate *priv;
|
||||||
GtkAdjustment **old_adj_ptr;
|
GtkAdjustment **old_adj_ptr;
|
||||||
|
|
||||||
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
priv = gtk_icon_view_accessible_get_priv (accessible);
|
||||||
priv = gtk_icon_view_accessible_get_priv (atk_obj);
|
|
||||||
|
|
||||||
/* Adjustments are set for the first time in constructor and priv is not
|
/* Adjustments are set for the first time in constructor and priv is not
|
||||||
* initialized at that time, so skip this first setting. */
|
* initialized at that time, so skip this first setting. */
|
||||||
@ -9261,7 +9254,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view,
|
|||||||
(gpointer *)&priv->old_hadj);
|
(gpointer *)&priv->old_hadj);
|
||||||
g_signal_handlers_disconnect_by_func (*old_adj_ptr,
|
g_signal_handlers_disconnect_by_func (*old_adj_ptr,
|
||||||
gtk_icon_view_accessible_adjustment_changed,
|
gtk_icon_view_accessible_adjustment_changed,
|
||||||
icon_view);
|
accessible);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Connect signal */
|
/* Connect signal */
|
||||||
@ -9269,7 +9262,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view,
|
|||||||
g_object_add_weak_pointer (G_OBJECT (adjustment), (gpointer *)old_adj_ptr);
|
g_object_add_weak_pointer (G_OBJECT (adjustment), (gpointer *)old_adj_ptr);
|
||||||
g_signal_connect (adjustment, "value-changed",
|
g_signal_connect (adjustment, "value-changed",
|
||||||
G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
|
G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
|
||||||
icon_view);
|
accessible);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -9572,11 +9565,11 @@ gtk_icon_view_accessible_initialize (AtkObject *accessible,
|
|||||||
|
|
||||||
icon_view = GTK_ICON_VIEW (data);
|
icon_view = GTK_ICON_VIEW (data);
|
||||||
if (icon_view->priv->hadjustment)
|
if (icon_view->priv->hadjustment)
|
||||||
gtk_icon_view_accessible_set_adjustment (icon_view,
|
gtk_icon_view_accessible_set_adjustment (accessible,
|
||||||
GTK_ORIENTATION_HORIZONTAL,
|
GTK_ORIENTATION_HORIZONTAL,
|
||||||
icon_view->priv->hadjustment);
|
icon_view->priv->hadjustment);
|
||||||
if (icon_view->priv->vadjustment)
|
if (icon_view->priv->vadjustment)
|
||||||
gtk_icon_view_accessible_set_adjustment (icon_view,
|
gtk_icon_view_accessible_set_adjustment (accessible,
|
||||||
GTK_ORIENTATION_VERTICAL,
|
GTK_ORIENTATION_VERTICAL,
|
||||||
icon_view->priv->vadjustment);
|
icon_view->priv->vadjustment);
|
||||||
g_signal_connect (data,
|
g_signal_connect (data,
|
||||||
@ -9623,7 +9616,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget,
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (priv->old_hadj,
|
g_signal_handlers_disconnect_by_func (priv->old_hadj,
|
||||||
(gpointer) gtk_icon_view_accessible_adjustment_changed,
|
(gpointer) gtk_icon_view_accessible_adjustment_changed,
|
||||||
widget);
|
accessible);
|
||||||
priv->old_hadj = NULL;
|
priv->old_hadj = NULL;
|
||||||
}
|
}
|
||||||
if (priv->old_vadj)
|
if (priv->old_vadj)
|
||||||
@ -9633,7 +9626,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget,
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (priv->old_vadj,
|
g_signal_handlers_disconnect_by_func (priv->old_vadj,
|
||||||
(gpointer) gtk_icon_view_accessible_adjustment_changed,
|
(gpointer) gtk_icon_view_accessible_adjustment_changed,
|
||||||
widget);
|
accessible);
|
||||||
priv->old_vadj = NULL;
|
priv->old_vadj = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1469,7 +1469,7 @@ gtk_menu_popup_for_device (GtkMenu *menu,
|
|||||||
menu_shell = GTK_MENU_SHELL (menu);
|
menu_shell = GTK_MENU_SHELL (menu);
|
||||||
priv = gtk_menu_get_private (menu);
|
priv = gtk_menu_get_private (menu);
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyboard = device;
|
keyboard = device;
|
||||||
pointer = gdk_device_get_associated_device (device);
|
pointer = gdk_device_get_associated_device (device);
|
||||||
@ -1760,8 +1760,11 @@ gtk_menu_popdown (GtkMenu *menu)
|
|||||||
|
|
||||||
/* The X Grab, if present, will automatically be removed when we hide
|
/* The X Grab, if present, will automatically be removed when we hide
|
||||||
* the window */
|
* the window */
|
||||||
gtk_widget_hide (menu->toplevel);
|
if (menu->toplevel)
|
||||||
gtk_window_set_transient_for (GTK_WINDOW (menu->toplevel), NULL);
|
{
|
||||||
|
gtk_widget_hide (menu->toplevel);
|
||||||
|
gtk_window_set_transient_for (GTK_WINDOW (menu->toplevel), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
pointer = _gtk_menu_shell_get_grab_device (menu_shell);
|
pointer = _gtk_menu_shell_get_grab_device (menu_shell);
|
||||||
|
|
||||||
|
@ -153,6 +153,7 @@ static void gtk_menu_shell_get_property (GObject *object,
|
|||||||
GParamSpec *pspec);
|
GParamSpec *pspec);
|
||||||
static void gtk_menu_shell_realize (GtkWidget *widget);
|
static void gtk_menu_shell_realize (GtkWidget *widget);
|
||||||
static void gtk_menu_shell_finalize (GObject *object);
|
static void gtk_menu_shell_finalize (GObject *object);
|
||||||
|
static void gtk_menu_shell_dispose (GObject *object);
|
||||||
static gint gtk_menu_shell_button_press (GtkWidget *widget,
|
static gint gtk_menu_shell_button_press (GtkWidget *widget,
|
||||||
GdkEventButton *event);
|
GdkEventButton *event);
|
||||||
static gint gtk_menu_shell_button_release (GtkWidget *widget,
|
static gint gtk_menu_shell_button_release (GtkWidget *widget,
|
||||||
@ -222,6 +223,7 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass)
|
|||||||
object_class->set_property = gtk_menu_shell_set_property;
|
object_class->set_property = gtk_menu_shell_set_property;
|
||||||
object_class->get_property = gtk_menu_shell_get_property;
|
object_class->get_property = gtk_menu_shell_get_property;
|
||||||
object_class->finalize = gtk_menu_shell_finalize;
|
object_class->finalize = gtk_menu_shell_finalize;
|
||||||
|
object_class->dispose = gtk_menu_shell_dispose;
|
||||||
|
|
||||||
widget_class->realize = gtk_menu_shell_realize;
|
widget_class->realize = gtk_menu_shell_realize;
|
||||||
widget_class->button_press_event = gtk_menu_shell_button_press;
|
widget_class->button_press_event = gtk_menu_shell_button_press;
|
||||||
@ -463,6 +465,16 @@ gtk_menu_shell_finalize (GObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_menu_shell_dispose (GObject *object)
|
||||||
|
{
|
||||||
|
GtkMenuShell *menu_shell = GTK_MENU_SHELL (object);
|
||||||
|
|
||||||
|
gtk_menu_shell_deactivate (menu_shell);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (gtk_menu_shell_parent_class)->dispose (object);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gtk_menu_shell_append (GtkMenuShell *menu_shell,
|
gtk_menu_shell_append (GtkMenuShell *menu_shell,
|
||||||
GtkWidget *child)
|
GtkWidget *child)
|
||||||
@ -1807,7 +1819,7 @@ _gtk_menu_shell_set_grab_device (GtkMenuShell *menu_shell,
|
|||||||
|
|
||||||
if (!device)
|
if (!device)
|
||||||
priv->grab_pointer = NULL;
|
priv->grab_pointer = NULL;
|
||||||
else if (device->source == GDK_SOURCE_KEYBOARD)
|
else if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
priv->grab_pointer = gdk_device_get_associated_device (device);
|
priv->grab_pointer = gdk_device_get_associated_device (device);
|
||||||
else
|
else
|
||||||
priv->grab_pointer = device;
|
priv->grab_pointer = device;
|
||||||
|
@ -378,7 +378,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
|
|||||||
{
|
{
|
||||||
GdkDevice *device = d->data;
|
GdkDevice *device = d->data;
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
keyboard = device;
|
keyboard = device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
959
gtk/gtkruler.c
959
gtk/gtkruler.c
@ -1,959 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "gtkorientable.h"
|
|
||||||
#include "gtkruler.h"
|
|
||||||
#include "gtktypeutils.h"
|
|
||||||
#include "gtkprivate.h"
|
|
||||||
#include "gtkintl.h"
|
|
||||||
|
|
||||||
#define RULER_WIDTH 14
|
|
||||||
#define MINIMUM_INCR 5
|
|
||||||
#define MAXIMUM_SUBDIVIDE 5
|
|
||||||
#define MAXIMUM_SCALES 10
|
|
||||||
|
|
||||||
#define ROUND(x) ((int) ((x) + 0.5))
|
|
||||||
|
|
||||||
struct _GtkRulerPrivate
|
|
||||||
{
|
|
||||||
GtkOrientation orientation;
|
|
||||||
GtkRulerMetric *metric;
|
|
||||||
|
|
||||||
cairo_surface_t *backing_store;
|
|
||||||
|
|
||||||
gint slider_size;
|
|
||||||
gint xsrc;
|
|
||||||
gint ysrc;
|
|
||||||
|
|
||||||
gdouble lower; /* The upper limit of the ruler (in points) */
|
|
||||||
gdouble max_size; /* The maximum size of the ruler */
|
|
||||||
gdouble position; /* The position of the mark on the ruler */
|
|
||||||
gdouble upper; /* The lower limit of the ruler */
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
PROP_0,
|
|
||||||
PROP_ORIENTATION,
|
|
||||||
PROP_LOWER,
|
|
||||||
PROP_UPPER,
|
|
||||||
PROP_POSITION,
|
|
||||||
PROP_MAX_SIZE,
|
|
||||||
PROP_METRIC
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static void gtk_ruler_set_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec);
|
|
||||||
static void gtk_ruler_get_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec);
|
|
||||||
static void gtk_ruler_realize (GtkWidget *widget);
|
|
||||||
static void gtk_ruler_unrealize (GtkWidget *widget);
|
|
||||||
static void gtk_ruler_get_preferred_width
|
|
||||||
(GtkWidget *widget,
|
|
||||||
gint *minimum,
|
|
||||||
gint *natural);
|
|
||||||
static void gtk_ruler_get_preferred_height
|
|
||||||
(GtkWidget *widget,
|
|
||||||
gint *minimum,
|
|
||||||
gint *natural);
|
|
||||||
static void gtk_ruler_size_allocate (GtkWidget *widget,
|
|
||||||
GtkAllocation *allocation);
|
|
||||||
static gboolean gtk_ruler_motion_notify (GtkWidget *widget,
|
|
||||||
GdkEventMotion *event);
|
|
||||||
static gboolean gtk_ruler_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr);
|
|
||||||
static void gtk_ruler_make_pixmap (GtkRuler *ruler);
|
|
||||||
static void gtk_ruler_draw_ticks (GtkRuler *ruler);
|
|
||||||
static void gtk_ruler_real_draw_ticks (GtkRuler *ruler,
|
|
||||||
cairo_t *cr);
|
|
||||||
static void gtk_ruler_real_draw_pos (GtkRuler *ruler,
|
|
||||||
cairo_t *cr);
|
|
||||||
|
|
||||||
|
|
||||||
static const GtkRulerMetric ruler_metrics[] =
|
|
||||||
{
|
|
||||||
{ "Pixel", "Pi", 1.0, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
|
|
||||||
{ "Inches", "In", 72.0, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
|
|
||||||
{ "Centimeters", "Cn", 28.35, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_CODE (GtkRuler, gtk_ruler, GTK_TYPE_WIDGET,
|
|
||||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE,
|
|
||||||
NULL))
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_class_init (GtkRulerClass *class)
|
|
||||||
{
|
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
|
|
||||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
|
||||||
|
|
||||||
gobject_class->set_property = gtk_ruler_set_property;
|
|
||||||
gobject_class->get_property = gtk_ruler_get_property;
|
|
||||||
|
|
||||||
widget_class->realize = gtk_ruler_realize;
|
|
||||||
widget_class->unrealize = gtk_ruler_unrealize;
|
|
||||||
widget_class->get_preferred_width = gtk_ruler_get_preferred_width;
|
|
||||||
widget_class->get_preferred_height = gtk_ruler_get_preferred_height;
|
|
||||||
widget_class->size_allocate = gtk_ruler_size_allocate;
|
|
||||||
widget_class->motion_notify_event = gtk_ruler_motion_notify;
|
|
||||||
widget_class->draw = gtk_ruler_draw;
|
|
||||||
|
|
||||||
class->draw_ticks = gtk_ruler_real_draw_ticks;
|
|
||||||
class->draw_pos = gtk_ruler_real_draw_pos;
|
|
||||||
|
|
||||||
g_object_class_override_property (gobject_class, PROP_ORIENTATION, "orientation");
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_LOWER,
|
|
||||||
g_param_spec_double ("lower",
|
|
||||||
P_("Lower"),
|
|
||||||
P_("Lower limit of ruler"),
|
|
||||||
-G_MAXDOUBLE,
|
|
||||||
G_MAXDOUBLE,
|
|
||||||
0.0,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_UPPER,
|
|
||||||
g_param_spec_double ("upper",
|
|
||||||
P_("Upper"),
|
|
||||||
P_("Upper limit of ruler"),
|
|
||||||
-G_MAXDOUBLE,
|
|
||||||
G_MAXDOUBLE,
|
|
||||||
0.0,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_POSITION,
|
|
||||||
g_param_spec_double ("position",
|
|
||||||
P_("Position"),
|
|
||||||
P_("Position of mark on the ruler"),
|
|
||||||
-G_MAXDOUBLE,
|
|
||||||
G_MAXDOUBLE,
|
|
||||||
0.0,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_MAX_SIZE,
|
|
||||||
g_param_spec_double ("max-size",
|
|
||||||
P_("Max Size"),
|
|
||||||
P_("Maximum size of the ruler"),
|
|
||||||
-G_MAXDOUBLE,
|
|
||||||
G_MAXDOUBLE,
|
|
||||||
0.0,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
/**
|
|
||||||
* GtkRuler:metric:
|
|
||||||
*
|
|
||||||
* The metric used for the ruler.
|
|
||||||
*
|
|
||||||
* Since: 2.8
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_METRIC,
|
|
||||||
g_param_spec_enum ("metric",
|
|
||||||
P_("Metric"),
|
|
||||||
P_("The metric used for the ruler"),
|
|
||||||
GTK_TYPE_METRIC_TYPE,
|
|
||||||
GTK_PIXELS,
|
|
||||||
GTK_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (GtkRulerPrivate));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_init (GtkRuler *ruler)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
|
|
||||||
ruler->priv = G_TYPE_INSTANCE_GET_PRIVATE (ruler,
|
|
||||||
GTK_TYPE_RULER,
|
|
||||||
GtkRulerPrivate);
|
|
||||||
priv = ruler->priv;
|
|
||||||
|
|
||||||
priv->orientation = GTK_ORIENTATION_HORIZONTAL;
|
|
||||||
|
|
||||||
priv->backing_store = NULL;
|
|
||||||
priv->xsrc = 0;
|
|
||||||
priv->ysrc = 0;
|
|
||||||
priv->slider_size = 0;
|
|
||||||
priv->lower = 0;
|
|
||||||
priv->upper = 0;
|
|
||||||
priv->position = 0;
|
|
||||||
priv->max_size = 0;
|
|
||||||
|
|
||||||
gtk_ruler_set_metric (ruler, GTK_PIXELS);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_set_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (object);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_ORIENTATION:
|
|
||||||
priv->orientation = g_value_get_enum (value);
|
|
||||||
gtk_widget_queue_resize (GTK_WIDGET (ruler));
|
|
||||||
break;
|
|
||||||
case PROP_LOWER:
|
|
||||||
gtk_ruler_set_range (ruler, g_value_get_double (value), priv->upper,
|
|
||||||
priv->position, priv->max_size);
|
|
||||||
break;
|
|
||||||
case PROP_UPPER:
|
|
||||||
gtk_ruler_set_range (ruler, priv->lower, g_value_get_double (value),
|
|
||||||
priv->position, priv->max_size);
|
|
||||||
break;
|
|
||||||
case PROP_POSITION:
|
|
||||||
gtk_ruler_set_range (ruler, priv->lower, priv->upper,
|
|
||||||
g_value_get_double (value), priv->max_size);
|
|
||||||
break;
|
|
||||||
case PROP_MAX_SIZE:
|
|
||||||
gtk_ruler_set_range (ruler, priv->lower, priv->upper,
|
|
||||||
priv->position, g_value_get_double (value));
|
|
||||||
break;
|
|
||||||
case PROP_METRIC:
|
|
||||||
gtk_ruler_set_metric (ruler, g_value_get_enum (value));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_get_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (object);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_ORIENTATION:
|
|
||||||
g_value_set_enum (value, priv->orientation);
|
|
||||||
break;
|
|
||||||
case PROP_LOWER:
|
|
||||||
g_value_set_double (value, priv->lower);
|
|
||||||
break;
|
|
||||||
case PROP_UPPER:
|
|
||||||
g_value_set_double (value, priv->upper);
|
|
||||||
break;
|
|
||||||
case PROP_POSITION:
|
|
||||||
g_value_set_double (value, priv->position);
|
|
||||||
break;
|
|
||||||
case PROP_MAX_SIZE:
|
|
||||||
g_value_set_double (value, priv->max_size);
|
|
||||||
break;
|
|
||||||
case PROP_METRIC:
|
|
||||||
g_value_set_enum (value, gtk_ruler_get_metric (ruler));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_ruler_new:
|
|
||||||
* @orientation: the ruler's orientation.
|
|
||||||
*
|
|
||||||
* Creates a new #GtkRuler with the given orientation.
|
|
||||||
*
|
|
||||||
* Return value: a new #GtkRuler.
|
|
||||||
*
|
|
||||||
* Since: 3.0
|
|
||||||
**/
|
|
||||||
GtkWidget *
|
|
||||||
gtk_ruler_new (GtkOrientation orientation)
|
|
||||||
{
|
|
||||||
return g_object_new (GTK_TYPE_RULER,
|
|
||||||
"orientation", orientation,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_ruler_invalidate_ticks:
|
|
||||||
* @ruler: the ruler to invalidate
|
|
||||||
*
|
|
||||||
* For performance reasons, #GtkRuler keeps a backbuffer containing the
|
|
||||||
* prerendered contents of the ticks. To cause a repaint this buffer,
|
|
||||||
* call this function instead of gtk_widget_queue_draw().
|
|
||||||
**/
|
|
||||||
static void
|
|
||||||
gtk_ruler_invalidate_ticks (GtkRuler *ruler)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GTK_IS_RULER (ruler));
|
|
||||||
|
|
||||||
if (ruler->priv->backing_store == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
gtk_ruler_draw_ticks (ruler);
|
|
||||||
gtk_widget_queue_draw (GTK_WIDGET (ruler));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gtk_ruler_set_metric (GtkRuler *ruler,
|
|
||||||
GtkMetricType metric)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_RULER (ruler));
|
|
||||||
|
|
||||||
priv = ruler->priv;
|
|
||||||
|
|
||||||
priv->metric = (GtkRulerMetric *) &ruler_metrics[metric];
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (ruler), "metric");
|
|
||||||
|
|
||||||
gtk_ruler_invalidate_ticks (ruler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_ruler_get_metric:
|
|
||||||
* @ruler: a #GtkRuler
|
|
||||||
*
|
|
||||||
* Gets the units used for a #GtkRuler. See gtk_ruler_set_metric().
|
|
||||||
*
|
|
||||||
* Return value: the units currently used for @ruler
|
|
||||||
**/
|
|
||||||
GtkMetricType
|
|
||||||
gtk_ruler_get_metric (GtkRuler *ruler)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
gint i;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_RULER (ruler), 0);
|
|
||||||
|
|
||||||
priv = ruler->priv;
|
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (ruler_metrics); i++)
|
|
||||||
if (priv->metric == &ruler_metrics[i])
|
|
||||||
return i;
|
|
||||||
|
|
||||||
g_assert_not_reached ();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_ruler_set_range:
|
|
||||||
* @ruler: the gtkruler
|
|
||||||
* @lower: the lower limit of the ruler
|
|
||||||
* @upper: the upper limit of the ruler
|
|
||||||
* @position: the mark on the ruler
|
|
||||||
* @max_size: the maximum size of the ruler used when calculating the space to
|
|
||||||
* leave for the text
|
|
||||||
*
|
|
||||||
* This sets the range of the ruler.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gtk_ruler_set_range (GtkRuler *ruler,
|
|
||||||
gdouble lower,
|
|
||||||
gdouble upper,
|
|
||||||
gdouble position,
|
|
||||||
gdouble max_size)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_RULER (ruler));
|
|
||||||
|
|
||||||
priv = ruler->priv;
|
|
||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (ruler));
|
|
||||||
if (priv->lower != lower)
|
|
||||||
{
|
|
||||||
priv->lower = lower;
|
|
||||||
g_object_notify (G_OBJECT (ruler), "lower");
|
|
||||||
}
|
|
||||||
if (priv->upper != upper)
|
|
||||||
{
|
|
||||||
priv->upper = upper;
|
|
||||||
g_object_notify (G_OBJECT (ruler), "upper");
|
|
||||||
}
|
|
||||||
if (priv->position != position)
|
|
||||||
{
|
|
||||||
priv->position = position;
|
|
||||||
g_object_notify (G_OBJECT (ruler), "position");
|
|
||||||
}
|
|
||||||
if (priv->max_size != max_size)
|
|
||||||
{
|
|
||||||
priv->max_size = max_size;
|
|
||||||
g_object_notify (G_OBJECT (ruler), "max-size");
|
|
||||||
}
|
|
||||||
g_object_thaw_notify (G_OBJECT (ruler));
|
|
||||||
|
|
||||||
gtk_ruler_invalidate_ticks (ruler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_ruler_get_range:
|
|
||||||
* @ruler: a #GtkRuler
|
|
||||||
* @lower: (allow-none): location to store lower limit of the ruler, or %NULL
|
|
||||||
* @upper: (allow-none): location to store upper limit of the ruler, or %NULL
|
|
||||||
* @position: (allow-none): location to store the current position of the mark on the ruler, or %NULL
|
|
||||||
* @max_size: location to store the maximum size of the ruler used when calculating
|
|
||||||
* the space to leave for the text, or %NULL.
|
|
||||||
*
|
|
||||||
* Retrieves values indicating the range and current position of a #GtkRuler.
|
|
||||||
* See gtk_ruler_set_range().
|
|
||||||
**/
|
|
||||||
void
|
|
||||||
gtk_ruler_get_range (GtkRuler *ruler,
|
|
||||||
gdouble *lower,
|
|
||||||
gdouble *upper,
|
|
||||||
gdouble *position,
|
|
||||||
gdouble *max_size)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_RULER (ruler));
|
|
||||||
|
|
||||||
priv = ruler->priv;
|
|
||||||
|
|
||||||
if (lower)
|
|
||||||
*lower = priv->lower;
|
|
||||||
if (upper)
|
|
||||||
*upper = priv->upper;
|
|
||||||
if (position)
|
|
||||||
*position = priv->position;
|
|
||||||
if (max_size)
|
|
||||||
*max_size = priv->max_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_draw_ticks (GtkRuler *ruler)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
cairo_t *cr;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_RULER (ruler));
|
|
||||||
|
|
||||||
if (priv->backing_store == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
cr = cairo_create (priv->backing_store);
|
|
||||||
|
|
||||||
if (GTK_RULER_GET_CLASS (ruler)->draw_ticks)
|
|
||||||
GTK_RULER_GET_CLASS (ruler)->draw_ticks (ruler, cr);
|
|
||||||
|
|
||||||
cairo_destroy (cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_realize (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
GtkAllocation allocation;
|
|
||||||
GtkRuler *ruler;
|
|
||||||
GdkWindow *window;
|
|
||||||
GdkWindowAttr attributes;
|
|
||||||
gint attributes_mask;
|
|
||||||
|
|
||||||
ruler = GTK_RULER (widget);
|
|
||||||
|
|
||||||
gtk_widget_set_realized (widget, TRUE);
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &allocation);
|
|
||||||
|
|
||||||
attributes.window_type = GDK_WINDOW_CHILD;
|
|
||||||
attributes.x = allocation.x;
|
|
||||||
attributes.y = allocation.y;
|
|
||||||
attributes.width = allocation.width;
|
|
||||||
attributes.height = allocation.height;
|
|
||||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
|
||||||
attributes.visual = gtk_widget_get_visual (widget);
|
|
||||||
attributes.event_mask = gtk_widget_get_events (widget);
|
|
||||||
attributes.event_mask |= (GDK_EXPOSURE_MASK |
|
|
||||||
GDK_POINTER_MOTION_MASK |
|
|
||||||
GDK_POINTER_MOTION_HINT_MASK);
|
|
||||||
|
|
||||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
|
|
||||||
|
|
||||||
window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
|
||||||
&attributes, attributes_mask);
|
|
||||||
gtk_widget_set_window (widget, window);
|
|
||||||
gdk_window_set_user_data (window, ruler);
|
|
||||||
|
|
||||||
gtk_widget_style_attach (widget);
|
|
||||||
gtk_style_set_background (gtk_widget_get_style (widget),
|
|
||||||
window, GTK_STATE_ACTIVE);
|
|
||||||
|
|
||||||
gtk_ruler_make_pixmap (ruler);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_unrealize (GtkWidget *widget)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (widget);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
|
|
||||||
if (priv->backing_store)
|
|
||||||
{
|
|
||||||
cairo_surface_destroy (priv->backing_store);
|
|
||||||
priv->backing_store = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
GTK_WIDGET_CLASS (gtk_ruler_parent_class)->unrealize (widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_get_preferred_size (GtkWidget *widget,
|
|
||||||
GtkOrientation orientation,
|
|
||||||
gint *minimum,
|
|
||||||
gint *natural)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (widget);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
GtkStyle *style;
|
|
||||||
gint thickness;
|
|
||||||
|
|
||||||
style = gtk_widget_get_style (widget);
|
|
||||||
|
|
||||||
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
thickness = style->xthickness;
|
|
||||||
else
|
|
||||||
thickness = style->ythickness;
|
|
||||||
|
|
||||||
if (priv->orientation == orientation)
|
|
||||||
*minimum = *natural = thickness * 2 + 1;
|
|
||||||
else
|
|
||||||
*minimum = *natural = thickness * 2 + RULER_WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_get_preferred_width (GtkWidget *widget,
|
|
||||||
gint *minimum,
|
|
||||||
gint *natural)
|
|
||||||
{
|
|
||||||
gtk_ruler_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum, natural);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_get_preferred_height (GtkWidget *widget,
|
|
||||||
gint *minimum,
|
|
||||||
gint *natural)
|
|
||||||
{
|
|
||||||
gtk_ruler_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, minimum, natural);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_size_allocate (GtkWidget *widget,
|
|
||||||
GtkAllocation *allocation)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (widget);
|
|
||||||
GtkAllocation old_allocation;
|
|
||||||
gboolean resized;
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &old_allocation);
|
|
||||||
resized = (old_allocation.width != allocation->width ||
|
|
||||||
old_allocation.height != allocation->height);
|
|
||||||
|
|
||||||
gtk_widget_set_allocation (widget, allocation);
|
|
||||||
|
|
||||||
if (gtk_widget_get_realized (widget))
|
|
||||||
{
|
|
||||||
gdk_window_move_resize (gtk_widget_get_window (widget),
|
|
||||||
allocation->x, allocation->y,
|
|
||||||
allocation->width, allocation->height);
|
|
||||||
|
|
||||||
if (resized)
|
|
||||||
gtk_ruler_make_pixmap (ruler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
gtk_ruler_motion_notify (GtkWidget *widget,
|
|
||||||
GdkEventMotion *event)
|
|
||||||
{
|
|
||||||
GtkAllocation allocation;
|
|
||||||
GtkRuler *ruler = GTK_RULER (widget);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
gint x;
|
|
||||||
gint y;
|
|
||||||
|
|
||||||
gdk_event_request_motions (event);
|
|
||||||
x = event->x;
|
|
||||||
y = event->y;
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &allocation);
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
priv->position = priv->lower + ((priv->upper - priv->lower) * x) / allocation.width;
|
|
||||||
else
|
|
||||||
priv->position = priv->lower + ((priv->upper - priv->lower) * y) / allocation.height;
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (ruler), "position");
|
|
||||||
|
|
||||||
gtk_widget_queue_draw (widget);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
gtk_ruler_draw (GtkWidget *widget,
|
|
||||||
cairo_t *cr)
|
|
||||||
{
|
|
||||||
GtkRuler *ruler = GTK_RULER (widget);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
|
|
||||||
cairo_set_source_surface (cr, priv->backing_store, 0, 0);
|
|
||||||
cairo_paint (cr);
|
|
||||||
|
|
||||||
if (GTK_RULER_GET_CLASS (ruler)->draw_pos)
|
|
||||||
GTK_RULER_GET_CLASS (ruler)->draw_pos (ruler, cr);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_make_pixmap (GtkRuler *ruler)
|
|
||||||
{
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
GtkAllocation allocation;
|
|
||||||
GtkWidget *widget;
|
|
||||||
|
|
||||||
widget = GTK_WIDGET (ruler);
|
|
||||||
|
|
||||||
gtk_widget_get_allocation (widget, &allocation);
|
|
||||||
|
|
||||||
if (priv->backing_store)
|
|
||||||
cairo_surface_destroy (priv->backing_store);
|
|
||||||
|
|
||||||
priv->backing_store = gdk_window_create_similar_surface (gtk_widget_get_window (widget),
|
|
||||||
CAIRO_CONTENT_COLOR,
|
|
||||||
allocation.width,
|
|
||||||
allocation.height);
|
|
||||||
|
|
||||||
priv->xsrc = 0;
|
|
||||||
priv->ysrc = 0;
|
|
||||||
|
|
||||||
gtk_ruler_draw_ticks (ruler);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_real_draw_ticks (GtkRuler *ruler,
|
|
||||||
cairo_t *cr)
|
|
||||||
{
|
|
||||||
GtkWidget *widget = GTK_WIDGET (ruler);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
GtkStyle *style;
|
|
||||||
gint i, j;
|
|
||||||
gint w, h;
|
|
||||||
gint width, height;
|
|
||||||
gint xthickness;
|
|
||||||
gint ythickness;
|
|
||||||
gint length, ideal_length;
|
|
||||||
gdouble lower, upper; /* Upper and lower limits, in ruler units */
|
|
||||||
gdouble increment; /* Number of pixels per unit */
|
|
||||||
gint scale; /* Number of units per major unit */
|
|
||||||
gdouble subd_incr;
|
|
||||||
gdouble start, end, cur;
|
|
||||||
gchar unit_str[32];
|
|
||||||
gint digit_height;
|
|
||||||
gint digit_offset;
|
|
||||||
gint text_width;
|
|
||||||
gint text_height;
|
|
||||||
gint pos;
|
|
||||||
PangoLayout *layout;
|
|
||||||
PangoRectangle logical_rect, ink_rect;
|
|
||||||
|
|
||||||
style = gtk_widget_get_style (widget);
|
|
||||||
|
|
||||||
xthickness = style->xthickness;
|
|
||||||
ythickness = style->ythickness;
|
|
||||||
|
|
||||||
layout = gtk_widget_create_pango_layout (widget, "012456789");
|
|
||||||
pango_layout_get_extents (layout, &ink_rect, &logical_rect);
|
|
||||||
|
|
||||||
digit_height = PANGO_PIXELS (ink_rect.height) + 2;
|
|
||||||
digit_offset = ink_rect.y;
|
|
||||||
|
|
||||||
w = gtk_widget_get_allocated_width (widget);
|
|
||||||
h = gtk_widget_get_allocated_height (widget);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
width = w;
|
|
||||||
height = h - ythickness * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width = h;
|
|
||||||
height = w - ythickness * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DETAILE(private) (priv->orientation == GTK_ORIENTATION_HORIZONTAL ? "hruler" : "vruler");
|
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &style->fg[gtk_widget_get_state (widget)]);
|
|
||||||
|
|
||||||
gtk_paint_box (style, cr,
|
|
||||||
GTK_STATE_NORMAL, GTK_SHADOW_OUT,
|
|
||||||
widget,
|
|
||||||
priv->orientation == GTK_ORIENTATION_HORIZONTAL ?
|
|
||||||
"hruler" : "vruler",
|
|
||||||
0, 0,
|
|
||||||
w, h);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
xthickness,
|
|
||||||
height + ythickness,
|
|
||||||
w - 2 * xthickness,
|
|
||||||
1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
height + xthickness,
|
|
||||||
ythickness,
|
|
||||||
1,
|
|
||||||
h - 2 * ythickness);
|
|
||||||
}
|
|
||||||
|
|
||||||
upper = priv->upper / priv->metric->pixels_per_unit;
|
|
||||||
lower = priv->lower / priv->metric->pixels_per_unit;
|
|
||||||
|
|
||||||
if ((upper - lower) == 0)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
increment = (gdouble) width / (upper - lower);
|
|
||||||
|
|
||||||
/* determine the scale H
|
|
||||||
* We calculate the text size as for the vruler, so that the result
|
|
||||||
* for the scale looks consistent with an accompanying vruler
|
|
||||||
*/
|
|
||||||
/* determine the scale V
|
|
||||||
* use the maximum extents of the ruler to determine the largest
|
|
||||||
* possible number to be displayed. Calculate the height in pixels
|
|
||||||
* of this displayed text. Use this height to find a scale which
|
|
||||||
* leaves sufficient room for drawing the ruler.
|
|
||||||
*/
|
|
||||||
scale = ceil (priv->max_size / priv->metric->pixels_per_unit);
|
|
||||||
g_snprintf (unit_str, sizeof (unit_str), "%d", scale);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
text_width = strlen (unit_str) * digit_height + 1;
|
|
||||||
|
|
||||||
for (scale = 0; scale < MAXIMUM_SCALES; scale++)
|
|
||||||
if (priv->metric->ruler_scale[scale] * fabs(increment) > 2 * text_width)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
text_height = strlen (unit_str) * digit_height + 1;
|
|
||||||
|
|
||||||
for (scale = 0; scale < MAXIMUM_SCALES; scale++)
|
|
||||||
if (priv->metric->ruler_scale[scale] * fabs(increment) > 2 * text_height)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (scale == MAXIMUM_SCALES)
|
|
||||||
scale = MAXIMUM_SCALES - 1;
|
|
||||||
|
|
||||||
/* drawing starts here */
|
|
||||||
length = 0;
|
|
||||||
for (i = MAXIMUM_SUBDIVIDE - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
subd_incr = (gdouble) priv->metric->ruler_scale[scale] /
|
|
||||||
(gdouble) priv->metric->subdivide[i];
|
|
||||||
if (subd_incr * fabs(increment) <= MINIMUM_INCR)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Calculate the length of the tickmarks. Make sure that
|
|
||||||
* this length increases for each set of ticks
|
|
||||||
*/
|
|
||||||
ideal_length = height / (i + 1) - 1;
|
|
||||||
if (ideal_length > ++length)
|
|
||||||
length = ideal_length;
|
|
||||||
|
|
||||||
if (lower < upper)
|
|
||||||
{
|
|
||||||
start = floor (lower / subd_incr) * subd_incr;
|
|
||||||
end = ceil (upper / subd_incr) * subd_incr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
start = floor (upper / subd_incr) * subd_incr;
|
|
||||||
end = ceil (lower / subd_incr) * subd_incr;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (cur = start; cur <= end; cur += subd_incr)
|
|
||||||
{
|
|
||||||
pos = ROUND ((cur - lower) * increment);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
pos, height + ythickness - length,
|
|
||||||
1, length);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cairo_rectangle (cr,
|
|
||||||
height + xthickness - length, pos,
|
|
||||||
length, 1);
|
|
||||||
}
|
|
||||||
cairo_fill (cr);
|
|
||||||
|
|
||||||
/* draw label */
|
|
||||||
if (i == 0)
|
|
||||||
{
|
|
||||||
g_snprintf (unit_str, sizeof (unit_str), "%d", (int) cur);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
pango_layout_set_text (layout, unit_str, -1);
|
|
||||||
pango_layout_get_extents (layout, &logical_rect, NULL);
|
|
||||||
|
|
||||||
gtk_paint_layout (style,
|
|
||||||
cr,
|
|
||||||
gtk_widget_get_state (widget),
|
|
||||||
FALSE,
|
|
||||||
widget,
|
|
||||||
"hruler",
|
|
||||||
pos + 2, ythickness + PANGO_PIXELS (logical_rect.y - digit_offset),
|
|
||||||
layout);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (j = 0; j < (int) strlen (unit_str); j++)
|
|
||||||
{
|
|
||||||
pango_layout_set_text (layout, unit_str + j, 1);
|
|
||||||
pango_layout_get_extents (layout, NULL, &logical_rect);
|
|
||||||
|
|
||||||
gtk_paint_layout (style,
|
|
||||||
cr,
|
|
||||||
gtk_widget_get_state (widget),
|
|
||||||
FALSE,
|
|
||||||
widget,
|
|
||||||
"vruler",
|
|
||||||
xthickness + 1,
|
|
||||||
pos + digit_height * j + 2 + PANGO_PIXELS (logical_rect.y - digit_offset),
|
|
||||||
layout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_fill (cr);
|
|
||||||
|
|
||||||
out:
|
|
||||||
g_object_unref (layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_ruler_real_draw_pos (GtkRuler *ruler,
|
|
||||||
cairo_t *cr)
|
|
||||||
{
|
|
||||||
GtkWidget *widget = GTK_WIDGET (ruler);
|
|
||||||
GtkRulerPrivate *priv = ruler->priv;
|
|
||||||
GtkStyle *style;
|
|
||||||
gint x, y, width, height;
|
|
||||||
gint bs_width, bs_height;
|
|
||||||
gint xthickness;
|
|
||||||
gint ythickness;
|
|
||||||
gdouble increment;
|
|
||||||
|
|
||||||
style = gtk_widget_get_style (widget);
|
|
||||||
xthickness = style->xthickness;
|
|
||||||
ythickness = style->ythickness;
|
|
||||||
width = gtk_widget_get_allocated_width (widget);
|
|
||||||
height = gtk_widget_get_allocated_height (widget);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
height -= ythickness * 2;
|
|
||||||
|
|
||||||
bs_width = height / 2 + 2;
|
|
||||||
bs_width |= 1; /* make sure it's odd */
|
|
||||||
bs_height = bs_width / 2 + 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
width -= xthickness * 2;
|
|
||||||
|
|
||||||
bs_height = width / 2 + 2;
|
|
||||||
bs_height |= 1; /* make sure it's odd */
|
|
||||||
bs_width = bs_height / 2 + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((bs_width > 0) && (bs_height > 0))
|
|
||||||
{
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
increment = (gdouble) width / (priv->upper - priv->lower);
|
|
||||||
|
|
||||||
x = ROUND ((priv->position - priv->lower) * increment) + (xthickness - bs_width) / 2 - 1;
|
|
||||||
y = (height + bs_height) / 2 + ythickness;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
increment = (gdouble) height / (priv->upper - priv->lower);
|
|
||||||
|
|
||||||
x = (width + bs_width) / 2 + xthickness;
|
|
||||||
y = ROUND ((priv->position - priv->lower) * increment) + (ythickness - bs_height) / 2 - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &style->fg[gtk_widget_get_state (widget)]);
|
|
||||||
|
|
||||||
cairo_move_to (cr, x, y);
|
|
||||||
|
|
||||||
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
cairo_line_to (cr, x + bs_width / 2.0, y + bs_height);
|
|
||||||
cairo_line_to (cr, x + bs_width, y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cairo_line_to (cr, x + bs_width, y + bs_height / 2.0);
|
|
||||||
cairo_line_to (cr, x, y + bs_height);
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_fill (cr);
|
|
||||||
|
|
||||||
priv->xsrc = x;
|
|
||||||
priv->ysrc = y;
|
|
||||||
}
|
|
||||||
}
|
|
120
gtk/gtkruler.h
120
gtk/gtkruler.h
@ -1,120 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NOTE this widget is considered too specialized/little-used for
|
|
||||||
* GTK+, and will in the future be moved to some other package. If
|
|
||||||
* your application needs this widget, feel free to use it, as the
|
|
||||||
* widget does work and is useful in some applications; it's just not
|
|
||||||
* of general interest. However, we are not accepting new features for
|
|
||||||
* the widget, and it will eventually move out of the GTK+
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
|
||||||
#error "Only <gtk/gtk.h> can be included directly."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __GTK_RULER_H__
|
|
||||||
#define __GTK_RULER_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtkwidget.h>
|
|
||||||
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
#define GTK_TYPE_RULER (gtk_ruler_get_type ())
|
|
||||||
#define GTK_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_RULER, GtkRuler))
|
|
||||||
#define GTK_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_RULER, GtkRulerClass))
|
|
||||||
#define GTK_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_RULER))
|
|
||||||
#define GTK_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_RULER))
|
|
||||||
#define GTK_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_RULER, GtkRulerClass))
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GtkRuler GtkRuler;
|
|
||||||
typedef struct _GtkRulerPrivate GtkRulerPrivate;
|
|
||||||
typedef struct _GtkRulerClass GtkRulerClass;
|
|
||||||
typedef struct _GtkRulerMetric GtkRulerMetric;
|
|
||||||
|
|
||||||
/* All distances below are in 1/72nd's of an inch. (According to
|
|
||||||
* Adobe that's a point, but points are really 1/72.27 in.)
|
|
||||||
*/
|
|
||||||
struct _GtkRuler
|
|
||||||
{
|
|
||||||
GtkWidget widget;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GtkRulerPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkRulerClass
|
|
||||||
{
|
|
||||||
GtkWidgetClass parent_class;
|
|
||||||
|
|
||||||
void (* draw_ticks) (GtkRuler *ruler,
|
|
||||||
cairo_t *cr);
|
|
||||||
void (* draw_pos) (GtkRuler *ruler,
|
|
||||||
cairo_t *cr);
|
|
||||||
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*_gtk_reserved1) (void);
|
|
||||||
void (*_gtk_reserved2) (void);
|
|
||||||
void (*_gtk_reserved3) (void);
|
|
||||||
void (*_gtk_reserved4) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkRulerMetric
|
|
||||||
{
|
|
||||||
gchar *metric_name;
|
|
||||||
gchar *abbrev;
|
|
||||||
/* This should be points_per_unit. This is the size of the unit
|
|
||||||
* in 1/72nd's of an inch and has nothing to do with screen pixels */
|
|
||||||
gdouble pixels_per_unit;
|
|
||||||
gdouble ruler_scale[10];
|
|
||||||
gint subdivide[5]; /* five possible modes of subdivision */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GType gtk_ruler_get_type (void) G_GNUC_CONST;
|
|
||||||
GtkWidget * gtk_ruler_new (GtkOrientation orientation);
|
|
||||||
void gtk_ruler_set_metric (GtkRuler *ruler,
|
|
||||||
GtkMetricType metric);
|
|
||||||
GtkMetricType gtk_ruler_get_metric (GtkRuler *ruler);
|
|
||||||
void gtk_ruler_set_range (GtkRuler *ruler,
|
|
||||||
gdouble lower,
|
|
||||||
gdouble upper,
|
|
||||||
gdouble position,
|
|
||||||
gdouble max_size);
|
|
||||||
void gtk_ruler_get_range (GtkRuler *ruler,
|
|
||||||
gdouble *lower,
|
|
||||||
gdouble *upper,
|
|
||||||
gdouble *position,
|
|
||||||
gdouble *max_size);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __GTK_RULER_H__ */
|
|
@ -1027,7 +1027,7 @@ gtk_scale_popup (GtkWidget *widget,
|
|||||||
|
|
||||||
device = gdk_event_get_device (event);
|
device = gdk_event_get_device (event);
|
||||||
|
|
||||||
if (device->source == GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
{
|
{
|
||||||
keyboard = device;
|
keyboard = device;
|
||||||
pointer = gdk_device_get_associated_device (device);
|
pointer = gdk_device_get_associated_device (device);
|
||||||
|
@ -66,7 +66,8 @@ struct _GtkSelectionData
|
|||||||
GdkDisplay *GSEAL (display);
|
GdkDisplay *GSEAL (display);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkTargetEntry {
|
struct _GtkTargetEntry
|
||||||
|
{
|
||||||
gchar *target;
|
gchar *target;
|
||||||
guint flags;
|
guint flags;
|
||||||
guint info;
|
guint info;
|
||||||
|
200
gtk/gtkspinner.c
200
gtk/gtkspinner.c
@ -364,20 +364,22 @@ gtk_spinner_dispose (GObject *gobject)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_spinner_set_active (GtkSpinner *spinner, gboolean active)
|
gtk_spinner_set_active (GtkSpinner *spinner,
|
||||||
|
gboolean active)
|
||||||
{
|
{
|
||||||
GtkSpinnerPrivate *priv;
|
GtkSpinnerPrivate *priv = spinner->priv;
|
||||||
|
|
||||||
active = active != FALSE;
|
active = !!active;
|
||||||
|
|
||||||
priv = GTK_SPINNER (spinner)->priv;
|
|
||||||
|
|
||||||
if (priv->active != active)
|
if (priv->active != active)
|
||||||
{
|
{
|
||||||
priv->active = active;
|
priv->active = active;
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (spinner), "active");
|
g_object_notify (G_OBJECT (spinner), "active");
|
||||||
|
|
||||||
if (active && gtk_widget_get_realized (GTK_WIDGET (spinner)) && priv->timeout == 0)
|
if (active &&
|
||||||
|
gtk_widget_get_realized (GTK_WIDGET (spinner)) &&
|
||||||
|
priv->timeout == 0)
|
||||||
{
|
{
|
||||||
gtk_spinner_add_timeout (spinner);
|
gtk_spinner_add_timeout (spinner);
|
||||||
}
|
}
|
||||||
@ -388,84 +390,7 @@ gtk_spinner_set_active (GtkSpinner *spinner, gboolean active)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static GType
|
/* accessible implementation */
|
||||||
gtk_spinner_accessible_factory_get_accessible_type (void)
|
|
||||||
{
|
|
||||||
return gtk_spinner_accessible_get_type ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static AtkObject *
|
|
||||||
gtk_spinner_accessible_new (GObject *obj)
|
|
||||||
{
|
|
||||||
AtkObject *accessible;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_WIDGET (obj), NULL);
|
|
||||||
|
|
||||||
accessible = g_object_new (gtk_spinner_accessible_get_type (), NULL);
|
|
||||||
atk_object_initialize (accessible, obj);
|
|
||||||
|
|
||||||
return accessible;
|
|
||||||
}
|
|
||||||
|
|
||||||
static AtkObject*
|
|
||||||
gtk_spinner_accessible_factory_create_accessible (GObject *obj)
|
|
||||||
{
|
|
||||||
return gtk_spinner_accessible_new (obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass)
|
|
||||||
{
|
|
||||||
klass->create_accessible = gtk_spinner_accessible_factory_create_accessible;
|
|
||||||
klass->get_accessible_type = gtk_spinner_accessible_factory_get_accessible_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GType
|
|
||||||
gtk_spinner_accessible_factory_get_type (void)
|
|
||||||
{
|
|
||||||
static GType type = 0;
|
|
||||||
|
|
||||||
if (!type)
|
|
||||||
{
|
|
||||||
const GTypeInfo tinfo =
|
|
||||||
{
|
|
||||||
sizeof (AtkObjectFactoryClass),
|
|
||||||
NULL, /* base_init */
|
|
||||||
NULL, /* base_finalize */
|
|
||||||
(GClassInitFunc) gtk_spinner_accessible_factory_class_init,
|
|
||||||
NULL, /* class_finalize */
|
|
||||||
NULL, /* class_data */
|
|
||||||
sizeof (AtkObjectFactory),
|
|
||||||
0, /* n_preallocs */
|
|
||||||
NULL, NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY,
|
|
||||||
I_("GtkSpinnerAccessibleFactory"),
|
|
||||||
&tinfo, 0);
|
|
||||||
}
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static AtkObjectClass *a11y_parent_class = NULL;
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_spinner_accessible_initialize (AtkObject *accessible,
|
|
||||||
gpointer widget)
|
|
||||||
{
|
|
||||||
atk_object_set_name (accessible, C_("throbbing progress animation widget", "Spinner"));
|
|
||||||
atk_object_set_description (accessible, _("Provides visual indication of progress"));
|
|
||||||
|
|
||||||
a11y_parent_class->initialize (accessible, widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_spinner_accessible_class_init (AtkObjectClass *klass)
|
|
||||||
{
|
|
||||||
a11y_parent_class = g_type_class_peek_parent (klass);
|
|
||||||
|
|
||||||
klass->initialize = gtk_spinner_accessible_initialize;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_spinner_accessible_image_get_size (AtkImage *image,
|
gtk_spinner_accessible_image_get_size (AtkImage *image,
|
||||||
@ -476,7 +401,7 @@ gtk_spinner_accessible_image_get_size (AtkImage *image,
|
|||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (image));
|
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (image));
|
||||||
if (!widget)
|
if (widget == NULL)
|
||||||
{
|
{
|
||||||
*width = *height = 0;
|
*width = *height = 0;
|
||||||
}
|
}
|
||||||
@ -489,62 +414,79 @@ gtk_spinner_accessible_image_get_size (AtkImage *image,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_spinner_accessible_image_interface_init (AtkImageIface *iface)
|
gtk_spinner_accessible_image_iface_init (AtkImageIface *iface)
|
||||||
{
|
{
|
||||||
iface->get_image_size = gtk_spinner_accessible_image_get_size;
|
iface->get_image_size = gtk_spinner_accessible_image_get_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GType
|
/* dummy typedef */
|
||||||
gtk_spinner_accessible_get_type (void)
|
typedef struct _GtkSpinnerAccessible GtkSpinnerAccessible;
|
||||||
|
typedef struct _GtkSpinnerAccessibleClass GtkSpinnerAccessibleClass;
|
||||||
|
|
||||||
|
ATK_DEFINE_TYPE_WITH_CODE (GtkSpinnerAccessible,
|
||||||
|
gtk_spinner_accessible,
|
||||||
|
GTK_TYPE_IMAGE,
|
||||||
|
G_IMPLEMENT_INTERFACE (ATK_TYPE_IMAGE,
|
||||||
|
gtk_spinner_accessible_image_iface_init));
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_spinner_accessible_initialize (AtkObject *accessible,
|
||||||
|
gpointer widget)
|
||||||
{
|
{
|
||||||
static GType type = 0;
|
ATK_OBJECT_CLASS (gtk_spinner_accessible_parent_class)->initialize (accessible, widget);
|
||||||
|
|
||||||
/* Action interface
|
atk_object_set_name (accessible, C_("throbbing progress animation widget", "Spinner"));
|
||||||
Name etc. ... */
|
atk_object_set_description (accessible, _("Provides visual indication of progress"));
|
||||||
if (G_UNLIKELY (type == 0))
|
}
|
||||||
{
|
|
||||||
const GInterfaceInfo atk_image_info = {
|
|
||||||
(GInterfaceInitFunc) gtk_spinner_accessible_image_interface_init,
|
|
||||||
(GInterfaceFinalizeFunc) NULL,
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
GType parent_atk_type;
|
|
||||||
GTypeInfo tinfo = { 0 };
|
|
||||||
GTypeQuery query;
|
|
||||||
AtkObjectFactory *factory;
|
|
||||||
|
|
||||||
if ((type = g_type_from_name ("GtkSpinnerAccessible")))
|
static void
|
||||||
return type;
|
gtk_spinner_accessible_class_init (GtkSpinnerAccessibleClass *klass)
|
||||||
|
{
|
||||||
|
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
factory = atk_registry_get_factory (atk_get_default_registry (),
|
atk_class->initialize = gtk_spinner_accessible_initialize;
|
||||||
GTK_TYPE_IMAGE);
|
}
|
||||||
if (!factory)
|
|
||||||
return G_TYPE_INVALID;
|
|
||||||
|
|
||||||
parent_atk_type = atk_object_factory_get_accessible_type (factory);
|
static void
|
||||||
if (!parent_atk_type)
|
gtk_spinner_accessible_init (GtkSpinnerAccessible *self)
|
||||||
return G_TYPE_INVALID;
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/* factory */
|
||||||
* Figure out the size of the class and instance
|
typedef AtkObjectFactory GtkSpinnerAccessibleFactory;
|
||||||
* we are deriving from
|
typedef AtkObjectFactoryClass GtkSpinnerAccessibleFactoryClass;
|
||||||
*/
|
|
||||||
g_type_query (parent_atk_type, &query);
|
|
||||||
|
|
||||||
tinfo.class_init = (GClassInitFunc) gtk_spinner_accessible_class_init;
|
G_DEFINE_TYPE (GtkSpinnerAccessibleFactory,
|
||||||
tinfo.class_size = query.class_size;
|
gtk_spinner_accessible_factory,
|
||||||
tinfo.instance_size = query.instance_size;
|
ATK_TYPE_OBJECT_FACTORY);
|
||||||
|
|
||||||
/* Register the type */
|
static GType
|
||||||
type = g_type_register_static (parent_atk_type,
|
gtk_spinner_accessible_factory_get_accessible_type (void)
|
||||||
"GtkSpinnerAccessible",
|
{
|
||||||
&tinfo, 0);
|
return gtk_spinner_accessible_get_type ();
|
||||||
|
}
|
||||||
|
|
||||||
g_type_add_interface_static (type, ATK_TYPE_IMAGE,
|
static AtkObject *
|
||||||
&atk_image_info);
|
gtk_spinner_accessible_factory_create_accessible (GObject *obj)
|
||||||
}
|
{
|
||||||
|
AtkObject *accessible;
|
||||||
|
|
||||||
return type;
|
accessible = g_object_new (gtk_spinner_accessible_get_type (), NULL);
|
||||||
|
atk_object_initialize (accessible, obj);
|
||||||
|
|
||||||
|
return accessible;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass)
|
||||||
|
{
|
||||||
|
klass->create_accessible = gtk_spinner_accessible_factory_create_accessible;
|
||||||
|
klass->get_accessible_type = gtk_spinner_accessible_factory_get_accessible_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_spinner_accessible_factory_init (AtkObjectFactory *factory)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static AtkObject *
|
static AtkObject *
|
||||||
@ -567,8 +509,7 @@ gtk_spinner_get_accessible (GtkWidget *widget)
|
|||||||
derived_type = g_type_parent (GTK_TYPE_SPINNER);
|
derived_type = g_type_parent (GTK_TYPE_SPINNER);
|
||||||
|
|
||||||
registry = atk_get_default_registry ();
|
registry = atk_get_default_registry ();
|
||||||
factory = atk_registry_get_factory (registry,
|
factory = atk_registry_get_factory (registry, derived_type);
|
||||||
derived_type);
|
|
||||||
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
||||||
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
|
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
|
||||||
atk_registry_set_factory_type (registry,
|
atk_registry_set_factory_type (registry,
|
||||||
@ -576,6 +517,7 @@ gtk_spinner_get_accessible (GtkWidget *widget)
|
|||||||
gtk_spinner_accessible_factory_get_type ());
|
gtk_spinner_accessible_factory_get_type ());
|
||||||
first_time = FALSE;
|
first_time = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GTK_WIDGET_CLASS (gtk_spinner_parent_class)->get_accessible (widget);
|
return GTK_WIDGET_CLASS (gtk_spinner_parent_class)->get_accessible (widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
998
gtk/gtkswitch.c
Normal file
998
gtk/gtkswitch.c
Normal file
@ -0,0 +1,998 @@
|
|||||||
|
/* GTK - The GIMP Toolkit
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Intel Corporation
|
||||||
|
* Copyright (C) 2010 RedHat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Emmanuele Bassi <ebassi@linux.intel.com>
|
||||||
|
* Matthias Clasen <mclasen@redhat.com>
|
||||||
|
*
|
||||||
|
* Based on similar code from:
|
||||||
|
* Thomas Wood <thos@linux.intel.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:gtkswitch
|
||||||
|
* @Short_Description: A "light switch" style toggle
|
||||||
|
* @Title: GtkSwitch
|
||||||
|
* @See_Also: #GtkToggleButton
|
||||||
|
*
|
||||||
|
* #GtkSwitch is a widget that has two states: on or off. The user can control
|
||||||
|
* which state should be active by clicking the empty area, or by dragging the
|
||||||
|
* handle.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "gtkswitch.h"
|
||||||
|
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
|
||||||
|
#include "gtkaccessible.h"
|
||||||
|
#include "gtkactivatable.h"
|
||||||
|
#include "gtkintl.h"
|
||||||
|
#include "gtkstyle.h"
|
||||||
|
#include "gtkprivate.h"
|
||||||
|
#include "gtktoggleaction.h"
|
||||||
|
#include "gtkwidget.h"
|
||||||
|
|
||||||
|
#define DEFAULT_SLIDER_WIDTH (36)
|
||||||
|
#define DEFAULT_SLIDER_HEIGHT (22)
|
||||||
|
|
||||||
|
struct _GtkSwitchPrivate
|
||||||
|
{
|
||||||
|
GdkWindow *event_window;
|
||||||
|
GtkAction *action;
|
||||||
|
|
||||||
|
gint handle_x;
|
||||||
|
gint offset;
|
||||||
|
gint drag_start;
|
||||||
|
gint drag_threshold;
|
||||||
|
|
||||||
|
guint is_active : 1;
|
||||||
|
guint is_dragging : 1;
|
||||||
|
guint in_press : 1;
|
||||||
|
guint in_switch : 1;
|
||||||
|
guint use_action_appearance : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PROP_0,
|
||||||
|
PROP_ACTIVE,
|
||||||
|
PROP_RELATED_ACTION,
|
||||||
|
PROP_USE_ACTION_APPEARANCE,
|
||||||
|
LAST_PROP
|
||||||
|
};
|
||||||
|
|
||||||
|
static GParamSpec *switch_props[LAST_PROP] = { NULL, };
|
||||||
|
|
||||||
|
static GType gtk_switch_accessible_factory_get_type (void);
|
||||||
|
|
||||||
|
static void gtk_switch_activatable_interface_init (GtkActivatableIface *iface);
|
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_CODE (GtkSwitch, gtk_switch, GTK_TYPE_WIDGET,
|
||||||
|
G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE,
|
||||||
|
gtk_switch_activatable_interface_init));
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_button_press (GtkWidget *widget,
|
||||||
|
GdkEventButton *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
GtkAllocation allocation;
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (widget, &allocation);
|
||||||
|
|
||||||
|
if (priv->is_active)
|
||||||
|
{
|
||||||
|
/* if the event occurred in the "off" area, then this
|
||||||
|
* is a direct toggle
|
||||||
|
*/
|
||||||
|
if (event->x <= allocation.width / 2)
|
||||||
|
{
|
||||||
|
priv->in_press = TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->offset = event->x - allocation.width / 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* if the event occurred in the "on" area, then this
|
||||||
|
* is a direct toggle
|
||||||
|
*/
|
||||||
|
if (event->x >= allocation.width / 2)
|
||||||
|
{
|
||||||
|
priv->in_press = TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->offset = event->x;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->drag_start = event->x;
|
||||||
|
|
||||||
|
g_object_get (gtk_widget_get_settings (widget),
|
||||||
|
"gtk-dnd-drag-threshold", &priv->drag_threshold,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_motion (GtkWidget *widget,
|
||||||
|
GdkEventMotion *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
/* if this is a direct toggle we don't handle motion */
|
||||||
|
if (priv->in_press)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (ABS (event->x - priv->drag_start) < priv->drag_threshold)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (event->state & GDK_BUTTON1_MASK)
|
||||||
|
{
|
||||||
|
gint position = event->x - priv->offset;
|
||||||
|
GtkAllocation allocation;
|
||||||
|
GtkStyle *style;
|
||||||
|
|
||||||
|
style = gtk_widget_get_style (widget);
|
||||||
|
gtk_widget_get_allocation (widget, &allocation);
|
||||||
|
|
||||||
|
/* constrain the handle within the trough width */
|
||||||
|
if (position > (allocation.width / 2 - style->xthickness))
|
||||||
|
priv->handle_x = allocation.width / 2 - style->xthickness;
|
||||||
|
else if (position < style->xthickness)
|
||||||
|
priv->handle_x = style->xthickness;
|
||||||
|
else
|
||||||
|
priv->handle_x = position;
|
||||||
|
|
||||||
|
priv->is_dragging = TRUE;
|
||||||
|
|
||||||
|
/* we need to redraw the handle */
|
||||||
|
gtk_widget_queue_draw (widget);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_button_release (GtkWidget *widget,
|
||||||
|
GdkEventButton *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
GtkAllocation allocation;
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (widget, &allocation);
|
||||||
|
|
||||||
|
/* dragged toggles have a "soft" grab, so we don't care whether we
|
||||||
|
* are in the switch or not when the button is released; we do care
|
||||||
|
* for direct toggles, instead
|
||||||
|
*/
|
||||||
|
if (!priv->is_dragging && !priv->in_switch)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* direct toggle */
|
||||||
|
if (priv->in_press)
|
||||||
|
{
|
||||||
|
priv->in_press = FALSE;
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* dragged toggle */
|
||||||
|
if (priv->is_dragging)
|
||||||
|
{
|
||||||
|
priv->is_dragging = FALSE;
|
||||||
|
|
||||||
|
/* if half the handle passed the middle of the switch, then we
|
||||||
|
* consider it to be on
|
||||||
|
*/
|
||||||
|
if ((priv->handle_x + (allocation.width / 4)) >= (allocation.width / 2))
|
||||||
|
{
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (widget), TRUE);
|
||||||
|
priv->handle_x = allocation.width / 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (widget), FALSE);
|
||||||
|
priv->handle_x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (widget);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_enter (GtkWidget *widget,
|
||||||
|
GdkEventCrossing *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
if (event->window == priv->event_window)
|
||||||
|
priv->in_switch = TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_leave (GtkWidget *widget,
|
||||||
|
GdkEventCrossing *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
if (event->window == priv->event_window)
|
||||||
|
priv->in_switch = FALSE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_key_release (GtkWidget *widget,
|
||||||
|
GdkEventKey *event)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
if (event->keyval == GDK_KEY_Return ||
|
||||||
|
event->keyval == GDK_KEY_KP_Enter ||
|
||||||
|
event->keyval == GDK_KEY_ISO_Enter ||
|
||||||
|
event->keyval == GDK_KEY_space ||
|
||||||
|
event->keyval == GDK_KEY_KP_Space)
|
||||||
|
{
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active);
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_get_preferred_width (GtkWidget *widget,
|
||||||
|
gint *minimum,
|
||||||
|
gint *natural)
|
||||||
|
{
|
||||||
|
GtkStyle *style = gtk_widget_get_style (widget);
|
||||||
|
gint width, slider_width, focus_width, focus_pad;
|
||||||
|
PangoLayout *layout;
|
||||||
|
PangoRectangle logical_rect;
|
||||||
|
|
||||||
|
width = style->xthickness * 2;
|
||||||
|
|
||||||
|
gtk_widget_style_get (widget,
|
||||||
|
"slider-width", &slider_width,
|
||||||
|
"focus-line-width", &focus_width,
|
||||||
|
"focus-padding", &focus_pad,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
width += 2 * (focus_width + focus_pad);
|
||||||
|
|
||||||
|
/* Translators: if the "on" state label requires more than three
|
||||||
|
* glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for
|
||||||
|
* the state
|
||||||
|
*/
|
||||||
|
layout = gtk_widget_create_pango_layout (widget, C_("switch", "ON"));
|
||||||
|
pango_layout_get_extents (layout, NULL, &logical_rect);
|
||||||
|
pango_extents_to_pixels (&logical_rect, NULL);
|
||||||
|
width += MAX (logical_rect.width, slider_width);
|
||||||
|
|
||||||
|
/* Translators: if the "off" state label requires more than three
|
||||||
|
* glyphs then use WHITE CIRCLE (U+25CB) as the text for the state
|
||||||
|
*/
|
||||||
|
pango_layout_set_text (layout, C_("switch", "OFF"), -1);
|
||||||
|
pango_layout_get_extents (layout, NULL, &logical_rect);
|
||||||
|
pango_extents_to_pixels (&logical_rect, NULL);
|
||||||
|
width += MAX (logical_rect.width, slider_width);
|
||||||
|
|
||||||
|
g_object_unref (layout);
|
||||||
|
|
||||||
|
if (minimum)
|
||||||
|
*minimum = width;
|
||||||
|
|
||||||
|
if (natural)
|
||||||
|
*natural = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_get_preferred_height (GtkWidget *widget,
|
||||||
|
gint *minimum,
|
||||||
|
gint *natural)
|
||||||
|
{
|
||||||
|
GtkStyle *style = gtk_widget_get_style (widget);
|
||||||
|
gint height, focus_width, focus_pad;
|
||||||
|
PangoLayout *layout;
|
||||||
|
PangoRectangle logical_rect;
|
||||||
|
gchar *str;
|
||||||
|
|
||||||
|
height = style->ythickness * 2;
|
||||||
|
|
||||||
|
gtk_widget_style_get (widget,
|
||||||
|
"focus-line-width", &focus_width,
|
||||||
|
"focus-padding", &focus_pad,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
height += 2 * (focus_width + focus_pad);
|
||||||
|
|
||||||
|
str = g_strdup_printf ("%s%s",
|
||||||
|
C_("switch", "ON"),
|
||||||
|
C_("switch", "OFF"));
|
||||||
|
|
||||||
|
layout = gtk_widget_create_pango_layout (widget, str);
|
||||||
|
pango_layout_get_extents (layout, NULL, &logical_rect);
|
||||||
|
pango_extents_to_pixels (&logical_rect, NULL);
|
||||||
|
height += MAX (DEFAULT_SLIDER_HEIGHT, logical_rect.height);
|
||||||
|
|
||||||
|
g_object_unref (layout);
|
||||||
|
g_free (str);
|
||||||
|
|
||||||
|
if (minimum)
|
||||||
|
*minimum = height;
|
||||||
|
|
||||||
|
if (natural)
|
||||||
|
*natural = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_size_allocate (GtkWidget *widget,
|
||||||
|
GtkAllocation *allocation)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
gtk_widget_set_allocation (widget, allocation);
|
||||||
|
|
||||||
|
if (gtk_widget_get_realized (widget))
|
||||||
|
gdk_window_move_resize (priv->event_window,
|
||||||
|
allocation->x,
|
||||||
|
allocation->y,
|
||||||
|
allocation->width,
|
||||||
|
allocation->height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_realize (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
GdkWindow *parent_window;
|
||||||
|
GdkWindowAttr attributes;
|
||||||
|
gint attributes_mask;
|
||||||
|
GtkAllocation allocation;
|
||||||
|
|
||||||
|
gtk_widget_set_realized (widget, TRUE);
|
||||||
|
parent_window = gtk_widget_get_parent_window (widget);
|
||||||
|
gtk_widget_set_window (widget, parent_window);
|
||||||
|
g_object_ref (parent_window);
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (widget, &allocation);
|
||||||
|
|
||||||
|
attributes.window_type = GDK_WINDOW_CHILD;
|
||||||
|
attributes.wclass = GDK_INPUT_ONLY;
|
||||||
|
attributes.x = allocation.x;
|
||||||
|
attributes.y = allocation.y;
|
||||||
|
attributes.width = allocation.width;
|
||||||
|
attributes.height = allocation.height;
|
||||||
|
attributes.event_mask = gtk_widget_get_events (widget);
|
||||||
|
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
|
||||||
|
GDK_BUTTON_RELEASE_MASK |
|
||||||
|
GDK_BUTTON1_MOTION_MASK |
|
||||||
|
GDK_POINTER_MOTION_HINT_MASK |
|
||||||
|
GDK_POINTER_MOTION_MASK |
|
||||||
|
GDK_ENTER_NOTIFY_MASK |
|
||||||
|
GDK_LEAVE_NOTIFY_MASK);
|
||||||
|
attributes_mask = GDK_WA_X | GDK_WA_Y;
|
||||||
|
|
||||||
|
priv->event_window = gdk_window_new (parent_window,
|
||||||
|
&attributes,
|
||||||
|
attributes_mask);
|
||||||
|
gdk_window_set_user_data (priv->event_window, widget);
|
||||||
|
|
||||||
|
gtk_widget_style_attach (widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_unrealize (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
if (priv->event_window != NULL)
|
||||||
|
{
|
||||||
|
gdk_window_set_user_data (priv->event_window, NULL);
|
||||||
|
gdk_window_destroy (priv->event_window);
|
||||||
|
priv->event_window = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_switch_parent_class)->unrealize (widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_map (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_switch_parent_class)->map (widget);
|
||||||
|
|
||||||
|
if (priv->event_window)
|
||||||
|
gdk_window_show (priv->event_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_unmap (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
|
||||||
|
if (priv->event_window)
|
||||||
|
gdk_window_hide (priv->event_window);
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_switch_parent_class)->unmap (widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
gtk_switch_paint_handle (GtkWidget *widget,
|
||||||
|
cairo_t *cr,
|
||||||
|
GdkRectangle *box)
|
||||||
|
{
|
||||||
|
GtkStyle *style = gtk_widget_get_style (widget);
|
||||||
|
|
||||||
|
gtk_paint_slider (style, cr,
|
||||||
|
gtk_widget_get_state (widget),
|
||||||
|
GTK_SHADOW_OUT,
|
||||||
|
GTK_WIDGET (widget), "switch-slider",
|
||||||
|
box->x,
|
||||||
|
box->y,
|
||||||
|
box->width,
|
||||||
|
box->height,
|
||||||
|
GTK_ORIENTATION_HORIZONTAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_switch_draw (GtkWidget *widget,
|
||||||
|
cairo_t *cr)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
|
||||||
|
GtkStyle *style;
|
||||||
|
GdkRectangle handle;
|
||||||
|
PangoLayout *layout;
|
||||||
|
PangoRectangle rect;
|
||||||
|
gint label_x, label_y;
|
||||||
|
GtkStateType state;
|
||||||
|
gint focus_width, focus_pad;
|
||||||
|
gint x, y, width, height;
|
||||||
|
|
||||||
|
gtk_widget_style_get (widget,
|
||||||
|
"focus-line-width", &focus_width,
|
||||||
|
"focus-padding", &focus_pad,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
style = gtk_widget_get_style (widget);
|
||||||
|
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
width = gtk_widget_get_allocated_width (widget);
|
||||||
|
height = gtk_widget_get_allocated_height (widget);
|
||||||
|
|
||||||
|
if (gtk_widget_has_focus (widget))
|
||||||
|
gtk_paint_focus (style, cr,
|
||||||
|
gtk_widget_get_state (widget),
|
||||||
|
widget, "button",
|
||||||
|
x, y, width, height);
|
||||||
|
|
||||||
|
x += focus_width + focus_pad;
|
||||||
|
y += focus_width + focus_pad;
|
||||||
|
width -= 2 * (focus_width + focus_pad);
|
||||||
|
height -= 2 * (focus_width + focus_pad);
|
||||||
|
|
||||||
|
state = priv->is_active ? GTK_STATE_SELECTED : gtk_widget_get_state (widget);
|
||||||
|
|
||||||
|
/* background - XXX should this be a flat box instead? we're missing
|
||||||
|
* the border given by the shadow with that, which would require
|
||||||
|
* fixing all theme engines to add a subtle border for this widget
|
||||||
|
*/
|
||||||
|
gtk_paint_box (style, cr,
|
||||||
|
state,
|
||||||
|
GTK_SHADOW_IN,
|
||||||
|
widget, "switch-background",
|
||||||
|
x, y, width, height);
|
||||||
|
|
||||||
|
if (!gtk_widget_is_sensitive (widget))
|
||||||
|
state = GTK_STATE_INSENSITIVE;
|
||||||
|
|
||||||
|
/* XXX the +1/-1 it's pixel wriggling after checking with the default
|
||||||
|
* theme and xmag
|
||||||
|
*/
|
||||||
|
handle.y = y + style->ythickness + 1;
|
||||||
|
handle.width = (width - style->xthickness * 2) / 2;
|
||||||
|
handle.height = (height - style->ythickness * 2) - 1;
|
||||||
|
|
||||||
|
/* Translators: if the "on" state label requires more than three
|
||||||
|
* glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for
|
||||||
|
* the state
|
||||||
|
*/
|
||||||
|
layout = gtk_widget_create_pango_layout (widget, C_("switch", "ON"));
|
||||||
|
pango_layout_get_extents (layout, NULL, &rect);
|
||||||
|
pango_extents_to_pixels (&rect, NULL);
|
||||||
|
|
||||||
|
label_x = x + style->xthickness
|
||||||
|
+ ((width / 2) - rect.width - (style->xthickness * 2)) / 2;
|
||||||
|
label_y = y + style->ythickness
|
||||||
|
+ (height - rect.height - (style->ythickness * 2)) / 2;
|
||||||
|
|
||||||
|
gtk_paint_layout (style, cr,
|
||||||
|
state,
|
||||||
|
FALSE,
|
||||||
|
widget, "switch-on-label",
|
||||||
|
label_x, label_y,
|
||||||
|
layout);
|
||||||
|
|
||||||
|
g_object_unref (layout);
|
||||||
|
|
||||||
|
/* Translators: if the "off" state label requires more than three
|
||||||
|
* glyphs then use WHITE CIRCLE (U+25CB) as the text for the state
|
||||||
|
*/
|
||||||
|
layout = gtk_widget_create_pango_layout (widget, C_("switch", "OFF"));
|
||||||
|
pango_layout_get_extents (layout, NULL, &rect);
|
||||||
|
pango_extents_to_pixels (&rect, NULL);
|
||||||
|
|
||||||
|
label_x = x + style->xthickness
|
||||||
|
+ (width / 2)
|
||||||
|
+ ((width / 2) - rect.width - (style->xthickness * 2)) / 2;
|
||||||
|
label_y = y + style->ythickness
|
||||||
|
+ (height - rect.height - (style->ythickness * 2)) / 2;
|
||||||
|
|
||||||
|
gtk_paint_layout (style, cr,
|
||||||
|
state,
|
||||||
|
FALSE,
|
||||||
|
widget, "switch-off-label",
|
||||||
|
label_x, label_y,
|
||||||
|
layout);
|
||||||
|
|
||||||
|
g_object_unref (layout);
|
||||||
|
|
||||||
|
if (priv->is_dragging)
|
||||||
|
handle.x = x + priv->handle_x;
|
||||||
|
else if (priv->is_active)
|
||||||
|
handle.x = x + width - handle.width - style->xthickness;
|
||||||
|
else
|
||||||
|
handle.x = x + style->xthickness;
|
||||||
|
|
||||||
|
gtk_switch_paint_handle (widget, cr, &handle);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static AtkObject *
|
||||||
|
gtk_switch_get_accessible (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
static gboolean first_time = TRUE;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (first_time))
|
||||||
|
{
|
||||||
|
AtkObjectFactory *factory;
|
||||||
|
AtkRegistry *registry;
|
||||||
|
GType derived_type;
|
||||||
|
GType derived_atk_type;
|
||||||
|
|
||||||
|
/* Figure out whether accessibility is enabled by looking at the
|
||||||
|
* type of the accessible object which would be created for the
|
||||||
|
* parent type of GtkSwitch
|
||||||
|
*/
|
||||||
|
derived_type = g_type_parent (GTK_TYPE_SWITCH);
|
||||||
|
|
||||||
|
registry = atk_get_default_registry ();
|
||||||
|
factory = atk_registry_get_factory (registry, derived_type);
|
||||||
|
derived_atk_type = atk_object_factory_get_accessible_type (factory);
|
||||||
|
if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE))
|
||||||
|
atk_registry_set_factory_type (registry,
|
||||||
|
GTK_TYPE_SWITCH,
|
||||||
|
gtk_switch_accessible_factory_get_type ());
|
||||||
|
|
||||||
|
first_time = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GTK_WIDGET_CLASS (gtk_switch_parent_class)->get_accessible (widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_set_related_action (GtkSwitch *sw,
|
||||||
|
GtkAction *action)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = sw->priv;
|
||||||
|
|
||||||
|
if (priv->action == action)
|
||||||
|
return;
|
||||||
|
|
||||||
|
gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (sw), action);
|
||||||
|
|
||||||
|
priv->action = action;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_set_use_action_appearance (GtkSwitch *sw,
|
||||||
|
gboolean use_appearance)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = sw->priv;
|
||||||
|
|
||||||
|
if (priv->use_action_appearance != use_appearance)
|
||||||
|
{
|
||||||
|
priv->use_action_appearance = use_appearance;
|
||||||
|
|
||||||
|
gtk_activatable_sync_action_properties (GTK_ACTIVATABLE (sw), priv->action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_set_property (GObject *gobject,
|
||||||
|
guint prop_id,
|
||||||
|
const GValue *value,
|
||||||
|
GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
GtkSwitch *sw = GTK_SWITCH (gobject);
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_ACTIVE:
|
||||||
|
gtk_switch_set_active (sw, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_RELATED_ACTION:
|
||||||
|
gtk_switch_set_related_action (sw, g_value_get_object (value));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_USE_ACTION_APPEARANCE:
|
||||||
|
gtk_switch_set_use_action_appearance (sw, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_get_property (GObject *gobject,
|
||||||
|
guint prop_id,
|
||||||
|
GValue *value,
|
||||||
|
GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (gobject)->priv;
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_ACTIVE:
|
||||||
|
g_value_set_boolean (value, priv->is_active);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_RELATED_ACTION:
|
||||||
|
g_value_set_object (value, priv->action);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_USE_ACTION_APPEARANCE:
|
||||||
|
g_value_set_boolean (value, priv->use_action_appearance);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_dispose (GObject *object)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv = GTK_SWITCH (object)->priv;
|
||||||
|
|
||||||
|
if (priv->action)
|
||||||
|
{
|
||||||
|
gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (object), NULL);
|
||||||
|
priv->action = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (gtk_switch_parent_class)->dispose (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_class_init (GtkSwitchClass *klass)
|
||||||
|
{
|
||||||
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||||
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
|
gpointer activatable_iface;
|
||||||
|
|
||||||
|
g_type_class_add_private (klass, sizeof (GtkSwitchPrivate));
|
||||||
|
|
||||||
|
activatable_iface = g_type_default_interface_peek (GTK_TYPE_ACTIVATABLE);
|
||||||
|
switch_props[PROP_RELATED_ACTION] =
|
||||||
|
g_param_spec_override ("related-action",
|
||||||
|
g_object_interface_find_property (activatable_iface,
|
||||||
|
"related-action"));
|
||||||
|
|
||||||
|
switch_props[PROP_USE_ACTION_APPEARANCE] =
|
||||||
|
g_param_spec_override ("use-action-appearance",
|
||||||
|
g_object_interface_find_property (activatable_iface,
|
||||||
|
"use-action-appearance"));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkSwitch:active:
|
||||||
|
*
|
||||||
|
* Whether the #GtkSwitch widget is in its on or off state.
|
||||||
|
*/
|
||||||
|
switch_props[PROP_ACTIVE] =
|
||||||
|
g_param_spec_boolean ("active",
|
||||||
|
P_("Active"),
|
||||||
|
P_("Whether the switch is on or off"),
|
||||||
|
FALSE,
|
||||||
|
GTK_PARAM_READWRITE);
|
||||||
|
|
||||||
|
gobject_class->set_property = gtk_switch_set_property;
|
||||||
|
gobject_class->get_property = gtk_switch_get_property;
|
||||||
|
gobject_class->dispose = gtk_switch_dispose;
|
||||||
|
|
||||||
|
g_object_class_install_properties (gobject_class, LAST_PROP, switch_props);
|
||||||
|
|
||||||
|
widget_class->get_preferred_width = gtk_switch_get_preferred_width;
|
||||||
|
widget_class->get_preferred_height = gtk_switch_get_preferred_height;
|
||||||
|
widget_class->size_allocate = gtk_switch_size_allocate;
|
||||||
|
widget_class->realize = gtk_switch_realize;
|
||||||
|
widget_class->unrealize = gtk_switch_unrealize;
|
||||||
|
widget_class->map = gtk_switch_map;
|
||||||
|
widget_class->unmap = gtk_switch_unmap;
|
||||||
|
widget_class->draw = gtk_switch_draw;
|
||||||
|
widget_class->button_press_event = gtk_switch_button_press;
|
||||||
|
widget_class->button_release_event = gtk_switch_button_release;
|
||||||
|
widget_class->motion_notify_event = gtk_switch_motion;
|
||||||
|
widget_class->enter_notify_event = gtk_switch_enter;
|
||||||
|
widget_class->leave_notify_event = gtk_switch_leave;
|
||||||
|
widget_class->key_release_event = gtk_switch_key_release;
|
||||||
|
widget_class->get_accessible = gtk_switch_get_accessible;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkSwitch:slider-width:
|
||||||
|
*
|
||||||
|
* The minimum width of the #GtkSwitch handle, in pixels.
|
||||||
|
*/
|
||||||
|
gtk_widget_class_install_style_property (widget_class,
|
||||||
|
g_param_spec_int ("slider-width",
|
||||||
|
P_("Slider Width"),
|
||||||
|
P_("The minimum width of the handle"),
|
||||||
|
DEFAULT_SLIDER_WIDTH, G_MAXINT,
|
||||||
|
DEFAULT_SLIDER_WIDTH,
|
||||||
|
GTK_PARAM_READABLE));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_init (GtkSwitch *self)
|
||||||
|
{
|
||||||
|
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GTK_TYPE_SWITCH, GtkSwitchPrivate);
|
||||||
|
self->priv->use_action_appearance = TRUE;
|
||||||
|
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
|
||||||
|
gtk_widget_set_can_focus (GTK_WIDGET (self), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_switch_new:
|
||||||
|
*
|
||||||
|
* Creates a new #GtkSwitch widget.
|
||||||
|
*
|
||||||
|
* Return value: the newly created #GtkSwitch instance
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
GtkWidget *
|
||||||
|
gtk_switch_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (GTK_TYPE_SWITCH, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_switch_set_active:
|
||||||
|
* @sw: a #GtkSwitch
|
||||||
|
* @is_active: %TRUE if @sw should be active, and %FALSE otherwise
|
||||||
|
*
|
||||||
|
* Changes the state of @sw to the desired one.
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_switch_set_active (GtkSwitch *sw,
|
||||||
|
gboolean is_active)
|
||||||
|
{
|
||||||
|
GtkSwitchPrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_SWITCH (sw));
|
||||||
|
|
||||||
|
is_active = !!is_active;
|
||||||
|
|
||||||
|
priv = sw->priv;
|
||||||
|
|
||||||
|
if (priv->is_active != is_active)
|
||||||
|
{
|
||||||
|
AtkObject *accessible;
|
||||||
|
|
||||||
|
priv->is_active = is_active;
|
||||||
|
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (sw), switch_props[PROP_ACTIVE]);
|
||||||
|
|
||||||
|
if (priv->action)
|
||||||
|
gtk_action_activate (priv->action);
|
||||||
|
|
||||||
|
accessible = gtk_widget_get_accessible (GTK_WIDGET (sw));
|
||||||
|
atk_object_notify_state_change (accessible, ATK_STATE_CHECKED, priv->is_active);
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (sw));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_switch_get_active:
|
||||||
|
* @sw: a #GtkSwitch
|
||||||
|
*
|
||||||
|
* Gets whether the #GtkSwitch is in its "on" or "off" state.
|
||||||
|
*
|
||||||
|
* Return value: %TRUE if the #GtkSwitch is active, and %FALSE otherwise
|
||||||
|
*
|
||||||
|
* Since: 3.0
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gtk_switch_get_active (GtkSwitch *sw)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GTK_IS_SWITCH (sw), FALSE);
|
||||||
|
|
||||||
|
return sw->priv->is_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_update (GtkActivatable *activatable,
|
||||||
|
GtkAction *action,
|
||||||
|
const gchar *property_name)
|
||||||
|
{
|
||||||
|
if (strcmp (property_name, "visible") == 0)
|
||||||
|
{
|
||||||
|
if (gtk_action_is_visible (action))
|
||||||
|
gtk_widget_show (GTK_WIDGET (activatable));
|
||||||
|
else
|
||||||
|
gtk_widget_hide (GTK_WIDGET (activatable));
|
||||||
|
}
|
||||||
|
else if (strcmp (property_name, "sensitive") == 0)
|
||||||
|
{
|
||||||
|
gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action));
|
||||||
|
}
|
||||||
|
else if (strcmp (property_name, "active") == 0)
|
||||||
|
{
|
||||||
|
gtk_action_block_activate (action);
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (activatable), gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
|
||||||
|
gtk_action_unblock_activate (action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_sync_action_properties (GtkActivatable *activatable,
|
||||||
|
GtkAction *action)
|
||||||
|
{
|
||||||
|
if (!action)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (gtk_action_is_visible (action))
|
||||||
|
gtk_widget_show (GTK_WIDGET (activatable));
|
||||||
|
else
|
||||||
|
gtk_widget_hide (GTK_WIDGET (activatable));
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action));
|
||||||
|
|
||||||
|
gtk_action_block_activate (action);
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (activatable), gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
|
||||||
|
gtk_action_unblock_activate (action);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_activatable_interface_init (GtkActivatableIface *iface)
|
||||||
|
{
|
||||||
|
iface->update = gtk_switch_update;
|
||||||
|
iface->sync_action_properties = gtk_switch_sync_action_properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* accessibility: object */
|
||||||
|
|
||||||
|
/* dummy typedefs */
|
||||||
|
typedef struct _GtkSwitchAccessible GtkSwitchAccessible;
|
||||||
|
typedef struct _GtkSwitchAccessibleClass GtkSwitchAccessibleClass;
|
||||||
|
|
||||||
|
ATK_DEFINE_TYPE (GtkSwitchAccessible, _gtk_switch_accessible, GTK_TYPE_WIDGET);
|
||||||
|
|
||||||
|
static AtkStateSet *
|
||||||
|
gtk_switch_accessible_ref_state_set (AtkObject *accessible)
|
||||||
|
{
|
||||||
|
AtkStateSet *state_set;
|
||||||
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
state_set = ATK_OBJECT_CLASS (_gtk_switch_accessible_parent_class)->ref_state_set (accessible);
|
||||||
|
|
||||||
|
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
|
||||||
|
if (widget == NULL)
|
||||||
|
return state_set;
|
||||||
|
|
||||||
|
if (gtk_switch_get_active (GTK_SWITCH (widget)))
|
||||||
|
atk_state_set_add_state (state_set, ATK_STATE_CHECKED);
|
||||||
|
|
||||||
|
return state_set;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_switch_accessible_initialize (AtkObject *accessible,
|
||||||
|
gpointer widget)
|
||||||
|
{
|
||||||
|
ATK_OBJECT_CLASS (_gtk_switch_accessible_parent_class)->initialize (accessible, widget);
|
||||||
|
|
||||||
|
atk_object_set_role (accessible, ATK_ROLE_TOGGLE_BUTTON);
|
||||||
|
atk_object_set_name (accessible, C_("light switch widget", "Switch"));
|
||||||
|
atk_object_set_description (accessible, _("Switches between on and off states"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_switch_accessible_class_init (GtkSwitchAccessibleClass *klass)
|
||||||
|
{
|
||||||
|
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
|
atk_class->initialize = _gtk_switch_accessible_initialize;
|
||||||
|
atk_class->ref_state_set = gtk_switch_accessible_ref_state_set;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_switch_accessible_init (GtkSwitchAccessible *self)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* accessibility: factory */
|
||||||
|
|
||||||
|
typedef AtkObjectFactoryClass GtkSwitchAccessibleFactoryClass;
|
||||||
|
typedef AtkObjectFactory GtkSwitchAccessibleFactory;
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (GtkSwitchAccessibleFactory,
|
||||||
|
gtk_switch_accessible_factory,
|
||||||
|
ATK_TYPE_OBJECT_FACTORY);
|
||||||
|
|
||||||
|
static GType
|
||||||
|
gtk_switch_accessible_factory_get_accessible_type (void)
|
||||||
|
{
|
||||||
|
return _gtk_switch_accessible_get_type ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static AtkObject *
|
||||||
|
gtk_switch_accessible_factory_create_accessible (GObject *obj)
|
||||||
|
{
|
||||||
|
AtkObject *accessible;
|
||||||
|
|
||||||
|
accessible = g_object_new (_gtk_switch_accessible_get_type (), NULL);
|
||||||
|
atk_object_initialize (accessible, obj);
|
||||||
|
|
||||||
|
return accessible;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_accessible_factory_class_init (AtkObjectFactoryClass *klass)
|
||||||
|
{
|
||||||
|
klass->create_accessible = gtk_switch_accessible_factory_create_accessible;
|
||||||
|
klass->get_accessible_type = gtk_switch_accessible_factory_get_accessible_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_switch_accessible_factory_init (AtkObjectFactory *factory)
|
||||||
|
{
|
||||||
|
}
|
95
gtk/gtkswitch.h
Normal file
95
gtk/gtkswitch.h
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/* GTK - The GIMP Toolkit
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Intel Corporation
|
||||||
|
* Copyright (C) 2010 RedHat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Emmanuele Bassi <ebassi@linux.intel.com>
|
||||||
|
* Matthias Clasen <mclasen@redhat.com>
|
||||||
|
*
|
||||||
|
* Based on similar code from:
|
||||||
|
* Thomas Wood <thos@linux.intel.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
||||||
|
#error "Only <gtk/gtk.h> can be included directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GTK_SWITCH_H__
|
||||||
|
#define __GTK_SWITCH_H__
|
||||||
|
|
||||||
|
#include <gtk/gtkwidget.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define GTK_TYPE_SWITCH (gtk_switch_get_type ())
|
||||||
|
#define GTK_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SWITCH, GtkSwitch))
|
||||||
|
#define GTK_IS_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SWITCH))
|
||||||
|
#define GTK_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SWITCH, GtkSwitchClass))
|
||||||
|
#define GTK_IS_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SWITCH))
|
||||||
|
#define GTK_SWITCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SWITCH, GtkSwitchClass))
|
||||||
|
|
||||||
|
typedef struct _GtkSwitch GtkSwitch;
|
||||||
|
typedef struct _GtkSwitchPrivate GtkSwitchPrivate;
|
||||||
|
typedef struct _GtkSwitchClass GtkSwitchClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkSwitch:
|
||||||
|
*
|
||||||
|
* The <structname>GtkSwitch</structname> structure contains private
|
||||||
|
* data and it should only be accessed using the provided API.
|
||||||
|
*/
|
||||||
|
struct _GtkSwitch
|
||||||
|
{
|
||||||
|
/*< private >*/
|
||||||
|
GtkWidget parent_instance;
|
||||||
|
|
||||||
|
GtkSwitchPrivate *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkSwitchClass:
|
||||||
|
*
|
||||||
|
* The <structname>GtkSwitchClass</structname> structure contains only
|
||||||
|
* private data.
|
||||||
|
*/
|
||||||
|
struct _GtkSwitchClass
|
||||||
|
{
|
||||||
|
/*< private >*/
|
||||||
|
GtkWidgetClass parent_class;
|
||||||
|
|
||||||
|
void (* _switch_padding_1) (void);
|
||||||
|
void (* _switch_padding_2) (void);
|
||||||
|
void (* _switch_padding_3) (void);
|
||||||
|
void (* _switch_padding_4) (void);
|
||||||
|
void (* _switch_padding_5) (void);
|
||||||
|
void (* _switch_padding_6) (void);
|
||||||
|
void (* _switch_padding_7) (void);
|
||||||
|
};
|
||||||
|
|
||||||
|
GType gtk_switch_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
GtkWidget * gtk_switch_new (void);
|
||||||
|
|
||||||
|
void gtk_switch_set_active (GtkSwitch *sw,
|
||||||
|
gboolean is_active);
|
||||||
|
gboolean gtk_switch_get_active (GtkSwitch *sw);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __GTK_SWITCH_H__ */
|
@ -1350,7 +1350,7 @@ _gtk_tooltip_focus_in (GtkWidget *widget)
|
|||||||
|
|
||||||
device = gtk_get_current_event_device ();
|
device = gtk_get_current_event_device ();
|
||||||
|
|
||||||
if (device && device->source == GDK_SOURCE_KEYBOARD)
|
if (device && gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
|
||||||
device = gdk_device_get_associated_device (device);
|
device = gdk_device_get_associated_device (device);
|
||||||
|
|
||||||
/* This function should be called by either a focus in event,
|
/* This function should be called by either a focus in event,
|
||||||
|
@ -10407,7 +10407,7 @@ send_focus_change (GtkWidget *widget,
|
|||||||
GdkEvent *fevent;
|
GdkEvent *fevent;
|
||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
|
|
||||||
if (dev->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (dev) != GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
window = gtk_widget_get_window (widget);
|
window = gtk_widget_get_window (widget);
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "gtkorientable.h"
|
|
||||||
#include "gtkvruler.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SECTION:gtkvruler
|
|
||||||
* @Short_description: A vertical ruler
|
|
||||||
* @Title: GtkVRuler
|
|
||||||
*
|
|
||||||
* <note>
|
|
||||||
* This widget is considered too specialized/little-used for
|
|
||||||
* GTK+, and will in the future be moved to some other package. If
|
|
||||||
* your application needs this widget, feel free to use it, as the
|
|
||||||
* widget does work and is useful in some applications; it's just not
|
|
||||||
* of general interest. However, we are not accepting new features for
|
|
||||||
* the widget, and it will eventually move out of the GTK+
|
|
||||||
* distribution.
|
|
||||||
* </note>
|
|
||||||
*
|
|
||||||
* The VRuler widget is a widget arranged vertically creating a ruler that is
|
|
||||||
* utilized around other widgets such as a text widget. The ruler is used to show
|
|
||||||
* the location of the mouse on the window and to show the size of the window in
|
|
||||||
* specified units. The available units of measurement are GTK_PIXELS, GTK_INCHES
|
|
||||||
* and GTK_CENTIMETERS. GTK_PIXELS is the default unit of measurement.
|
|
||||||
*/
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (GtkVRuler, gtk_vruler, GTK_TYPE_RULER)
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_vruler_class_init (GtkVRulerClass *klass)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gtk_vruler_init (GtkVRuler *vruler)
|
|
||||||
{
|
|
||||||
gtk_orientable_set_orientation (GTK_ORIENTABLE (vruler),
|
|
||||||
GTK_ORIENTATION_VERTICAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_vruler_new:
|
|
||||||
*
|
|
||||||
* Creates a new vertical ruler
|
|
||||||
*
|
|
||||||
* Returns: a new #GtkVRuler.
|
|
||||||
*/
|
|
||||||
GtkWidget *
|
|
||||||
gtk_vruler_new (void)
|
|
||||||
{
|
|
||||||
return g_object_new (GTK_TYPE_VRULER, NULL);
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
/* GTK - The GIMP Toolkit
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
|
||||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
||||||
* files for a list of changes. These files are distributed with
|
|
||||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NOTE this widget is considered too specialized/little-used for
|
|
||||||
* GTK+, and will in the future be moved to some other package. If
|
|
||||||
* your application needs this widget, feel free to use it, as the
|
|
||||||
* widget does work and is useful in some applications; it's just not
|
|
||||||
* of general interest. However, we are not accepting new features for
|
|
||||||
* the widget, and it will eventually move out of the GTK+
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
|
||||||
#error "Only <gtk/gtk.h> can be included directly."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __GTK_VRULER_H__
|
|
||||||
#define __GTK_VRULER_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtkruler.h>
|
|
||||||
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
|
|
||||||
#define GTK_TYPE_VRULER (gtk_vruler_get_type ())
|
|
||||||
#define GTK_VRULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_VRULER, GtkVRuler))
|
|
||||||
#define GTK_VRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_VRULER, GtkVRulerClass))
|
|
||||||
#define GTK_IS_VRULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_VRULER))
|
|
||||||
#define GTK_IS_VRULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_VRULER))
|
|
||||||
#define GTK_VRULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_VRULER, GtkVRulerClass))
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GtkVRuler GtkVRuler;
|
|
||||||
typedef struct _GtkVRulerClass GtkVRulerClass;
|
|
||||||
|
|
||||||
struct _GtkVRuler
|
|
||||||
{
|
|
||||||
GtkRuler ruler;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkVRulerClass
|
|
||||||
{
|
|
||||||
GtkRulerClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GType gtk_vruler_get_type (void) G_GNUC_CONST;
|
|
||||||
GtkWidget* gtk_vruler_new (void);
|
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GTK_VRULER_H__ */
|
|
@ -5923,7 +5923,7 @@ do_focus_change (GtkWidget *widget,
|
|||||||
GdkDevice *dev = d->data;
|
GdkDevice *dev = d->data;
|
||||||
GdkEvent *fevent;
|
GdkEvent *fevent;
|
||||||
|
|
||||||
if (dev->source != GDK_SOURCE_KEYBOARD)
|
if (gdk_device_get_source (dev) != GDK_SOURCE_KEYBOARD)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Skip non-master keyboards that haven't
|
/* Skip non-master keyboards that haven't
|
||||||
|
@ -248,7 +248,6 @@ gtk_OBJECTS = \
|
|||||||
gtkhbbox.obj \
|
gtkhbbox.obj \
|
||||||
gtkhbox.obj \
|
gtkhbox.obj \
|
||||||
gtkhpaned.obj \
|
gtkhpaned.obj \
|
||||||
gtkhruler.obj \
|
|
||||||
gtkhscale.obj \
|
gtkhscale.obj \
|
||||||
gtkhscrollbar.obj \
|
gtkhscrollbar.obj \
|
||||||
gtkhseparator.obj \
|
gtkhseparator.obj \
|
||||||
@ -305,7 +304,6 @@ gtk_OBJECTS = \
|
|||||||
gtkrange.obj \
|
gtkrange.obj \
|
||||||
gtkrbtree.obj \
|
gtkrbtree.obj \
|
||||||
gtkrc.obj \
|
gtkrc.obj \
|
||||||
gtkruler.obj \
|
|
||||||
gtkscale.obj \
|
gtkscale.obj \
|
||||||
gtkscalebutton.obj \
|
gtkscalebutton.obj \
|
||||||
gtkscrollbar.obj \
|
gtkscrollbar.obj \
|
||||||
@ -347,7 +345,6 @@ gtk_OBJECTS = \
|
|||||||
gtkviewport.obj \
|
gtkviewport.obj \
|
||||||
gtkvolumebutton.obj \
|
gtkvolumebutton.obj \
|
||||||
gtkvpaned.obj \
|
gtkvpaned.obj \
|
||||||
gtkvruler.obj \
|
|
||||||
gtkvscale.obj \
|
gtkvscale.obj \
|
||||||
gtkvscrollbar.obj \
|
gtkvscrollbar.obj \
|
||||||
gtkvseparator.obj \
|
gtkvseparator.obj \
|
||||||
@ -433,7 +430,6 @@ gtk_public_h_sources = \
|
|||||||
gtkhbbox.h \
|
gtkhbbox.h \
|
||||||
gtkhbox.h \
|
gtkhbox.h \
|
||||||
gtkhpaned.h \
|
gtkhpaned.h \
|
||||||
gtkhruler.h \
|
|
||||||
gtkhscale.h \
|
gtkhscale.h \
|
||||||
gtkhscrollbar.h \
|
gtkhscrollbar.h \
|
||||||
gtkhseparator.h \
|
gtkhseparator.h \
|
||||||
@ -496,7 +492,6 @@ gtk_public_h_sources = \
|
|||||||
gtkrecentchooserwidget.h \
|
gtkrecentchooserwidget.h \
|
||||||
gtkrecentfilter.h \
|
gtkrecentfilter.h \
|
||||||
gtkrecentmanager.h \
|
gtkrecentmanager.h \
|
||||||
gtkruler.h \
|
|
||||||
gtkscale.h \
|
gtkscale.h \
|
||||||
gtkscalebutton.h \
|
gtkscalebutton.h \
|
||||||
gtkscrollbar.h \
|
gtkscrollbar.h \
|
||||||
@ -555,7 +550,6 @@ gtk_public_h_sources = \
|
|||||||
gtkviewport.h \
|
gtkviewport.h \
|
||||||
gtkvolumebutton.h \
|
gtkvolumebutton.h \
|
||||||
gtkvpaned.h \
|
gtkvpaned.h \
|
||||||
gtkvruler.h \
|
|
||||||
gtkvscale.h \
|
gtkvscale.h \
|
||||||
gtkvscrollbar.h \
|
gtkvscrollbar.h \
|
||||||
gtkvseparator.h \
|
gtkvseparator.h \
|
||||||
@ -573,7 +567,7 @@ gtk_extra_sources = \
|
|||||||
|
|
||||||
gtk.def: gtk.symbols makefile.msc
|
gtk.def: gtk.symbols makefile.msc
|
||||||
echo EXPORTS > gtk.def
|
echo EXPORTS > gtk.def
|
||||||
cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES \
|
cl /EP -DG_OS_WIN32 \
|
||||||
-DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \
|
-DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \
|
||||||
-DG_GNUC_PRINTF=;G_GNUC_PRINTF gtk.symbols >> gtk.def
|
-DG_GNUC_PRINTF=;G_GNUC_PRINTF gtk.symbols >> gtk.def
|
||||||
|
|
||||||
|
@ -722,7 +722,6 @@ test_types (void)
|
|||||||
" <object class=\"GtkHButtonBox\" id=\"hbuttonbox\"/>"
|
" <object class=\"GtkHButtonBox\" id=\"hbuttonbox\"/>"
|
||||||
" <object class=\"GtkHBox\" id=\"hbox\"/>"
|
" <object class=\"GtkHBox\" id=\"hbox\"/>"
|
||||||
" <object class=\"GtkHPaned\" id=\"hpaned\"/>"
|
" <object class=\"GtkHPaned\" id=\"hpaned\"/>"
|
||||||
" <object class=\"GtkHRuler\" id=\"hruler\"/>"
|
|
||||||
" <object class=\"GtkHScale\" id=\"hscale\"/>"
|
" <object class=\"GtkHScale\" id=\"hscale\"/>"
|
||||||
" <object class=\"GtkHScrollbar\" id=\"hscrollbar\"/>"
|
" <object class=\"GtkHScrollbar\" id=\"hscrollbar\"/>"
|
||||||
" <object class=\"GtkHSeparator\" id=\"hseparator\"/>"
|
" <object class=\"GtkHSeparator\" id=\"hseparator\"/>"
|
||||||
@ -749,7 +748,6 @@ test_types (void)
|
|||||||
" <object class=\"GtkVScrollbar\" id=\"vscrollbar\"/>"
|
" <object class=\"GtkVScrollbar\" id=\"vscrollbar\"/>"
|
||||||
" <object class=\"GtkVSeparator\" id=\"vseparator\"/>"
|
" <object class=\"GtkVSeparator\" id=\"vseparator\"/>"
|
||||||
" <object class=\"GtkViewport\" id=\"viewport\"/>"
|
" <object class=\"GtkViewport\" id=\"viewport\"/>"
|
||||||
" <object class=\"GtkVRuler\" id=\"vruler\"/>"
|
|
||||||
" <object class=\"GtkVPaned\" id=\"vpaned\"/>"
|
" <object class=\"GtkVPaned\" id=\"vpaned\"/>"
|
||||||
" <object class=\"GtkVScale\" id=\"vscale\"/>"
|
" <object class=\"GtkVScale\" id=\"vscale\"/>"
|
||||||
" <object class=\"GtkWindow\" id=\"window\"/>"
|
" <object class=\"GtkWindow\" id=\"window\"/>"
|
||||||
|
@ -1424,6 +1424,32 @@ validate_file (const gchar *file)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* safe_fclose:
|
||||||
|
* @f: A FILE* stream, must have underlying fd
|
||||||
|
*
|
||||||
|
* Unix defaults for data preservation after system crash
|
||||||
|
* are unspecified, and many systems will eat your data
|
||||||
|
* in this situation unless you explicitly fsync().
|
||||||
|
*
|
||||||
|
* Returns: %TRUE on success, %FALSE on failure, and will set errno()
|
||||||
|
*/
|
||||||
|
static gboolean
|
||||||
|
safe_fclose (FILE *f)
|
||||||
|
{
|
||||||
|
int fd = fileno (f);
|
||||||
|
g_assert (fd >= 0);
|
||||||
|
if (fflush (f) == EOF)
|
||||||
|
return FALSE;
|
||||||
|
#ifndef G_OS_WIN32
|
||||||
|
if (fsync (fd) < 0)
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
if (fclose (f) == EOF)
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_cache (const gchar *path)
|
build_cache (const gchar *path)
|
||||||
{
|
{
|
||||||
@ -1432,7 +1458,6 @@ build_cache (const gchar *path)
|
|||||||
gchar *bak_cache_path = NULL;
|
gchar *bak_cache_path = NULL;
|
||||||
#endif
|
#endif
|
||||||
GHashTable *files;
|
GHashTable *files;
|
||||||
gboolean retval;
|
|
||||||
FILE *cache;
|
FILE *cache;
|
||||||
struct stat path_stat, cache_stat;
|
struct stat path_stat, cache_stat;
|
||||||
struct utimbuf utime_buf;
|
struct utimbuf utime_buf;
|
||||||
@ -1490,18 +1515,23 @@ opentmp:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Handle failure */
|
/* FIXME: Handle failure */
|
||||||
retval = write_file (cache, files, directories);
|
if (!write_file (cache, files, directories))
|
||||||
fclose (cache);
|
|
||||||
|
|
||||||
g_list_foreach (directories, (GFunc)g_free, NULL);
|
|
||||||
g_list_free (directories);
|
|
||||||
|
|
||||||
if (!retval)
|
|
||||||
{
|
{
|
||||||
g_unlink (tmp_cache_path);
|
g_unlink (tmp_cache_path);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!safe_fclose (cache))
|
||||||
|
{
|
||||||
|
g_printerr (_("Failed to write cache file: %s\n"), g_strerror (errno));
|
||||||
|
g_unlink (tmp_cache_path);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
cache = NULL;
|
||||||
|
|
||||||
|
g_list_foreach (directories, (GFunc)g_free, NULL);
|
||||||
|
g_list_free (directories);
|
||||||
|
|
||||||
if (!validate_file (tmp_cache_path))
|
if (!validate_file (tmp_cache_path))
|
||||||
{
|
{
|
||||||
g_printerr (_("The generated cache was invalid.\n"));
|
g_printerr (_("The generated cache was invalid.\n"));
|
||||||
|
@ -86,7 +86,6 @@ gtk/gtkhandlebox.c
|
|||||||
gtk/gtkhbbox.c
|
gtk/gtkhbbox.c
|
||||||
gtk/gtkhbox.c
|
gtk/gtkhbox.c
|
||||||
gtk/gtkhpaned.c
|
gtk/gtkhpaned.c
|
||||||
gtk/gtkhruler.c
|
|
||||||
gtk/gtkhscale.c
|
gtk/gtkhscale.c
|
||||||
gtk/gtkhscrollbar.c
|
gtk/gtkhscrollbar.c
|
||||||
gtk/gtkhseparator.c
|
gtk/gtkhseparator.c
|
||||||
@ -147,7 +146,6 @@ gtk/gtkrecentchooser.c
|
|||||||
gtk/gtkrecentchooserdefault.c
|
gtk/gtkrecentchooserdefault.c
|
||||||
gtk/gtkrecentchoosermenu.c
|
gtk/gtkrecentchoosermenu.c
|
||||||
gtk/gtkrecentmanager.c
|
gtk/gtkrecentmanager.c
|
||||||
gtk/gtkruler.c
|
|
||||||
gtk/gtkscalebutton.c
|
gtk/gtkscalebutton.c
|
||||||
gtk/gtkscale.c
|
gtk/gtkscale.c
|
||||||
gtk/gtkscrollbar.c
|
gtk/gtkscrollbar.c
|
||||||
@ -164,6 +162,7 @@ gtk/gtkstatusbar.c
|
|||||||
gtk/gtkstatusicon.c
|
gtk/gtkstatusicon.c
|
||||||
gtk/gtkstock.c
|
gtk/gtkstock.c
|
||||||
gtk/gtkstyle.c
|
gtk/gtkstyle.c
|
||||||
|
gtk/gtkswitch.c
|
||||||
gtk/gtktable.c
|
gtk/gtktable.c
|
||||||
gtk/gtktearoffmenuitem.c
|
gtk/gtktearoffmenuitem.c
|
||||||
gtk/gtktextbuffer.c
|
gtk/gtktextbuffer.c
|
||||||
@ -205,7 +204,6 @@ gtk/gtkvbox.c
|
|||||||
gtk/gtkviewport.c
|
gtk/gtkviewport.c
|
||||||
gtk/gtkvolumebutton.c
|
gtk/gtkvolumebutton.c
|
||||||
gtk/gtkvpaned.c
|
gtk/gtkvpaned.c
|
||||||
gtk/gtkvruler.c
|
|
||||||
gtk/gtkvscale.c
|
gtk/gtkvscale.c
|
||||||
gtk/gtkvscrollbar.c
|
gtk/gtkvscrollbar.c
|
||||||
gtk/gtkvseparator.c
|
gtk/gtkvseparator.c
|
||||||
|
@ -1,10 +1 @@
|
|||||||
demos/gtk-demo/demo.ui
|
demos/gtk-demo/demo.ui
|
||||||
gdk-pixbuf/io-gdip-bmp.c
|
|
||||||
gdk-pixbuf/io-gdip-emf.c
|
|
||||||
gdk-pixbuf/io-gdip-gif.c
|
|
||||||
gdk-pixbuf/io-gdip-ico.c
|
|
||||||
gdk-pixbuf/io-gdip-jpeg.c
|
|
||||||
gdk-pixbuf/io-gdip-png.c
|
|
||||||
gdk-pixbuf/io-gdip-utils.c
|
|
||||||
gdk-pixbuf/io-gdip-wmf.c
|
|
||||||
|
|
||||||
|
4391
po-properties/ro.po
4391
po-properties/ro.po
File diff suppressed because it is too large
Load Diff
@ -86,7 +86,6 @@ gtk/gtkhandlebox.c
|
|||||||
gtk/gtkhbbox.c
|
gtk/gtkhbbox.c
|
||||||
gtk/gtkhbox.c
|
gtk/gtkhbox.c
|
||||||
gtk/gtkhpaned.c
|
gtk/gtkhpaned.c
|
||||||
gtk/gtkhruler.c
|
|
||||||
gtk/gtkhscale.c
|
gtk/gtkhscale.c
|
||||||
gtk/gtkhscrollbar.c
|
gtk/gtkhscrollbar.c
|
||||||
gtk/gtkhseparator.c
|
gtk/gtkhseparator.c
|
||||||
@ -147,7 +146,6 @@ gtk/gtkrecentchooser.c
|
|||||||
gtk/gtkrecentchooserdefault.c
|
gtk/gtkrecentchooserdefault.c
|
||||||
gtk/gtkrecentchoosermenu.c
|
gtk/gtkrecentchoosermenu.c
|
||||||
gtk/gtkrecentmanager.c
|
gtk/gtkrecentmanager.c
|
||||||
gtk/gtkruler.c
|
|
||||||
gtk/gtkscalebutton.c
|
gtk/gtkscalebutton.c
|
||||||
gtk/gtkscale.c
|
gtk/gtkscale.c
|
||||||
gtk/gtkscrollbar.c
|
gtk/gtkscrollbar.c
|
||||||
@ -165,6 +163,7 @@ gtk/gtkstatusbar.c
|
|||||||
gtk/gtkstatusicon.c
|
gtk/gtkstatusicon.c
|
||||||
gtk/gtkstock.c
|
gtk/gtkstock.c
|
||||||
gtk/gtkstyle.c
|
gtk/gtkstyle.c
|
||||||
|
gtk/gtkswitch.c
|
||||||
gtk/gtktable.c
|
gtk/gtktable.c
|
||||||
gtk/gtktearoffmenuitem.c
|
gtk/gtktearoffmenuitem.c
|
||||||
gtk/gtktextbuffer.c
|
gtk/gtktextbuffer.c
|
||||||
@ -206,7 +205,6 @@ gtk/gtkvbox.c
|
|||||||
gtk/gtkviewport.c
|
gtk/gtkviewport.c
|
||||||
gtk/gtkvolumebutton.c
|
gtk/gtkvolumebutton.c
|
||||||
gtk/gtkvpaned.c
|
gtk/gtkvpaned.c
|
||||||
gtk/gtkvruler.c
|
|
||||||
gtk/gtkvscale.c
|
gtk/gtkvscale.c
|
||||||
gtk/gtkvscrollbar.c
|
gtk/gtkvscrollbar.c
|
||||||
gtk/gtkvseparator.c
|
gtk/gtkvseparator.c
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
demos/gtk-demo/demo.ui
|
demos/gtk-demo/demo.ui
|
||||||
gtk/paper_names.c
|
gtk/paper_names.c
|
||||||
|
|
||||||
|
10
po/sl.po
10
po/sl.po
@ -12,8 +12,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gtk+ master\n"
|
"Project-Id-Version: gtk+ master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n"
|
||||||
"POT-Creation-Date: 2010-10-12 17:16+0000\n"
|
"POT-Creation-Date: 2010-10-12 17:16+0000\n"
|
||||||
"PO-Revision-Date: 2010-10-12 20:07+0100\n"
|
"PO-Revision-Date: 2010-11-29 09:32+0100\n"
|
||||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
"Last-Translator: Andrej Žnidaršič <andrej.znidarsic@gmail.com>\n"
|
||||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -103,12 +103,12 @@ msgstr "Premik nazaj"
|
|||||||
#: ../gdk/keyname-table.h:3941
|
#: ../gdk/keyname-table.h:3941
|
||||||
msgctxt "keyboard label"
|
msgctxt "keyboard label"
|
||||||
msgid "Tab"
|
msgid "Tab"
|
||||||
msgstr "Tab"
|
msgstr "Tabulator"
|
||||||
|
|
||||||
#: ../gdk/keyname-table.h:3942
|
#: ../gdk/keyname-table.h:3942
|
||||||
msgctxt "keyboard label"
|
msgctxt "keyboard label"
|
||||||
msgid "Return"
|
msgid "Return"
|
||||||
msgstr "Vnesi"
|
msgstr "Vnosna tipka"
|
||||||
|
|
||||||
#: ../gdk/keyname-table.h:3943
|
#: ../gdk/keyname-table.h:3943
|
||||||
msgctxt "keyboard label"
|
msgctxt "keyboard label"
|
||||||
@ -398,7 +398,7 @@ msgstr "Grafična podobo oblikovali"
|
|||||||
#: ../gtk/gtkaccellabel.c:160
|
#: ../gtk/gtkaccellabel.c:160
|
||||||
msgctxt "keyboard label"
|
msgctxt "keyboard label"
|
||||||
msgid "Shift"
|
msgid "Shift"
|
||||||
msgstr "Premakni"
|
msgstr "Shift"
|
||||||
|
|
||||||
#. This is the text that should appear next to menu accelerators
|
#. This is the text that should appear next to menu accelerators
|
||||||
#. * that use the control key. If the text on this key isn't typically
|
#. * that use the control key. If the text on this key isn't typically
|
||||||
|
56
po/th.po
56
po/th.po
@ -9,7 +9,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: gtk+\n"
|
"Project-Id-Version: gtk+\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-10-01 15:41-0400\n"
|
"POT-Creation-Date: 2010-10-01 15:41-0400\n"
|
||||||
"PO-Revision-Date: 2010-04-06 15:08+0700\n"
|
"PO-Revision-Date: 2010-11-29 18:55+0700\n"
|
||||||
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
|
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
|
||||||
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
|
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
|
||||||
"Language: th\n"
|
"Language: th\n"
|
||||||
@ -70,9 +70,8 @@ msgstr "SCREEN"
|
|||||||
|
|
||||||
#. Description of --gdk-debug=FLAGS in --help output
|
#. Description of --gdk-debug=FLAGS in --help output
|
||||||
#: gdk/gdk.c:164
|
#: gdk/gdk.c:164
|
||||||
#, fuzzy
|
|
||||||
msgid "GDK debugging flags to set"
|
msgid "GDK debugging flags to set"
|
||||||
msgstr "แฟล็กการดีบักของ GTK+ ที่จะเปิดใช้"
|
msgstr "แฟล็กการดีบั๊กของ GDK ที่จะเปิดใช้"
|
||||||
|
|
||||||
#. Placeholder in --gdk-debug=FLAGS in --help output
|
#. Placeholder in --gdk-debug=FLAGS in --help output
|
||||||
#. Placeholder in --gdk-no-debug=FLAGS in --help output
|
#. Placeholder in --gdk-no-debug=FLAGS in --help output
|
||||||
@ -84,9 +83,8 @@ msgstr "FLAGS"
|
|||||||
|
|
||||||
#. Description of --gdk-no-debug=FLAGS in --help output
|
#. Description of --gdk-no-debug=FLAGS in --help output
|
||||||
#: gdk/gdk.c:167
|
#: gdk/gdk.c:167
|
||||||
#, fuzzy
|
|
||||||
msgid "GDK debugging flags to unset"
|
msgid "GDK debugging flags to unset"
|
||||||
msgstr "แฟล็กการดีบักของ GTK+ ที่จะปิด"
|
msgstr "แฟล็กการดีบั๊กของ GDK ที่จะปิด"
|
||||||
|
|
||||||
#: gdk/keyname-table.h:3940
|
#: gdk/keyname-table.h:3940
|
||||||
msgctxt "keyboard label"
|
msgctxt "keyboard label"
|
||||||
@ -330,7 +328,7 @@ msgstr "เรียกใช้ X แบบประสานเวลา"
|
|||||||
#: gtk/gtkaboutdialog.c:101
|
#: gtk/gtkaboutdialog.c:101
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s"
|
msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s"
|
||||||
msgstr ""
|
msgstr "โปรแกรมนี้ไม่มีการรับประกันใดๆ ดูรายละเอียดเพิ่มเติมได้ที่ %s"
|
||||||
|
|
||||||
#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2235
|
#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2235
|
||||||
msgid "License"
|
msgid "License"
|
||||||
@ -455,9 +453,9 @@ msgid "Invalid type function on line %d: '%s'"
|
|||||||
msgstr "ฟังก์ชันถามชนิดใช้ไม่ได้ที่บรรทัด %d: '%s'"
|
msgstr "ฟังก์ชันถามชนิดใช้ไม่ได้ที่บรรทัด %d: '%s'"
|
||||||
|
|
||||||
#: gtk/gtkbuilderparser.c:407
|
#: gtk/gtkbuilderparser.c:407
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Duplicate object ID '%s' on line %d (previously on line %d)"
|
msgid "Duplicate object ID '%s' on line %d (previously on line %d)"
|
||||||
msgstr "id ของอ็อบเจกต์ '%s' ซ้ำที่บรรทัด %d (ใช้แล้วที่บรรทัด %d)"
|
msgstr "ID ของอ็อบเจกต์ '%s' ซ้ำที่บรรทัด %d (ใช้แล้วที่บรรทัด %d)"
|
||||||
|
|
||||||
#: gtk/gtkbuilderparser.c:859
|
#: gtk/gtkbuilderparser.c:859
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -612,9 +610,8 @@ msgid "_Saturation:"
|
|||||||
msgstr "ความส_ด:"
|
msgstr "ความส_ด:"
|
||||||
|
|
||||||
#: gtk/gtkcolorsel.c:421
|
#: gtk/gtkcolorsel.c:421
|
||||||
#, fuzzy
|
|
||||||
msgid "Intensity of the color."
|
msgid "Intensity of the color."
|
||||||
msgstr "ความโปร่งแสงของสี"
|
msgstr "ความเข้มของสี"
|
||||||
|
|
||||||
#: gtk/gtkcolorsel.c:422
|
#: gtk/gtkcolorsel.c:422
|
||||||
msgid "_Value:"
|
msgid "_Value:"
|
||||||
@ -789,12 +786,11 @@ msgstr "แ_ทรกอักขระควบคุมของยูนิ
|
|||||||
|
|
||||||
#: gtk/gtkentry.c:10015
|
#: gtk/gtkentry.c:10015
|
||||||
msgid "Caps Lock and Num Lock are on"
|
msgid "Caps Lock and Num Lock are on"
|
||||||
msgstr ""
|
msgstr "ปุ่ม Caps Lock และ Num Lock ติดอยู่"
|
||||||
|
|
||||||
#: gtk/gtkentry.c:10017
|
#: gtk/gtkentry.c:10017
|
||||||
#, fuzzy
|
|
||||||
msgid "Num Lock is on"
|
msgid "Num Lock is on"
|
||||||
msgstr "ปุ่ม Caps Lock ติดอยู่"
|
msgstr "ปุ่ม Num Lock ติดอยู่"
|
||||||
|
|
||||||
#: gtk/gtkentry.c:10019
|
#: gtk/gtkentry.c:10019
|
||||||
msgid "Caps Lock is on"
|
msgid "Caps Lock is on"
|
||||||
@ -1267,12 +1263,12 @@ msgstr "ให้ความสำคัญกับคำเตือนปร
|
|||||||
#. Description of --gtk-debug=FLAGS in --help output
|
#. Description of --gtk-debug=FLAGS in --help output
|
||||||
#: gtk/gtkmain.c:532
|
#: gtk/gtkmain.c:532
|
||||||
msgid "GTK+ debugging flags to set"
|
msgid "GTK+ debugging flags to set"
|
||||||
msgstr "แฟล็กการดีบักของ GTK+ ที่จะเปิดใช้"
|
msgstr "แฟล็กการดีบั๊กของ GTK+ ที่จะเปิดใช้"
|
||||||
|
|
||||||
#. Description of --gtk-no-debug=FLAGS in --help output
|
#. Description of --gtk-no-debug=FLAGS in --help output
|
||||||
#: gtk/gtkmain.c:535
|
#: gtk/gtkmain.c:535
|
||||||
msgid "GTK+ debugging flags to unset"
|
msgid "GTK+ debugging flags to unset"
|
||||||
msgstr "แฟล็กการดีบักของ GTK+ ที่จะปิด"
|
msgstr "แฟล็กการดีบั๊กของ GTK+ ที่จะปิด"
|
||||||
|
|
||||||
#. Translate to default:RTL if you want your widgets
|
#. Translate to default:RTL if you want your widgets
|
||||||
#. * to be RTL, otherwise translate to default:LTR.
|
#. * to be RTL, otherwise translate to default:LTR.
|
||||||
@ -1333,9 +1329,9 @@ msgid "Remember _forever"
|
|||||||
msgstr "จำรหัสผ่านไว้_ตลอดไป"
|
msgstr "จำรหัสผ่านไว้_ตลอดไป"
|
||||||
|
|
||||||
#: gtk/gtkmountoperation.c:883
|
#: gtk/gtkmountoperation.c:883
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Unknown Application (PID %d)"
|
msgid "Unknown Application (PID %d)"
|
||||||
msgstr "โปรแกรมไม่ทราบชื่อ (pid %d)"
|
msgstr "โปรแกรมไม่ทราบชื่อ (PID %d)"
|
||||||
|
|
||||||
#: gtk/gtkmountoperation.c:1066
|
#: gtk/gtkmountoperation.c:1066
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1347,9 +1343,9 @@ msgid "_End Process"
|
|||||||
msgstr "_จบโพรเซส"
|
msgstr "_จบโพรเซส"
|
||||||
|
|
||||||
#: gtk/gtkmountoperation-stub.c:64
|
#: gtk/gtkmountoperation-stub.c:64
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Cannot kill process with PID %d. Operation is not implemented."
|
msgid "Cannot kill process with PID %d. Operation is not implemented."
|
||||||
msgstr "ไม่สามารถฆ่าโพรเซสที่มี pid %d ได้ เนื่องจากยังไม่ได้ทำปฏิบัติการนี้"
|
msgstr "ไม่สามารถฆ่าโพรเซสที่มี PID %d ได้ เนื่องจากยังไม่ได้พัฒนาปฏิบัติการนี้"
|
||||||
|
|
||||||
#. translators: this string is a name for the 'less' command
|
#. translators: this string is a name for the 'less' command
|
||||||
#: gtk/gtkmountoperation-x11.c:862
|
#: gtk/gtkmountoperation-x11.c:862
|
||||||
@ -1373,9 +1369,9 @@ msgid "Z Shell"
|
|||||||
msgstr "Z Shell"
|
msgstr "Z Shell"
|
||||||
|
|
||||||
#: gtk/gtkmountoperation-x11.c:963
|
#: gtk/gtkmountoperation-x11.c:963
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Cannot end process with PID %d: %s"
|
msgid "Cannot end process with PID %d: %s"
|
||||||
msgstr "ไม่สามารถจบโพรเซสที่มี pid %d ได้: %s"
|
msgstr "ไม่สามารถจบโพรเซสที่มี PID %d ได้: %s"
|
||||||
|
|
||||||
#: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170
|
#: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1450,9 +1446,8 @@ msgid "Not available"
|
|||||||
msgstr "ไม่มี"
|
msgstr "ไม่มี"
|
||||||
|
|
||||||
#: gtk/gtkprinteroptionwidget.c:794
|
#: gtk/gtkprinteroptionwidget.c:794
|
||||||
#, fuzzy
|
|
||||||
msgid "Select a folder"
|
msgid "Select a folder"
|
||||||
msgstr "เลือกแฟ้ม"
|
msgstr "เลือกโฟลเดอร์"
|
||||||
|
|
||||||
#: gtk/gtkprinteroptionwidget.c:813
|
#: gtk/gtkprinteroptionwidget.c:813
|
||||||
msgid "_Save in folder:"
|
msgid "_Save in folder:"
|
||||||
@ -2091,10 +2086,9 @@ msgid "_Cancel"
|
|||||||
msgstr "_ยกเลิก"
|
msgstr "_ยกเลิก"
|
||||||
|
|
||||||
#: gtk/gtkstock.c:326
|
#: gtk/gtkstock.c:326
|
||||||
#, fuzzy
|
|
||||||
msgctxt "Stock label"
|
msgctxt "Stock label"
|
||||||
msgid "_CD-ROM"
|
msgid "_CD-ROM"
|
||||||
msgstr "_ซีดีรอม"
|
msgstr "ซีดี_รอม"
|
||||||
|
|
||||||
#: gtk/gtkstock.c:327
|
#: gtk/gtkstock.c:327
|
||||||
msgctxt "Stock label"
|
msgctxt "Stock label"
|
||||||
@ -2152,7 +2146,6 @@ msgid "_Edit"
|
|||||||
msgstr "แ_ก้ไข"
|
msgstr "แ_ก้ไข"
|
||||||
|
|
||||||
#: gtk/gtkstock.c:338
|
#: gtk/gtkstock.c:338
|
||||||
#, fuzzy
|
|
||||||
msgctxt "Stock label"
|
msgctxt "Stock label"
|
||||||
msgid "_File"
|
msgid "_File"
|
||||||
msgstr "แ_ฟ้ม"
|
msgstr "แ_ฟ้ม"
|
||||||
@ -2231,7 +2224,6 @@ msgid "_Up"
|
|||||||
msgstr "_ขึ้น"
|
msgstr "_ขึ้น"
|
||||||
|
|
||||||
#: gtk/gtkstock.c:360
|
#: gtk/gtkstock.c:360
|
||||||
#, fuzzy
|
|
||||||
msgctxt "Stock label"
|
msgctxt "Stock label"
|
||||||
msgid "_Hard Disk"
|
msgid "_Hard Disk"
|
||||||
msgstr "ฮาร์_ดดิสก์"
|
msgstr "ฮาร์_ดดิสก์"
|
||||||
@ -2569,9 +2561,9 @@ msgid "The attribute \"%s\" was found twice on the <%s> element"
|
|||||||
msgstr "พบแอตทริบิวต์ \"%s\" ซ้ำในอิลิเมนต์ <%s>"
|
msgstr "พบแอตทริบิวต์ \"%s\" ซ้ำในอิลิเมนต์ <%s>"
|
||||||
|
|
||||||
#: gtk/gtktextbufferserialize.c:845
|
#: gtk/gtktextbufferserialize.c:845
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "<%s> element has invalid ID \"%s\""
|
msgid "<%s> element has invalid ID \"%s\""
|
||||||
msgstr "อิลิเมนต์ <%s> มี id \"%s\" ซึ่งไม่ถูกต้อง"
|
msgstr "อิลิเมนต์ <%s> มี ID \"%s\" ซึ่งไม่ถูกต้อง"
|
||||||
|
|
||||||
#: gtk/gtktextbufferserialize.c:855
|
#: gtk/gtktextbufferserialize.c:855
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -3886,7 +3878,7 @@ msgid "Printer '%s' is out of paper."
|
|||||||
msgstr "เครื่องพิมพ์ '%s' กระดาษหมด"
|
msgstr "เครื่องพิมพ์ '%s' กระดาษหมด"
|
||||||
|
|
||||||
#: modules/printbackends/cups/gtkprintbackendcups.c:1686
|
#: modules/printbackends/cups/gtkprintbackendcups.c:1686
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Printer '%s' is currently offline."
|
msgid "Printer '%s' is currently offline."
|
||||||
msgstr "เครื่องพิมพ์ '%s' ออฟไลน์อยู่"
|
msgstr "เครื่องพิมพ์ '%s' ออฟไลน์อยู่"
|
||||||
|
|
||||||
@ -4195,10 +4187,10 @@ msgid ""
|
|||||||
msgstr "เปิดแฟ้มรูปภาพ '%s' ไม่สำเร็จ: ไม่แน่ใจว่าเพราะอะไร แต่อาจเป็นเพราะแฟ้มเสียหาย"
|
msgstr "เปิดแฟ้มรูปภาพ '%s' ไม่สำเร็จ: ไม่แน่ใจว่าเพราะอะไร แต่อาจเป็นเพราะแฟ้มเสียหาย"
|
||||||
|
|
||||||
#~ msgid "Gdk debugging flags to set"
|
#~ msgid "Gdk debugging flags to set"
|
||||||
#~ msgstr "แฟล็กการดีบักของ GDK ที่จะเปิดใช้"
|
#~ msgstr "แฟล็กการดีบั๊กของ GDK ที่จะเปิดใช้"
|
||||||
|
|
||||||
#~ msgid "Gdk debugging flags to unset"
|
#~ msgid "Gdk debugging flags to unset"
|
||||||
#~ msgstr "แฟล็กการดีบักของ GDK ที่จะปิด"
|
#~ msgstr "แฟล็กการดีบั๊กของ GDK ที่จะปิด"
|
||||||
|
|
||||||
#~ msgid "Image file '%s' contains no data"
|
#~ msgid "Image file '%s' contains no data"
|
||||||
#~ msgstr "แฟ้มรูปภาพ '%s' ไม่มีข้อมูล"
|
#~ msgstr "แฟ้มรูปภาพ '%s' ไม่มีข้อมูล"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user