Compare commits
182 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13f45bd4cd | ||
|
|
1b07cf6522 | ||
|
|
1e7ded6a47 | ||
|
|
207b793316 | ||
|
|
4ece50a13c | ||
|
|
659329c168 | ||
|
|
162e41633d | ||
|
|
6f2187270e | ||
|
|
c509a104b7 | ||
|
|
08e508889f | ||
|
|
e9713145f9 | ||
|
|
f203f7ccc0 | ||
|
|
b9926f65a3 | ||
|
|
efcfa0ec94 | ||
|
|
200ed52e92 | ||
|
|
304e2d5711 | ||
|
|
0a3122b541 | ||
|
|
1bac6684f1 | ||
|
|
9d1a64455b | ||
|
|
c46bfcf752 | ||
|
|
bab6cb6d97 | ||
|
|
f58aaf2ccf | ||
|
|
86855f7531 | ||
|
|
25672b7f39 | ||
|
|
1065506257 | ||
|
|
e3e84de96c | ||
|
|
964eb99a5e | ||
|
|
518023df56 | ||
|
|
86f197893a | ||
|
|
ac26fc3be4 | ||
|
|
4ad8436316 | ||
|
|
631123bbd4 | ||
|
|
5f9a19ff33 | ||
|
|
587308004c | ||
|
|
2ebad7ec2b | ||
|
|
fc04d6613a | ||
|
|
515c665b7f | ||
|
|
563add1325 | ||
|
|
0e44b8c38c | ||
|
|
cdab14dc22 | ||
|
|
ab300e7de3 | ||
|
|
acdb9650e2 | ||
|
|
92166f1f69 | ||
|
|
7054b0ccff | ||
|
|
ea0d3d2a95 | ||
|
|
0258c88949 | ||
|
|
3244d7a138 | ||
|
|
044e4b15a6 | ||
|
|
f6a5dad12c | ||
|
|
b38e4e0ac0 | ||
|
|
4b4533ef68 | ||
|
|
113ce66151 | ||
|
|
021d065a1f | ||
|
|
db17324d82 | ||
|
|
d505df90b0 | ||
|
|
db326889f9 | ||
|
|
6be0f108b4 | ||
|
|
136409b8cd | ||
|
|
84e0bef150 | ||
|
|
0e002cbef0 | ||
|
|
107b5d7397 | ||
|
|
8efd10c9fd | ||
|
|
758e10ad41 | ||
|
|
5d5b7c9f7f | ||
|
|
761f19e7d7 | ||
|
|
c33d8c7005 | ||
|
|
4cf6141462 | ||
|
|
3376093058 | ||
|
|
11e8573d0e | ||
|
|
8653bb8122 | ||
|
|
9e2d5b9064 | ||
|
|
bdda7d1fa8 | ||
|
|
7dbe3d953d | ||
|
|
80a93be9e6 | ||
|
|
a537bdc1fe | ||
|
|
848dd947ca | ||
|
|
d6187a3dc4 | ||
|
|
96e1d7bfac | ||
|
|
0f28c2cd47 | ||
|
|
8f9693e02c | ||
|
|
7dac519277 | ||
|
|
d0ad84c2a3 | ||
|
|
60ba261ed6 | ||
|
|
ddde1a58a8 | ||
|
|
373749649e | ||
|
|
9187677a78 | ||
|
|
b6402da864 | ||
|
|
32397f0b72 | ||
|
|
6e00717079 | ||
|
|
e8863ece18 | ||
|
|
0100f08592 | ||
|
|
49bddf48ad | ||
|
|
4018a32e0b | ||
|
|
e530a0ecd1 | ||
|
|
5e11b071a7 | ||
|
|
1c449e8d4a | ||
|
|
6144469d02 | ||
|
|
a2a3de7861 | ||
|
|
69c902a146 | ||
|
|
0bb1991afb | ||
|
|
5cc3b265be | ||
|
|
cb2950e17f | ||
|
|
dc96266e66 | ||
|
|
b51455712f | ||
|
|
9bc3a93cf9 | ||
|
|
115af7c96e | ||
|
|
139cb2a510 | ||
|
|
a2a369ae1c | ||
|
|
9d8a3e99fd | ||
|
|
5affbbe545 | ||
|
|
dadd81768a | ||
|
|
a69e59132f | ||
|
|
dfc26939cc | ||
|
|
c961962ce6 | ||
|
|
6308d3a03d | ||
|
|
71385044fe | ||
|
|
c1e82bf276 | ||
|
|
8e0c2a3fff | ||
|
|
99763f3dd5 | ||
|
|
f655210f42 | ||
|
|
2b71170b12 | ||
|
|
8e6171d68e | ||
|
|
667bb3c869 | ||
|
|
c752d8ad75 | ||
|
|
22d3a16653 | ||
|
|
b16c9ebdf1 | ||
|
|
0f85624e3d | ||
|
|
6b401440d7 | ||
|
|
b9c2bbc385 | ||
|
|
6964f9dbf1 | ||
|
|
85df2d3729 | ||
|
|
0922d4059a | ||
|
|
f233609c93 | ||
|
|
dee6d13f0d | ||
|
|
830626596b | ||
|
|
3ff8f55ed0 | ||
|
|
7ca4d22bc3 | ||
|
|
ff8d0dc54c | ||
|
|
4b104c6217 | ||
|
|
6144b2276c | ||
|
|
17d1cd1506 | ||
|
|
40afffb9fd | ||
|
|
b088c9de26 | ||
|
|
17a26eef48 | ||
|
|
30e234d847 | ||
|
|
9ce61b5c9a | ||
|
|
41687658ad | ||
|
|
b8140b74e3 | ||
|
|
8d402589cf | ||
|
|
b4143c6af9 | ||
|
|
3d76005585 | ||
|
|
c8de4c9093 | ||
|
|
5d29c07087 | ||
|
|
13619963a0 | ||
|
|
79a2edd840 | ||
|
|
f3dd4a6fee | ||
|
|
d14cdf2998 | ||
|
|
b6d73e7d20 | ||
|
|
a4c6339351 | ||
|
|
884adaac9e | ||
|
|
ff93dfd3eb | ||
|
|
8ff6d55c18 | ||
|
|
5d83553beb | ||
|
|
23572c21be | ||
|
|
6e4312a49a | ||
|
|
ab2178e308 | ||
|
|
ba91d7d3a9 | ||
|
|
bdb146cce5 | ||
|
|
19a8fbf336 | ||
|
|
230dccf77b | ||
|
|
91e636d64b | ||
|
|
7b6cf538e1 | ||
|
|
5ebe040e6c | ||
|
|
aee69615bc | ||
|
|
28fe00fc68 | ||
|
|
742a4658e8 | ||
|
|
6228da23b5 | ||
|
|
db241d36e2 | ||
|
|
5e5372ce74 | ||
|
|
c08f4bd2a9 | ||
|
|
ecd8841d25 | ||
|
|
be624e71f4 |
13
Makefile.am
@@ -95,7 +95,7 @@ ChangeLog:
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(pkgconfigdir)/gtk+-3.0.pc
|
||||
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-gtk-doc \
|
||||
--disable-doc-cross-references \
|
||||
--enable-man \
|
||||
@@ -103,7 +103,14 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-introspection \
|
||||
--enable-installed-tests
|
||||
|
||||
GITIGNORE_TRANSLATION_DIRS = po-properties
|
||||
GITIGNOREFILES = po-properties/gtk30-properties.pot
|
||||
GITIGNOREFILES = \
|
||||
po-properties/Makefile.in.in \
|
||||
po-properties/Makefile.in \
|
||||
po-properties/Makefile \
|
||||
po-properties/*.gmo \
|
||||
po-properties/*.mo \
|
||||
po-properties/POTFILES \
|
||||
po-properties/stamp-it \
|
||||
po-properties/.intltool-merge-cache
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
585
NEWS
@@ -1,550 +1,101 @@
|
||||
Overview of Changes in GTK+ 3.22.2
|
||||
Overview of Changes in GTK+ 3.20.4
|
||||
==================================
|
||||
|
||||
* Several improvements to the win32 theme
|
||||
|
||||
* Deprecations have been added for APIs that will be removed
|
||||
in GTK+ 4
|
||||
|
||||
* Bug fixes:
|
||||
767713 Fullscreen in wayland is buggy
|
||||
771320 Maps widget is displayed at wrong position inside gnome-contacts
|
||||
772345 placesviewrow: busy_spinner when visible offsets the rest of the...
|
||||
772389 Appending a character to a GtkEntry control in overwrite mode ri...
|
||||
772415 Avoid calling eglGetDisplay
|
||||
772552 Deprecate gtk_menu_popup
|
||||
772683 Usage of FALSE instead of gint in glarea demo
|
||||
772695 Show the keyboard shortcuts from left to right even in RTL
|
||||
772775 menu bindings needs attribute to force LTR for horizontal-button...
|
||||
772859 Fix memory leaks in implementations of common widgets
|
||||
772922 GtkMenu: Try using gdk_window_move_to_rect() more often
|
||||
772926 shortcutswindow: working version of set_section_name()
|
||||
773029 style-set signal problem
|
||||
773082 overlay: Document availability of properties
|
||||
773113 tests: fix clipboard test by loading correct icon
|
||||
773180 Don't second-guess whether our GDK GL context is GLES
|
||||
773246 Typo in css color definitions documentation
|
||||
|
||||
* Translation updates:
|
||||
Croatian
|
||||
Danish
|
||||
Dutch
|
||||
German
|
||||
Greek
|
||||
Italian
|
||||
Latvian
|
||||
Lithuanian
|
||||
Norwegian bokmal
|
||||
Polish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.22.1
|
||||
==================================
|
||||
|
||||
* Reduce runtime warnings
|
||||
|
||||
* Bug fixes:
|
||||
765649 icons missing in file chooser (errors on console)
|
||||
769500 adwaita: GtkWidget:sensitive animation should not cause "On" ...
|
||||
769554 [Mir] Touchpad scrolling not as smooth as it should be
|
||||
770388 GtkTreeView: attempt to underallocate GtkTreeView's child Gtk...
|
||||
771516 wayland: Only 'moved-to-rect' if move_to_rect() was used
|
||||
771553 Shrinking window generates a black patch when gl is used
|
||||
771666 sftp:// property not set for translation in 3.21.92
|
||||
771812 Crash when reparenting a popover with a non-null parent_scrol...
|
||||
771826 Some missing nullable annotation
|
||||
771915 [Wayland]: Totem window misplaced after a state change
|
||||
771959 gtk_init_with_args fails when no display is found / does not ...
|
||||
771963 GtkPaned warning in gtk_paned_realize
|
||||
772057 Fix wrong URL copy/paste (patch)
|
||||
772215 icon-theme: Fix leaks on error
|
||||
|
||||
* Translation updates:
|
||||
Arabic
|
||||
Basque
|
||||
Brazilian Portuguese
|
||||
Croatian
|
||||
Czech
|
||||
French
|
||||
German
|
||||
Hebrew
|
||||
Hungarian
|
||||
Kazakh
|
||||
Korean
|
||||
Polish
|
||||
Slovak
|
||||
Swedish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.22.0
|
||||
==================================
|
||||
|
||||
* Reduce some noisy warnings
|
||||
|
||||
* Improve positioning and sizing of popups on Wayland
|
||||
|
||||
* Update Adwaita assets
|
||||
|
||||
* Bugs fixed:
|
||||
602773 GdkEventKey.is_modifier is 0 for Shift, Ctrl, Alt keys
|
||||
771117 gtk3 3.21.5 broke displaying drop-down lists, need to scrol...
|
||||
771349 gdk_screen_get_monitor_scale_factor on X11 always returns 1...
|
||||
771568 Holding down a modifier key results in 100% cpu usage
|
||||
771561 Epiphany application mode on Wayland broken with WebKit...
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
British English
|
||||
Catalan
|
||||
Danish
|
||||
French
|
||||
Galician
|
||||
Greek
|
||||
Kazakh
|
||||
Persian
|
||||
Slovak
|
||||
Spanish
|
||||
Swedish
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.6
|
||||
==================================
|
||||
|
||||
* GtkScrolledWindow sizing behavior has been changed back to the
|
||||
previous behavior, with new API to change it
|
||||
|
||||
* Some GtkPopover size allocation problems have been fixed
|
||||
|
||||
* Wayland:
|
||||
- We require xdg-shell version 6 now
|
||||
|
||||
* Bugs fixed:
|
||||
764979 Connect to server is unusable after cancelling a password dialog
|
||||
766569 Better size requisition for GTK_SCROLL_NATURAL children
|
||||
767391 cross-fade() not cross-fading
|
||||
769498 Scrollbars are broken
|
||||
770278 modernize example applications
|
||||
770508 Recent change in GtkTreeView::grab_focus_and_unset_draw_keyfocus()...
|
||||
770614 GtkScale in HighContrast theme with value = 0: WARNING: allocates ...
|
||||
770624 Fix typos
|
||||
770703 Fix crash when using page-down on GtkListBox
|
||||
770745 wayland: Warn when an application tries to map popup incorrectly
|
||||
770849 GtkLabel with padding brokenness
|
||||
770906 Wayland: Unmapping a toplevel from a menu/popup can lead to a prot...
|
||||
771033 GtkStatusIcon cannot show activate menu in VirtualBox since 3.21.2
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
British English
|
||||
Czech
|
||||
Danish
|
||||
Finnish
|
||||
French
|
||||
Galician
|
||||
German
|
||||
Hebrew
|
||||
Hungarian
|
||||
Kazakh
|
||||
Korean
|
||||
Latvian
|
||||
Lithuanian
|
||||
Persian
|
||||
Polish
|
||||
Portuguese
|
||||
Russian
|
||||
Scottish Gaelic
|
||||
Serbian
|
||||
Slovak
|
||||
Swedish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.5
|
||||
==================================
|
||||
|
||||
* Make GtkShortcutLabel public
|
||||
|
||||
* Add an API to obtain window IDs for sharing
|
||||
|
||||
* Add explicit API to show/hide popovers with animation
|
||||
|
||||
* Wayland:
|
||||
- Switch to xdg-shell v6
|
||||
- Use tablet pad protocol to support Wacom tablets fully
|
||||
- Use the xdg_foreign protocol to export window handles
|
||||
- Improve menu positioning
|
||||
- Improve handling of tiled window state
|
||||
|
||||
* Add GtkPadController to bind GActions to tablet pad events
|
||||
|
||||
* Bugs fixed:
|
||||
569581 Using the US-Intl keyboard layout causes unexpected character comb...
|
||||
712760 Clang static analysis fixes
|
||||
755947 wayland: gnome-terminal does not fill entire area when tiled
|
||||
756579 GTK should let GDK position menus
|
||||
762260 Check boxes and radio buttons animate when inside a popover that i...
|
||||
764413 Wayland: not fullscreenable gtk+ apps can be fullscreened
|
||||
768017 Wayland: menus opened from access keys (mnemonic menu items) hide ...
|
||||
768081 Enable HiDPI support for GDK-Win32
|
||||
768138 Update the GDK-Mir backend to fix a few problems
|
||||
768722 Keyboard shortcuts for russian characters doesn't work
|
||||
768902 Font too small when using gtk_widget_override_font()
|
||||
768930 reftests: override GSETTINGS_SCHEMA_DIR when running tests
|
||||
768999 Floating point exception (division by zero) when running under Xvfb
|
||||
769003 Adwaita: GtkCalendar uses a confusing style for week of year
|
||||
769004 ss test suite failures in 3.21.4
|
||||
769047 GtkWidget <-> GtkStyleContext API not clear
|
||||
769126 Can't type astral plane characters into a GtkEntry using the Windo...
|
||||
769162 GtkTable: compute_expand buggy
|
||||
769205 Expose GtkShortcutLabel as a public widget
|
||||
769236 demos: Fix build failure
|
||||
769287 GtkMenuToolButton:show-menu is emitted twice and breaks dynamic menus
|
||||
769402 regression in menu positioning on wayland
|
||||
769451 Build failure of 3.21 (master) in Debian Unstable since 7-26-2016
|
||||
769485 Eliminate use of g_test_expect_message()
|
||||
769568 Modification date display incorrectly wraps calendar days (and is ...
|
||||
769601 Dead link in faq on gtk-question-index.html
|
||||
769603 gtk+-3.20.8: underlink issue with ld.gold - build fails: ./.libs/l...
|
||||
769706 Add show/hide API to GtkPopover
|
||||
769937 wayland: Port backend to use xdg-shell unstable v6
|
||||
770026 review comments for wip/wayland-tablet-v2
|
||||
770166 Can GtkButtons of arbitrary size be circular? The style class only...
|
||||
770236 gtkbindings: Add an example for gtk_binding_entry_add_signal()
|
||||
770242 gtkbindings: Clarify that widgets need has-focus for bindings to work
|
||||
770332 Notebook arrow icon wrong color after creating new tab
|
||||
770374 Gtk Treeview Editable overshoots column width when column width is...
|
||||
769788 Fix stacking order of flatpak portals on Wayland
|
||||
770458 GtkAboutDialog issue with long credit lists and GtkScrolledWindow
|
||||
770550 gtkplacessidebar: fix signal marshal
|
||||
770307 Crash when closing a glade project
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
Catalan
|
||||
Czech
|
||||
French
|
||||
German
|
||||
Hebrew
|
||||
Indonesian
|
||||
Lithuanian
|
||||
Polish
|
||||
Portuguese
|
||||
Serbian
|
||||
Slovak
|
||||
Slovenian
|
||||
Spanish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.4
|
||||
==================================
|
||||
|
||||
* GtkHeaderBar supports expanding children
|
||||
|
||||
* GtkPrintDialog respects initially set capabilities
|
||||
|
||||
* GtkApplication supports registering with the Xfce session manager
|
||||
|
||||
* Keep firefox working after the introduction of GdkDrawingContext
|
||||
|
||||
* css:
|
||||
- Support for background-blend-mode has been added
|
||||
|
||||
* Wayland:
|
||||
- Fix some interoperability issues in clipboard handling
|
||||
|
||||
* Sandboxing
|
||||
- GtkFileChooserNative gained portal support
|
||||
- GtkPrintOperation gained portal support
|
||||
- gtk_show_uri gained portal support
|
||||
- GtkApplication gained portal support for inhibiting
|
||||
|
||||
* New APIs:
|
||||
- gtk_show_uri_on_window
|
||||
- gtk_file_filter_to/from_gvariant
|
||||
- gtk_file_chooser_add/remove/set/get_choice
|
||||
- gtk_print_settings_to/from_gvariant
|
||||
- gtk_paper_size_to/from_gvariant
|
||||
- gtk_page_setup_to/from_gvariant
|
||||
|
||||
* Bugs fixed:
|
||||
693203 GtkApplication does not support Xfce session manager
|
||||
724332 GtkHeaderBar need to support an expand property
|
||||
767849 crash in focus handling
|
||||
767851 Adwaita: popover arrows broken in some orientations
|
||||
767965 Improve heuristics to detect remote filesystem
|
||||
768016 [Wayland] Submenus often get closed after ~2 seconds
|
||||
768025 entry.warning & entry.error broken
|
||||
768082 wayland: copying from Wayland to NEdit (Xwayland/Motif) doesn't work
|
||||
768142 Incorrect order of $(LIBS) and $(OBJS) in Makefile.example caused...
|
||||
768184 headerbar: don't throw a warning if title widget is hidden
|
||||
768485 Change the priority of the window-close idle to G_PRIORITY_DEFAULT
|
||||
768499 portal support for gtk+
|
||||
768546 Wrong documentation for the "move-viewport" signal of GtkTextView
|
||||
768657 places-view: fix open action for locations without mount or volume
|
||||
768659 gtk/gtkfilechoosernativeportal.c: Don't use g_autoptr()
|
||||
768756 GtkFileChooserNativePortal uses incorrect response id
|
||||
|
||||
* Translation updates:
|
||||
Chinese (Taiwan)
|
||||
Hebrew
|
||||
Indonesian
|
||||
Portuguese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.3
|
||||
==================================
|
||||
|
||||
* GtkStack now has its own accessible implementation which only
|
||||
shows the currently visible child
|
||||
|
||||
* The GtkSizeGroup::ignore-hidden property has been documented as
|
||||
not working.
|
||||
|
||||
* GDK_SOURCE_TRACKPOINT has been added to the GdkInputSource enumeration
|
||||
to allow special-casing this kind of input device
|
||||
|
||||
* Wayland:
|
||||
- Use separate devices to differentiate between various sources of
|
||||
scroll events
|
||||
- Fall back to using shm_open if memfds are unavailable
|
||||
|
||||
* Styling of text in GtkScale and GtkProgressBar can now be influenced
|
||||
by the proper CSS nodes
|
||||
|
||||
* GtkScrolledWindow has new max-content-width/height properties to
|
||||
control its size
|
||||
|
||||
* GtkFileChooser search has been fixed to work with trackers FTS5 syntax
|
||||
|
||||
* Bugs fixed:
|
||||
79229 GtkScale with a big number of digits and value pos set to...
|
||||
118959 GtkScale value '-0'
|
||||
556254 Test properties of type GObject in the 'object' test
|
||||
578626 Vertical Scale Widget sometimes not allocating enough room...
|
||||
674215 [patch] regression with updating tooltips
|
||||
708148 gtk_tree_view_get_path_at_pos mistakenly identifies column...
|
||||
710471 Make gtk_scrolled_window_remove() smart
|
||||
742281 GtkScrolledWindow should have max-content-height and max-c...
|
||||
745622 Selected text not highlighted in GtkInfoBar
|
||||
751409 gtk_style_context_add_provider() does not propagate to chi...
|
||||
753202 change cursor for click scrolling
|
||||
764203 Default background color for the 'textview border' node
|
||||
765410 Scrollbar does not update since 3.20
|
||||
765595 Modal popover does not close when focus leaves it
|
||||
766341 Do not rely on memfd as it requires a fairly recent kernel
|
||||
766372 Scale omits value in various size calculations, causing in...
|
||||
766569 Better size requisition for GTK_SCROLL_NATURAL children
|
||||
766675 Add appropriate frame drawing API to GdkWindow
|
||||
766860 tiled (snapped, half-maximized) windows in Wayland aren't ...
|
||||
766878 placesview: Do not mark icon name as translatable
|
||||
767052 Wayland: Iconifying a modal dialog makes the app unusable
|
||||
767058 GtkInfoBar: right-click/context menu all white
|
||||
767093 wayland: Provide information about scroll devices
|
||||
767100 Add an input source type for trackpoints
|
||||
767108 Separators not correctly placed in GtkPopover
|
||||
767238 Fix long standing regression in min-content-width/min-conte...
|
||||
767241 wayland: Long window titles crash clients
|
||||
767310 High-contrast theme doesn't show focus rectangle in default...
|
||||
767312 gtk_widget_path_append_for_widget() misses classes unless g...
|
||||
767468 Popover over a treeview cellrenderer is hidden immediately ...
|
||||
767705 GtkActionHelper: Change a message to a warning
|
||||
767766 CUPS 2.X detected incorrectly by configure
|
||||
767795 Warning when the "accelerator" property of GtkShortcutsShor...
|
||||
|
||||
|
||||
Translation updates:
|
||||
Thai
|
||||
Catalan
|
||||
Occitan
|
||||
Spanish
|
||||
Scottish Gaelic
|
||||
Brazilian Portuguese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.2
|
||||
==================================
|
||||
|
||||
* GTK+ is now using upstream gettext instead of the GLib wrappers.
|
||||
This adds a requirement for the fairly recent gettext 0.19.7 release
|
||||
|
||||
* GDK has a new GdkMonitor api that offers richer information about
|
||||
connected outputs
|
||||
|
||||
* Bugs fixed:
|
||||
373745 Do not use AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR) and use gettext...
|
||||
682080 Gtk:ERROR:gtktoolbar.c:2271:logical_to_physical: assertion failed:...
|
||||
747206 gtktextview: note on how to get line spacing between two paragraphs
|
||||
756570 gtkplacesview no longer provides guidance on address formats
|
||||
759037 GtkInfoBar: documentation not updated wrt background colors and me...
|
||||
763852 gdk/wayland: event source is not multi-thread aware
|
||||
764395 nautilus crashed on double clicking 'other locations'
|
||||
765471 CellRendererText shows edit entry in a wrong position for small cells
|
||||
765579 wayland: cache frequently accessed GtkSettings in wayland screen
|
||||
765676 gtk_paned_set_position doesn't work as advertised
|
||||
765700 GtkPaned use causes "How does the code know the size to allocate?"
|
||||
765742 GtkRedioButton and GtkCheckButton doesn't aligned right to left la...
|
||||
765790 W32: configure does not tell which cairo version to use
|
||||
765793 configure script failure (cairo_win32_surface_create_with_format i...
|
||||
765858 file chooser generates a warning about a network path
|
||||
765907 [Wayland] Reversed scrolling GDK_SCROLL_UP/GDK_SCROLL_DOWN in Wayl...
|
||||
765922 GtkScale labels extend past edge of widget and overlap neighboring...
|
||||
765924 Improve external drives detection
|
||||
765939 [Wayland] very slow scrolling in GtkMenu using the touchpad
|
||||
765966 settings: fix initial value for gtk-font-name
|
||||
765973 GtkRevealer need to always send "child-revealed" signal at end of ...
|
||||
765981 fts warning from tracker when searching for files with "-" in name
|
||||
766049 wayland: use g_signal_handler_disconnect()
|
||||
766120 Scale draw_value() align changed from centre/right (H/V) to left, ...
|
||||
766166 key bindings in gtk.css are ignored
|
||||
766175 Translation of quotes may misinterpreted by GTK sidebar
|
||||
766207 Fix build on pre-C99 compilers
|
||||
766233 Crash when server does not support XI2
|
||||
766314 Spurious leave-notify event after touch up
|
||||
766323 GTKPopover gives warnings if visible when reparented
|
||||
766336 Crash when selecting rows with rubberbanding
|
||||
766405 Stack shows incorrect frame in widget factory on wayland
|
||||
766440 Scale slider button has stopped discerning & rendering appropriate...
|
||||
766442 Broken drag & drop between windows
|
||||
766458 widget: fix GtkLabelAccessible NULL links.
|
||||
766530 scrolledwindow: Fix typo in get_preferred_height calculation
|
||||
766566 Wayland: gdk_screen_get_monitor_at_window() unreliable under Wayland
|
||||
766569 Better size requisition for GTK_SCROLL_NATURAL children
|
||||
766642 Switches in HeaderBars Are Badly Integrated
|
||||
766643 Frozen windows when unmapped with pending configure event
|
||||
766737 stack: Only map children when necessary
|
||||
766782 OpenGL in broadway leads to segmentation fault
|
||||
767848 crash in the window test
|
||||
|
||||
* Translation updates:
|
||||
Arabic
|
||||
Brazilian Portuguese
|
||||
German
|
||||
Hungarian
|
||||
Kazakh
|
||||
Lithuanian
|
||||
Norwegian bokmål
|
||||
Occitan
|
||||
Portuguese
|
||||
Scottish Gaelic
|
||||
Slovak
|
||||
Spanish
|
||||
Swedish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.21.1
|
||||
==================================
|
||||
|
||||
* The GNU Affero General Public License has been added to the list of
|
||||
predefined licenses in GtkAboutDialog
|
||||
|
||||
* GtkShortcutWindow can now follow changes to accelerators
|
||||
|
||||
* GdkSeat and GdkDevice gained API for device tools, to support drawing tablets
|
||||
|
||||
* GtkInspector can now slow down (or speed up) animations. This functionality
|
||||
is also available via the GTK_SLOWDOWN environment variable
|
||||
|
||||
* GdkGLContext can now be instructed to use GLES
|
||||
|
||||
* CSS:
|
||||
- Inconsistencies in font size handling have been fixed
|
||||
- The font shorthand is now parsed according to the CSS spec
|
||||
|
||||
* Windows:
|
||||
- Clipboard handling has been optimized
|
||||
- The CSD implementation has been improved
|
||||
|
||||
* Wayland:
|
||||
- We print more debug information about pixel formats, outputs, etc
|
||||
- The unstable tablet protocol is now supported
|
||||
- Virtual modifier handling has been improved
|
||||
- Reduce jitter in keyboard repeat
|
||||
- Fix problems with multiple display connections
|
||||
|
||||
* Bugs fixed:
|
||||
573380 gtk_tree_model_iter_parent() fails if the same iterator is used...
|
||||
573380 gtk_tree_model_iter_parent() fails if the same iterator is used for...
|
||||
620065 Several problems related to recent files
|
||||
693077 GtkRecentManager doesn't send "changed" when file is deleted
|
||||
730821 RFE: add gtk_clipboard_get_selection()
|
||||
743746 Add GLES 2.0 (and/or 3.0) profile
|
||||
749405 GtkMenuSectionBox doesn't remove submenus when parent item is r...
|
||||
761651 glade previewer is resizing windows until it crashes gnome-shell
|
||||
763013 GDK W32: AeroSnap doesn't work on CSD windows
|
||||
763600 trashmonitor: change trash monitoring process
|
||||
763627 menu-traditional puts popover beneath the text editor widget
|
||||
749405 GtkMenuSectionBox doesn't remove submenus when parent item is removed
|
||||
761651 [Wayland] glade previewer is resizing windows until it crashes gnom...
|
||||
762756 keyboard focus problem on dismiss of menus under wayland
|
||||
763768 Wrong margin used for the sidebar separator
|
||||
763783 GDK W32: Erase hidden layered windows before showing them
|
||||
763850 Add License GTK_LICENSE_AGPL_3_0 to GtkLicense enum
|
||||
763851 GDK W32: show_window_menu() is not implemented
|
||||
763907 GDK W32: Clipboard handling is not tight enough
|
||||
763913 GDK W32: Not all relevant debug info is printed for events
|
||||
764022 (totem:4131): Gtk-WARNING **: Negative content width -200 (alloc...
|
||||
764060 opening a second nautilus while a delete operation is in progres...
|
||||
764170 [HighContrastInverse] “suqqested-action” is white on lightgrey
|
||||
764174 Configuration dialog is too small
|
||||
764203 Default background color for the 'textview border' node
|
||||
764204 Primary and secondary carets/cursors not distinguishable by default
|
||||
764210 Strange Background Color on Emacs
|
||||
764261 gtkplacesviewrow: untranslated "%s / %s available"
|
||||
764321 window: Fix gtk_window_set_geometry_hints documentation
|
||||
764374 Busy loop while "Displays" page is active
|
||||
764376 UI glitch when entering keyboard shortcut
|
||||
764378 gtk3-demo won't run without hicolor-icon-theme
|
||||
764395 nautilus crashed on double clicking 'other locations'
|
||||
764424 `Super` keybindings trigger without Super, on Wayland
|
||||
764585 Fix "format not a string literal" errors
|
||||
764664 Segfault when initializing WINTAB pressure-sensitive tablets (Wa...
|
||||
764686 build failure after "make distclean"
|
||||
764710 GtkListBox row CSS nodes do not reflect visual order
|
||||
764712 Build failure for Quartz backend in master branch due to gtkdnd-...
|
||||
764835 broadway: fix documentation, correct display port details
|
||||
764845 GDK: gdk_window_reparent creates circular reference in 'children...
|
||||
764825 [WAYLAND] Fn key resets scrolling
|
||||
764846 Code improvements in GtkApplication
|
||||
764863 GtkTrayIcon: fix uninitialised variable
|
||||
764879 Extract GtkApplicationAccels private class from GtkApplication
|
||||
764925 Fix trivial typo in GtkWidget
|
||||
764975 GTKShortcutWindow runtime changes to accelerator not reflected i...
|
||||
764996 GDK: Incorrect window size when creating window with position sp...
|
||||
765038 Adwaita & decorations
|
||||
765065 Wayland: Hover state stuck after mouse leaving the toplevel
|
||||
765066 GtkColorChooser looks like it can select multiple colors
|
||||
765100 GDK: gdk_window_reparent does not position/size a reparented win...
|
||||
765118 W32: gtk-builder-tool botches output encoding
|
||||
765122 Duplicate/missing string in gtkprintbackendcups
|
||||
765195 Visual Studio builds: Update how introspection is done
|
||||
765213 info bars nearly unreadable in backdrop state because of gray fo...
|
||||
765213 info bars nearly unreadable in backdrop state because of gray font ...
|
||||
765238 gtktexthandle should avoid connecting to GtkWidget::draw
|
||||
765259 Save Windows scancode inside GdkEvent
|
||||
765261 listbox: Page up/Down don't do anything with large rows
|
||||
765270 wayland: Leave existing mods on map_virtual_modifiers
|
||||
765284 debug: reduce runtime overhead in debug builds
|
||||
765486 builtinicon: avoid calculating font-metrics in vast majority of ...
|
||||
765471 CellRendererText shows edit entry in a wrong position for small cells
|
||||
765474 Wayland: Dialogs without transient parent crash the inspector
|
||||
765486 builtinicon: avoid calculating font-metrics in vast majority of cases
|
||||
765493 kineticscrolling: avoid stutter at tail of kinetic deceleration
|
||||
765496 Clean up gtklabel.c a bit
|
||||
765567 wayland: avoid jitter in keyboard repeat
|
||||
756570 gtkplacesview no longer provides guidance on address formats
|
||||
765474 Wayland: Dialogs without transient parent crash the inspector
|
||||
765565 Wayland: Inspector GtkLabel drag'n'drop crashes client
|
||||
765576 gtk+ leaks and hangs
|
||||
765577 gdk/dnd: Add missing signal parameter documentation
|
||||
765632 typo in GTK_STYLE_CLASS_LIST_ROW docs
|
||||
765567 wayland: avoid jitter in keyboard repeat
|
||||
765592 frametimings: reuse previous frame timing in common case
|
||||
765640 pixelcache: reuse existing timeout source when possible
|
||||
765644 Widget sizing problems with GtkProgressBar
|
||||
765742 GtkRedioButton and GtkCheckButton doesn't aligned right to left lan...
|
||||
765790 W32: configure does not tell which cairo version to use
|
||||
765907 [Wayland] Reversed scrolling GDK_SCROLL_UP/GDK_SCROLL_DOWN in Wayland
|
||||
765922 GtkScale labels extend past edge of widget and overlap neighboring ...
|
||||
765981 fts warning from tracker when searching for files with "-" in name
|
||||
766166 key bindings in gtk.css are ignored
|
||||
|
||||
* Translation uypdates:
|
||||
Brazilian Portuguese
|
||||
Latvian
|
||||
Polish
|
||||
Traditional Chinese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.20.3
|
||||
==================================
|
||||
|
||||
* Bugs fixed:
|
||||
764174 Configuration dialog is too small
|
||||
764203 Default background color for the 'textview border' node
|
||||
764204 Primary and secondary carets/cursors not distinguishable by default
|
||||
764261 gtkplacesviewrow: untranslated "%s / %s available"
|
||||
764374 Busy loop while "Displays" page is active
|
||||
764378 gtk3-demo won't run without hicolor-icon-theme
|
||||
764540 gtk_scrollable_get_border is missing annotations
|
||||
764585 Fix "format not a string literal" errors
|
||||
764686 build failure after "make distclean"
|
||||
764710 GtkListBox row CSS nodes do not reflect visual order
|
||||
764835 broadway: fix documentation, correct display port details
|
||||
764664 Segfault when initializing WINTAB pressure-sensitive tablets
|
||||
|
||||
* Translation updates:
|
||||
Bulgarian
|
||||
Catalan
|
||||
Esperanto
|
||||
German
|
||||
Greek
|
||||
Hungarian
|
||||
Norwegian bokmål
|
||||
Persian
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.20.2
|
||||
==================================
|
||||
|
||||
* Fix blue background in Emacs windows
|
||||
|
||||
* Fix a performance issue with excessive redraws
|
||||
|
||||
* Bugs fixed:
|
||||
763627 menu-traditional puts popover beneath the text editor widget
|
||||
763783 GDK W32: Erase hidden layered windows before showing them
|
||||
763851 GDK W32: show_window_menu() is not implemented
|
||||
764022 Negative content width -200 (allocation -200, extents 0x0) while...
|
||||
764170 [HighContrastInverse] “suqqested-action” is white on lightgrey
|
||||
764210 Strange Background Color on Emacs
|
||||
764321 window: Fix gtk_window_set_geometry_hints documentation
|
||||
764376 UI glitch when entering keyboard shortcut
|
||||
|
||||
* Translation updates:
|
||||
Dutch
|
||||
German
|
||||
Italian
|
||||
Lithuanian
|
||||
Persian
|
||||
Polish
|
||||
Scottish Gaelic
|
||||
Spanish
|
||||
Serbian
|
||||
Thai
|
||||
Traditional Chinese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.20.1
|
||||
|
||||
291
README.in
@@ -73,10 +73,291 @@ Patches should be in unified diff form. (The -up option to GNU diff)
|
||||
Even better are git-formatted patches. (Use git format-patch)
|
||||
|
||||
|
||||
Release notes
|
||||
=============
|
||||
Release notes for 3.20
|
||||
======================
|
||||
|
||||
Release notes for releases of GTK+ 3.x are part of the migration
|
||||
guide in the GTK+ documentation. See
|
||||
* The way theming works in GTK+ has been reworked fundamentally, to
|
||||
implement many more CSS features and make themes more expressive.
|
||||
As a result, custom CSS that is shipped with applications and third-
|
||||
party themes will need adjustments. Widgets now use element names much
|
||||
more than style classes; type names are no longer used in style matching.
|
||||
Every widget now documents the element names it has and the style classes
|
||||
it uses. The GTK+ inspector can also help with finding this information.
|
||||
|
||||
https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html
|
||||
* GTK+ now uses internal subobjects (also known as gadgets) for allocating
|
||||
and drawing widget parts. Applications that subclass GTK+ widgets may see
|
||||
warnings if they override the size_allocate vfunc and don't chain up.
|
||||
The proper way to subclass is to chain up in size_allocate. If you do not
|
||||
want to do that for some reason, you have to override the draw vfunc as
|
||||
well.
|
||||
|
||||
* Several fixes for window sizing and window placement with client-side
|
||||
decorations may affect applications that are saving and restoring window
|
||||
sizes. The recommended best practice for this which is known to work with
|
||||
client-side and server-side decorations and with older and newer versions
|
||||
of GTK+ is to use gtk_window_get_size() to save window sizes and
|
||||
gtk_window_set_default_size() to restore it.
|
||||
See https://wiki.gnome.org/HowDoI/SaveWindowState for a detailed example.
|
||||
|
||||
* Geometry handling in GtkWindow has been removed. If you are using the
|
||||
functions gtk_window_resize_to_geometry, gtk_window_set_default_geometry,
|
||||
gtk_window_parse_geometry or gtk_window_set_geometry_hints, you may need
|
||||
to make some changes to your code.
|
||||
|
||||
* GtkDrawingArea used to implicitly render the theme background before
|
||||
calling the ::draw handler. This is no longer the case. If you rely
|
||||
on having a theme-provided background, call gtk_render_background()
|
||||
from your ::draw handler.
|
||||
|
||||
* The GtkFileChooser interface prerequisite changed from GtkWidget
|
||||
to GObject, allowing non-widget implementations of this interface.
|
||||
This is a minor change in ABI, as applications are no longer guaranteed
|
||||
that a GtkFileChooser also supports all GtkWidget methods. However, all
|
||||
previously existing implementations still derive from GtkWidget, so no
|
||||
existing code should break.
|
||||
|
||||
* The way in which GtkLevelBar determines the offset to apply was a bit
|
||||
inconsistent in the past; this has been fixed. Applications that are using
|
||||
custom offsets should double-check that their levels look as expected.
|
||||
|
||||
Release notes for 3.18
|
||||
======================
|
||||
|
||||
* The GtkListBox model support that was introduced in 3.16 has been
|
||||
changed to no longer call gtk_widget_show_all on rows created by
|
||||
the create_widget_func. You need to manage the visibility of child
|
||||
widgets yourself in your create_widget_func.
|
||||
|
||||
* The alpha component of foreground colors that are applied to
|
||||
GtkCellRendererText is no longer ignored. If you don't want your
|
||||
text to be translucent, use opaque colors.
|
||||
|
||||
Release notes for 3.16
|
||||
======================
|
||||
|
||||
* GTK+ now includes an OpenGL rendering widget. To support GL on various
|
||||
platforms, GTK+ uses libepoxy.
|
||||
|
||||
* GTK+ no longer uses gtk-update-icon-cache during its build. The
|
||||
--enable-gtk2-dependency configure option has been removed.
|
||||
|
||||
* The introspection annotations for the x and y parameters of
|
||||
GtkMenuPositionFunc have been corrected from 'out' to 'inout'.
|
||||
If you are using such a function from language-bindings, this
|
||||
may require adjustments.
|
||||
|
||||
* The lookup order for actions that are activated via keyboard
|
||||
accelerators has been changed to start at the currently focused
|
||||
widget. If your application is making use fo nested action groups
|
||||
via gtk_widget_insert_action_group, you may want to check that
|
||||
this change does not upset your accelerators.
|
||||
|
||||
* The GtkScrollable interface has gained a new vfunc, get_border,
|
||||
that is used to position overshoot and undershoot indications that
|
||||
are drawn over the content by GtkScrolledWindow. Unless your scrollable
|
||||
has non-scrolling parts similar to treeview headers, there is no need
|
||||
to implement this vfunc.
|
||||
|
||||
* The GtkSearchEntry widget has gained a number of new signals that
|
||||
are emitted when certain key sequences are seen. In particular, it
|
||||
now handles the Escape key and emits ::stop-search. Applications that
|
||||
expect to handle Escape themselves will need to be updated.
|
||||
|
||||
Release notes for 3.14
|
||||
======================
|
||||
|
||||
* A new state, GTK_STATE_FLAG_CHECKED, has been added for checked states
|
||||
of radio and check buttons and menuitems. Applications that are using
|
||||
GTK+ styles without widgets will need adjustments.
|
||||
|
||||
* Adwaita is now the default theme on all platforms.
|
||||
|
||||
* The icon theme code has become a little pickier about sizes and is not
|
||||
automatically scaling icons beyond the limits defined in the icon theme
|
||||
unless explicitly asked to do so with GTK_ICON_LOOKUP_FORCE_SIZE.
|
||||
|
||||
* GTK+ now includes an interactive debugger which can be activated with
|
||||
the keyboard shortcuts Ctrl-Shift-d or Ctrl-Shift-i. If these shortcuts
|
||||
interfere with application keybindings, they can be disabled with the
|
||||
setting org.gtk.Settings.Debug.enable-inspector-keybinding.
|
||||
|
||||
* Most widgets have been ported to use the new gesture framework internally
|
||||
for event handling. Traditional event handlers in derived widgets are still
|
||||
being called.
|
||||
|
||||
* Using GTK+ under X11 without the X Render extension has been observed
|
||||
to be problematic. This combination is using code paths in cairo and
|
||||
graphics drivers which are rarely tested and likely buggy.
|
||||
|
||||
* GtkTextView is now using a pixel-cache internally, and is drawing
|
||||
a background underneath the text. This can cause problems for applications
|
||||
which assumed that they could draw things below and above the text
|
||||
by chaining up in the ::draw implementation of their GtkTextView subclass.
|
||||
As a short-term workaround, you can make the application apply a
|
||||
custom theme to the text view with a transparent background. For
|
||||
a proper fix, use the new ::draw_layer vfunc.
|
||||
|
||||
Release notes for 3.12
|
||||
======================
|
||||
|
||||
* GtkWidget had a hack where if opacity is 0.999 we set up an opacity
|
||||
group when rendering the widget. This is no longer needed in 3.10,
|
||||
and GtkStack doesn't use it anymore. It has been removed in 3.12.
|
||||
GdStack is using it, so applications should be ported from GdStack
|
||||
to GtkStack in 3.12.
|
||||
|
||||
* GtkHeaderBar in 3.10 was not ordering its pack-end children in
|
||||
the right way. This has been fixed in 3.12. Applications which
|
||||
pack multiple widgets at the end of a headerbar will have to
|
||||
be updated.
|
||||
|
||||
* gtk_text_view_add_child_in_window has changed behaviour a bit.
|
||||
It now always positions the child in buffer coordinates, where
|
||||
it used to inconsistently scroll with the buffer but then go
|
||||
reposition to a window-relative position on redraw.
|
||||
|
||||
* A number of container widgets have been made more compliant with
|
||||
the uniform CSS rendering model by making them render backgrounds
|
||||
and borders. This may require some adjustments in applications that
|
||||
were making assumptions about containers never rendering backgrounds.
|
||||
|
||||
Release notes for 3.10
|
||||
======================
|
||||
|
||||
* GDK has been changed to allow only a single screen per display.
|
||||
Only the X11 backend had multiple screens before, and multi-screen
|
||||
setups (not multi-monitor!) are very rare nowadays. If you really
|
||||
need multiple X screens, open them as separate displays.
|
||||
|
||||
* The behavior of GtkBox::expand has been changed to never propagate
|
||||
up. Previously, this was happening inconsistently. If you want the
|
||||
expand to propagate, use the GtkWidget h/v expand properties.
|
||||
If you experience sizing problems with widgets in ported code,
|
||||
carefully check the expand and fill flags of your boxes.
|
||||
|
||||
* GtkBin no longer provides default implementations for
|
||||
get_height_for_width, subclasses now have to provide their own
|
||||
implementation if they need height-for-width functionality.
|
||||
|
||||
* Widget state propagation has been changed. Historically, all of
|
||||
active, prelight, selected, insensitive, inconsistent and backdrop
|
||||
have been propagated to children. This has now been restricted
|
||||
to just the insensitive and backdrop states. This mostly affects
|
||||
theming.
|
||||
|
||||
* The way widget drawing happens has changed. Earlier versions handled
|
||||
one expose event per GdkWindow, each with a separate cairo_t. Now we
|
||||
only handle the expose event on the toplevel and reuse the same
|
||||
cairo_t (with the right translation and clipping) for the entire
|
||||
widget hierarchy, recursing down via the GtkWidget::draw signal.
|
||||
Having all rendering in the same call tree allows effects like
|
||||
opacity and offscreen rendering of entire widget sub-hierarchies.
|
||||
Generally this should not require any changes in widgets, but
|
||||
code looking at e.g. the current expose event may see different
|
||||
behavior than before.
|
||||
|
||||
* The Gtk+ scrolling implementation has changed. gdk_window_scroll()
|
||||
and gdk_window_move_region() no longer copy the region on the
|
||||
window, but rather invalidate the entire scrolled region. This is
|
||||
slightly slower, but allowed us to implement a offscreen surface
|
||||
scrolling method which better fits modern hardware. Most scrolling
|
||||
widgets in Gtk+ have been converted to use this model for scrolling,
|
||||
but external widgets implementing scrolling using GdkWindow may see
|
||||
some slowdown.
|
||||
|
||||
Release notes for 3.8
|
||||
=====================
|
||||
|
||||
* GtkIconInfo has changed from being a boxed type to a GObject. This
|
||||
is technically an ABI change, but basically all existing code
|
||||
will keep working if its used as a boxed type, and its not
|
||||
possible to instantiate GtkIconInfos outside Gtk, so this is not
|
||||
expected to be a big problem.
|
||||
|
||||
Release notes for 3.6
|
||||
=====================
|
||||
|
||||
* The accessibility bridge code that exports accessible objects
|
||||
on the bus is now used by default; atk-bridge has been converted
|
||||
into a library that GTK+ links against. To void the linking,
|
||||
pass --without-atk-bridge when configuring GTK+.
|
||||
|
||||
* GDK threading support has been deprecated. It is recommended to
|
||||
use g_idle_add(), g_main_context_invoke() and similar funtions
|
||||
to make all GTK+ calls from the main thread.
|
||||
|
||||
* GTK+ now follows the XDG Base Directory specification for
|
||||
user configuration and data files. In detail,
|
||||
* $XDG_CONFIG_HOME/gtk-3.0/custom-papers is the new location
|
||||
for $HOME/.gtk-custom-papers
|
||||
* $XDG_CONFIG_HOME/gtk-3.0/bookmarks is the new location
|
||||
for $HOME/.gtk-bookmarks
|
||||
* $XDG_DATA_HOME/themes is preferred over $HOME/.themes
|
||||
* $XDG_DATA_HOME/icons is preferred over $HOME/.icons.
|
||||
Existing files from the old location will still be read
|
||||
if the new location does not exist.
|
||||
|
||||
* $HOME/.gtk-3.0 is no longer in the default module load path.
|
||||
If you want to load modules from there, add it to the GTK_PATH
|
||||
environment variable.
|
||||
|
||||
Release notes for 3.4
|
||||
=====================
|
||||
|
||||
* Scroll events have been separated from button events, and smooth
|
||||
scrolling has been added with a separate event mask. Widgets now
|
||||
need to have either GDK_SCROLL_MASK or GDK_SMOOTH_SCROLL_MASK in
|
||||
their event mask to receive scroll events. In addition, the
|
||||
GdkScrollDirection enumeration has gained a new member,
|
||||
GDK_SCROLL_SMOOTH, so switch statements will have to be amended
|
||||
to cover this case.
|
||||
|
||||
* GTK+ now uses <Primary> instead of <Control> in keyboard accelerators,
|
||||
for improved cross-platform handling. This should not affect
|
||||
applications, unless they parse or create these accelerator
|
||||
manually.
|
||||
|
||||
* The tacit assumption that the Alt key corresponds to the MOD1
|
||||
modifier under X11 is now a hard requirement.
|
||||
|
||||
* The beagle search backend for the file chooser has been dropped.
|
||||
Tracker is the only supported search backend on Linux now.
|
||||
|
||||
* GtkNotebook has been changed to destroy its action widgets when
|
||||
it gets destroyed itself. If your application is using action
|
||||
widgets in notebooks, you may have to adjust your code to take
|
||||
this into account.
|
||||
|
||||
* GtkApplication no longer uses the gtk mainloop wrappers, so
|
||||
it is no longer possible to use gtk_main_quit() to stop it.
|
||||
|
||||
* The -uninstalled variants of the pkg-config files have been dropped.
|
||||
|
||||
* Excessive dependencies have been culled from Requires: lines
|
||||
in .pc files. Dependent modules may have to declare dependencies
|
||||
that there were getting 'for free' in the past.
|
||||
|
||||
Release notes for 3.2
|
||||
=====================
|
||||
|
||||
* The accessible implementations for GTK+ widgets have been integrated
|
||||
into libgtk itself, and the gail module does not exist anymore. This
|
||||
change should not affect applications very much.
|
||||
|
||||
Release notes for 3.0
|
||||
=====================
|
||||
|
||||
* GTK+ 3 is a major new version of GTK+, which is parallel installable
|
||||
with GTK+ 2.x. For information about porting applications from GTK+ 2.x
|
||||
to GTK+ 3, see the file:
|
||||
|
||||
docs/reference/gtk/html/migrating.html
|
||||
|
||||
Or online at:
|
||||
|
||||
http://library.gnome.org/devel/gtk/3.0/migrating.html
|
||||
|
||||
* Note that the library sonames in this release have been changed from
|
||||
libgtk-3.0 and libgdk-3.0 to libgtk-3 and libgdk-3, to prevent the
|
||||
library versions from going backwards, compared to the 2.90/91/99
|
||||
releases. Applications will have to be recompiled.
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
sed 's/v100/v$(MSVC_VER)0/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \
|
||||
fi
|
||||
|
||||
%.props: $(top_builddir)/build/win32/vs10/Makefile
|
||||
%.props:
|
||||
if test -e $(top_srcdir)/build/win32/vs10/$@; then \
|
||||
sed 's/<VSVer>10<\/VSVer>/<VSVer>$(MSVC_VER)<\/VSVer>/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \
|
||||
else \
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
SUBDIRS = win32
|
||||
SUBDIRS = \
|
||||
win32
|
||||
|
||||
EXTRA_DIST += \
|
||||
msvcfiles.py \
|
||||
gen-file-list-gtk.py \
|
||||
detectenv_msvc.mak \
|
||||
introspection-msvc.mak \
|
||||
gtk-introspection-msvc.mak.in \
|
||||
gtk-introspection-msvc.mak
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
# Author: Fan, Chun-wei
|
||||
# Common autotools file for constructing the g-ir-scanner and
|
||||
# g-ir-compiler command lines for Visual Studio builds.
|
||||
|
||||
# This is copied from $(srcroot)/build from the gobject-introspection
|
||||
# project, which may be included in projects that support both
|
||||
# Visual Studio builds and introspection.
|
||||
|
||||
# * Input variables:
|
||||
#
|
||||
# MSVC_INTROSPECT_GIRS - List of .gir's that should be built
|
||||
# in the NMake Makefiles
|
||||
#
|
||||
# * Simple tutorial
|
||||
#
|
||||
# Add this to Makefile.am where your library/program is built:
|
||||
# (Either YourLib_1_0_gir_MSVC_LIBS or YourLib_1_0_gir_MSVC_PROGRAM
|
||||
# is required unless --headers-only is specified in
|
||||
# YourLib_1_0_gir__MSVC_SCANNERFLAGS)
|
||||
#
|
||||
# include $(top_srcdir)/build/Makefile.msvc-introspection
|
||||
# MSVC_INTROSPECT_GIRS = YourLib-1.0.gir
|
||||
# YourLib_1_0_gir_NAMESPACE = YourLib # This is optional
|
||||
# YourLib_1_0_gir_VERSION = 1.0 # This is optional
|
||||
# YourLib_1_0_gir_MSVC_LIBS = yourlib-1.0
|
||||
# YourLib_1_0_gir_MSVC_FILES = $(libyourlib_1_0_SOURCES)
|
||||
# YourLib_1_0_gir_MSVC_PROGRAM = YourProgram
|
||||
# YourLib_1_0_gir_MSVC_PACKAGES = (Dependent .pc files)
|
||||
# YourLib_1_0_gir_MSVC_INCLUDE_GIRS = (Dependent external .gir's)
|
||||
# YourLiv_1_0_gir_MSVC_EXPORT_PACKAGES = (Packages exported by this .gir)
|
||||
|
||||
# Private functions
|
||||
|
||||
## Transform the MSVC project filename (no filename extensions) to something which can reference through a variable
|
||||
## without automake/make complaining, eg Gtk-2.0 -> Gtk_2_0
|
||||
_gir_name=$(subst /,_,$(subst -,_,$(subst .,_,$(1))))
|
||||
|
||||
# Namespace and Version is either fetched from the gir filename
|
||||
# or the _NAMESPACE/_VERSION variable combo
|
||||
_gir_namespace_msvc = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
|
||||
_gir_version_msvc = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
|
||||
_typelib_basename_msvc = $(_gir_namespace_msvc)'-'$(_gir_version_msvc)
|
||||
|
||||
# _PROGRAM is an optional variable which needs its own --program argument
|
||||
_gir_program_msvc = $(if $($(_gir_name)_MSVC_PROGRAM),--program=$($(_gir_name)_MSVC_PROGRAM))
|
||||
|
||||
# Deduce the sub-folder from $(srcroot) where the sources reside in
|
||||
_gir_source_path_raw_msvc:=$(subst $(abs_top_srcdir),,$(abs_srcdir))
|
||||
_gir_source_path_msvc=$(subst /,\\,$(_gir_source_path_raw_msvc))
|
||||
_gir_source_subdir_int_msvc=$(subst \\\\,\\,\\$(_gir_source_path_msvc)\\)
|
||||
_gir_source_subdir_msvc=$(subst \\.\\,\\,$(_gir_source_subdir_int_msvc))
|
||||
|
||||
_gir_files_raw_msvc=$(subst /,\\,$($(_gir_name)_MSVC_FILES))
|
||||
_gir_files_msvc=$(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_gir_source_path_msvc)\\,\\,$(_gir_files_raw_msvc))))
|
||||
|
||||
# Create a list of items for:
|
||||
# - Libraries
|
||||
# - Packages
|
||||
# - GIRs to include
|
||||
# - packages to export
|
||||
|
||||
_gir_libraries_msvc = $(foreach lib,$($(_gir_name)_MSVC_LIBS),--library=$(lib))
|
||||
_gir_packages_msvc = $(foreach pkg,$($(_gir_name)_MSVC_PACKAGES),--pkg=$(pkg))
|
||||
_gir_includes_msvc = $(foreach include,$($(_gir_name)_MSVC_INCLUDE_GIRS),--include=$(include))
|
||||
_gir_export_packages_msvc = $(foreach pkg,$($(_gir_name)_MSVC_EXPORT_PACKAGES),--pkg-export=$(pkg))
|
||||
|
||||
#
|
||||
# Create NMake Makefile Sections for Building Introspection files
|
||||
# from autotools files
|
||||
# $(1) - File Name of the .gir that is to be generated
|
||||
#
|
||||
|
||||
define gir-nmake-builder
|
||||
|
||||
# Basic sanity check, to make sure required variables are set
|
||||
$(if $($(_gir_name)_MSVC_FILES),,$(error Need to define $(_gir_name)_MSVC_FILES))
|
||||
$(if $(or $(findstring --header-only,$($(_gir_name)_MSVC_SCANNERFLAGS)),
|
||||
$($(_gir_name)_MSVC_LIBS),
|
||||
$($(_gir_name)_MSVC_PROGRAM)),,
|
||||
$(error Need to define $(_gir_name)_MSVC_LIBS or $(_gir_name)_MSVC_PROGRAM))
|
||||
|
||||
$(top_builddir)/build/win32/$(_gir_name)_list:
|
||||
for F in $(_gir_files_msvc); do \
|
||||
case $$$$F in \
|
||||
*.c|*.cpp|*.cc|*.cxx|*.h|*.hpp|*.hh|*.hxx) \
|
||||
echo '..\..'$(_gir_source_subdir_msvc)$$$$F >>$(top_builddir)/build/win32/$(_gir_name)_list \
|
||||
;; \
|
||||
esac; \
|
||||
done
|
||||
|
||||
$(top_builddir)/build/win32/$(1).msvc.introspect:
|
||||
-$(RM) $(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
|
||||
# Assemble the Command to Run g-ir-scanner
|
||||
echo $(1)': '$(_gir_name)'_list '$($(_gir_name)_MSVC_GIR_DEPS)>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' @-echo Generating $$$$@...'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' $$$$(PYTHON) $$$$(G_IR_SCANNER) \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --verbose -no-libtool \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --namespace='$(_gir_namespace_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --nsversion='$(_gir_version_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(_gir_packages_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(_gir_libraries_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(_gir_program_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --add-include-path=$$$$(G_IR_INCLUDEDIR) \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(_gir_includes_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(_gir_export_packages_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --cflags-begin \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$($(_gir_name)_MSVC_CFLAGS)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --cflags-end \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$($(_gir_name)_MSVC_SCANNERFLAGS)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --filelist='$(_gir_name)'_list \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' -o $$$$@'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo '' >>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
|
||||
# Finally Assemble the Command to Compile the generated .gir
|
||||
echo '$(_typelib_basename_msvc).typelib: '$(_typelib_basename_msvc)'.gir'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' @-echo Compiling $$$$@...'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' $$$$(G_IR_COMPILER) \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' --includedir=. --debug --verbose \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' '$(1)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo ' -o $$$$@'>>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
echo '' >>$(top_builddir)/build/win32/$(1).msvc.introspect
|
||||
endef
|
||||
|
||||
$(foreach gir,$(MSVC_INTROSPECT_GIRS),$(eval $(call gir-nmake-builder,$(gir))))
|
||||
@@ -60,17 +60,10 @@ $(1).sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj
|
||||
$(1).vs10.sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj
|
||||
$(1).vs10.sourcefiles.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj
|
||||
|
||||
$(top_builddir)/build/win32/vs9/$(1).vcproj: Makefile
|
||||
$(top_builddir)/build/win32/vs9/$(1).vcproj:
|
||||
-$(RM) $(top_builddir)/build/win32/vs9/$(1).vcproj
|
||||
-$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj
|
||||
-$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj.filters
|
||||
-$(RM) $(top_builddir)/build/win32/vs11/$(1).vcxproj
|
||||
-$(RM) $(top_builddir)/build/win32/vs11/$(1).vcxproj.filters
|
||||
-$(RM) $(top_builddir)/build/win32/vs12/$(1).vcxproj
|
||||
-$(RM) $(top_builddir)/build/win32/vs12/$(1).vcxproj.filters
|
||||
-$(RM) $(top_builddir)/build/win32/vs14/$(1).vcxproj
|
||||
-$(RM) $(top_builddir)/build/win32/vs14/$(1).vcxproj.filters
|
||||
|
||||
|
||||
for F in $(_proj_files); do \
|
||||
case $$$$F in \
|
||||
@@ -94,7 +87,7 @@ $(top_builddir)/build/win32/vs9/$(1).vcproj: Makefile
|
||||
|
||||
$(top_builddir)/build/win32/vs10/$(1).vs10.headers: $(top_builddir)/build/win32/vs9/$(1).headers
|
||||
|
||||
$(top_builddir)/build/win32/vs9/$(1).headers: Makefile
|
||||
$(top_builddir)/build/win32/vs9/$(1).headers:
|
||||
-$(RM) $(top_builddir)/build/win32/vs9/$(1).headers
|
||||
-$(RM) $(top_builddir)/build/win32/vs10/$(1).vs10.headers
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
# Common NMake Makefile module for checking the build environment
|
||||
# This can be copied from $(glib_srcroot)\build\win32 for GNOME items
|
||||
# that support MSVC builds and introspection under MSVC, and can be used
|
||||
# for building test programs as well.
|
||||
|
||||
# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
|
||||
# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
|
||||
!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
|
||||
@@ -40,8 +35,6 @@ VSVER = 10
|
||||
VSVER = 11
|
||||
!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
|
||||
VSVER = 12
|
||||
!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
|
||||
VSVER = 14
|
||||
!else
|
||||
VSVER = 0
|
||||
!endif
|
||||
@@ -49,24 +42,20 @@ VSVER = 0
|
||||
!if "$(VSVER)" == "0"
|
||||
MSG = ^
|
||||
This NMake Makefile set supports Visual Studio^
|
||||
9 (2008) through 14 (2015). Your Visual Studio^
|
||||
9 (2008) through 12 (2013). Your Visual Studio^
|
||||
version is not supported.
|
||||
!error $(MSG)
|
||||
!endif
|
||||
|
||||
VALID_CFGSET = FALSE
|
||||
!if "$(CFG)" == "release" || "$(CFG)" == "debug" || "$(CFG)" == "Release" || "$(CFG)" == "Debug"
|
||||
!if "$(CFG)" == "release" || "$(CFG)" == "debug"
|
||||
VALID_CFGSET = TRUE
|
||||
!endif
|
||||
|
||||
# We want debugging symbols logged for all builds,
|
||||
# using .pdb files for release builds
|
||||
CFLAGS_BASE = /Zi
|
||||
|
||||
!if "$(CFG)" == "release" || "$(CFG)" == "Release"
|
||||
CFLAGS_ADD = /MD /O2 $(CFLAGS_BASE)
|
||||
!if "$(CFG)" == "release"
|
||||
CFLAGS_ADD = /MD /O2
|
||||
!else
|
||||
CFLAGS_ADD = /MDd /Od $(CFLAGS_BASE)
|
||||
CFLAGS_ADD = /MDd /Od /Zi
|
||||
!endif
|
||||
|
||||
!if "$(PLAT)" == "x64"
|
||||
100
build/gen-file-list-gtk.py
Normal file
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/python
|
||||
# vim: encoding=utf-8
|
||||
# Generate the file lists for processing with g-ir-scanner
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import string
|
||||
import subprocess
|
||||
import optparse
|
||||
|
||||
from msvcfiles import read_vars_from_AM
|
||||
|
||||
def gen_gdk_filelist(srcroot, subdir, dest):
|
||||
vars = read_vars_from_AM(os.path.join(srcroot, subdir, 'Makefile.am'),
|
||||
vars = {},
|
||||
conds = {},
|
||||
filters = ['gdk_h_sources', 'gdk_c_sources'])
|
||||
|
||||
vars['gdk_enums'] = 'gdkenumtypes.c gdkenumtypes.h'
|
||||
|
||||
files = vars['gdk_h_sources'].split() + \
|
||||
vars['gdk_c_sources'].split() + \
|
||||
vars['gdk_enums'].split()
|
||||
|
||||
sources = [i for i in files if (i != 'gdkkeysyms-compat.h')]
|
||||
|
||||
with open(dest, 'w') as d:
|
||||
for i in sources:
|
||||
d.write(srcroot + '\\' + subdir + '\\' + i.replace('/', '\\') + '\n')
|
||||
|
||||
def gen_gdkwin32_filelist(srcroot, subdir, dest):
|
||||
vars = read_vars_from_AM(os.path.join(srcroot, subdir, 'Makefile.am'),
|
||||
vars = {},
|
||||
conds = {'HAVE_INTROSPECTION': True,
|
||||
'OS_WIN32': True},
|
||||
filters = ['w32_introspection_files'])
|
||||
|
||||
files = vars['w32_introspection_files'].split()
|
||||
|
||||
with open(dest, 'w') as d:
|
||||
for i in files:
|
||||
d.write(srcroot + '\\' + subdir + '\\' + i.replace('/', '\\') + '\n')
|
||||
|
||||
def gen_gtk_filelist(srcroot, subdir, dest):
|
||||
vars = read_vars_from_AM(os.path.join(srcroot, 'gtk', 'Makefile.am'),
|
||||
vars = {},
|
||||
conds = {'USE_WIN32': True,
|
||||
'USE_QUARTZ': False,
|
||||
'USE_X11': False,
|
||||
'USE_EXTERNAL_ICON_CACHE': False},
|
||||
filters = ['gtkinclude_HEADERS',
|
||||
'a11yinclude_HEADERS',
|
||||
'deprecatedinclude_HEADERS',
|
||||
'gtk_base_c_sources',
|
||||
'gtk_clipboard_dnd_c_sources'])
|
||||
|
||||
vars_depr = read_vars_from_AM(os.path.join(srcroot, 'gtk', 'deprecated', 'Makefile.inc'),
|
||||
vars = {},
|
||||
conds = {},
|
||||
filters = ['deprecated_h_sources',
|
||||
'deprecated_c_sources'])
|
||||
|
||||
vars_a11y = read_vars_from_AM(os.path.join(srcroot, 'gtk', 'a11y', 'Makefile.inc'),
|
||||
vars = {},
|
||||
conds = {},
|
||||
filters = ['a11y_h_sources',
|
||||
'a11y_c_sources'])
|
||||
|
||||
vars['gtk_other_src'] = 'gtkprintoperation-win32.c gtktypebuiltins.h gtktypebuiltins.c'
|
||||
|
||||
files = vars['gtkinclude_HEADERS'].split() + \
|
||||
vars_a11y['a11y_h_sources'].split() + \
|
||||
vars_depr['deprecated_h_sources'].split() + \
|
||||
vars['gtk_base_c_sources'].split() + \
|
||||
vars_a11y['a11y_c_sources'].split() + \
|
||||
vars_depr['deprecated_c_sources'].split() + \
|
||||
vars['gtk_other_src'].split()
|
||||
|
||||
sources = [i for i in files \
|
||||
if not (i.endswith('private.h')) \
|
||||
and i != 'gtktextdisplay.h' \
|
||||
and i != 'gtktextlayout.h' \
|
||||
and i != 'gtkx.h']
|
||||
|
||||
with open(dest, 'w') as d:
|
||||
for i in sources:
|
||||
d.write(srcroot + '\\' + subdir + '\\' + i.replace('/', '\\') + '\n')
|
||||
|
||||
def main(argv):
|
||||
srcroot = '..'
|
||||
subdir_gdk = 'gdk'
|
||||
subdir_gtk = 'gtk'
|
||||
|
||||
gen_gdk_filelist(srcroot, subdir_gdk, 'gdk_list')
|
||||
gen_gdkwin32_filelist(srcroot, subdir_gdk, 'gdkwin32_list')
|
||||
gen_gtk_filelist(srcroot, subdir_gtk, 'gtk_list')
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
101
build/gtk-introspection-msvc.mak.in
Normal file
@@ -0,0 +1,101 @@
|
||||
# NMake Makefile to build Introspection Files for GTK+
|
||||
|
||||
!include detectenv_msvc.mak
|
||||
|
||||
APIVERSION = 3.0
|
||||
|
||||
CHECK_PACKAGE = gdk-pixbuf-2.0 atk pangocairo gio-2.0
|
||||
|
||||
built_install_girs = Gdk-$(APIVERSION).gir GdkWin32-$(APIVERSION).gir Gtk-$(APIVERSION).gir
|
||||
built_install_typelibs = Gdk-$(APIVERSION).typelib GdkWin32-$(APIVERSION).typelib Gtk-$(APIVERSION).typelib
|
||||
|
||||
!include introspection-msvc.mak
|
||||
|
||||
!if "$(BUILD_INTROSPECTION)" == "TRUE"
|
||||
all: setgirbuildnev $(built_install_girs) $(built_install_typelibs)
|
||||
|
||||
gdk_list gdkwin32_list gtk_list:
|
||||
@-echo Generating Filelist to Introspect for GDK/GTK...
|
||||
$(PYTHON2) gen-file-list-gtk.py
|
||||
|
||||
setgirbuildnev:
|
||||
@set CC=$(CC)
|
||||
@set PYTHONPATH=$(BASEDIR)\lib\gobject-introspection
|
||||
@set PATH=win32\vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(BASEDIR)\bin;$(PATH)
|
||||
@set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
|
||||
@set LIB=win32\vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
|
||||
|
||||
Gdk-$(APIVERSION).gir: gdk_list
|
||||
@-echo Generating Gdk-$(APIVERSION).gir...
|
||||
$(PYTHON2) $(G_IR_SCANNER) --verbose -I.. -I..\gdk \
|
||||
-I$(BASEDIR)\include\glib-2.0 -I$(BASEDIR)\lib\glib-2.0\include \
|
||||
-I$(BASEDIR)\include\pango-1.0 -I$(BASEDIR)\include\atk-1.0 \
|
||||
-I$(BASEDIR)\include\gdk-pixbuf-2.0 -I$(BASEDIR)\include \
|
||||
--namespace=Gdk --nsversion=3.0 \
|
||||
--include=Gio-2.0 --include=GdkPixbuf-2.0 \
|
||||
--include=Pango-1.0 --include=cairo-1.0 \
|
||||
--no-libtool --library=gdk-3.0 \
|
||||
--reparse-validate --add-include-path=$(G_IR_INCLUDEDIR) --add-include-path=. \
|
||||
--pkg-export gdk-3.0 --warn-all --c-include="gdk/gdk.h" \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" -DGDK_COMPILATION \
|
||||
--filelist=gdk_list -o $@
|
||||
|
||||
GdkWin32-$(APIVERSION).gir: gdkwin32_list
|
||||
@-echo Generating GdkWin32-$(APIVERSION).gir...
|
||||
$(PYTHON2) $(G_IR_SCANNER) --verbose -I.. -I..\gdk \
|
||||
-I$(BASEDIR)\include\glib-2.0 -I$(BASEDIR)\lib\glib-2.0\include \
|
||||
-I$(BASEDIR)\include\pango-1.0 -I$(BASEDIR)\include\atk-1.0 \
|
||||
-I$(BASEDIR)\include\gdk-pixbuf-2.0 -I$(BASEDIR)\include \
|
||||
--namespace=GdkWin32 --nsversion=3.0 \
|
||||
--include=Gio-2.0 --include=GdkPixbuf-2.0 \
|
||||
--include=Pango-1.0 --include-uninstalled=./Gdk-$(APIVERSION).gir \
|
||||
--no-libtool --library=gdk-3.0 \
|
||||
--reparse-validate --add-include-path=$(G_IR_INCLUDEDIR) --add-include-path=. \
|
||||
--pkg-export gdk-win32-3.0 --warn-all --c-include="gdk/gdkwin32.h" \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" -DGDK_COMPILATION \
|
||||
--filelist=gdkwin32_list -o $@
|
||||
|
||||
Gtk-$(APIVERSION).gir: gtk_list
|
||||
$(PYTHON2) $(G_IR_SCANNER) --verbose -I.. -I..\gtk -I..\gdk \
|
||||
-I$(BASEDIR)\include\glib-2.0 -I$(BASEDIR)\lib\glib-2.0\include \
|
||||
-I$(BASEDIR)\include\pango-1.0 -I$(BASEDIR)\include\atk-1.0 \
|
||||
-I$(BASEDIR)\include\gdk-pixbuf-2.0 -I$(BASEDIR)\include \
|
||||
--namespace=Gtk --nsversion=3.0 \
|
||||
--include=Atk-1.0 \
|
||||
--include-uninstalled=./Gdk-$(APIVERSION).gir \
|
||||
--no-libtool --library=gtk-3.0 --library=gdk-3.0 \
|
||||
--reparse-validate --add-include-path=$(G_IR_INCLUDEDIR) --add-include-path=. \
|
||||
--pkg-export gtk+-3.0 --warn-all --c-include="gtk/gtkx.h" \
|
||||
-DG_LOG_DOMAIN=\"Gtk\" -DGTK_LIBDIR=\"/dummy/lib\" \
|
||||
-DGTK_DATADIR=\"/dummy/share\" -DGTK_DATA_PREFIX=\"/dummy\" \
|
||||
-DGTK_SYSCONFDIR=\"/dummy/etc\" -DGTK_VERSION=\"@GTK_VERSION@\" \
|
||||
-DGTK_BINARY_VERSION=\"3.0.0\" -DGTK_HOST=\"i686-pc-vs$(VSVER)\" \
|
||||
-DGTK_COMPILATION -DGTK_PRINT_BACKENDS=\"file\" \
|
||||
-DGTK_PRINT_PREVIEW_COMMAND=\"undefined-gtk-print-preview-command\" \
|
||||
-DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED \
|
||||
-DINCLUDE_IM_am_et -DINCLUDE_IM_cedilla -DINCLUDE_IM_cyrillic_translit \
|
||||
-DINCLUDE_IM_ime -DINCLUDE_IM_inuktitut -DINCLUDE_IM_ipa \
|
||||
-DINCLUDE_IM_multipress -DINCLUDE_IM_thai -DINCLUDE_IM_ti_er \
|
||||
-DINCLUDE_IM_ti_et -DINCLUDE_IM_viqr --filelist=gtk_list \
|
||||
-o $@
|
||||
|
||||
$(built_install_typelibs): $(built_install_girs)
|
||||
@-echo Compiling $*.typelib...
|
||||
@-$(G_IR_COMPILER) --includedir=. --debug --verbose $*.gir -o $@
|
||||
|
||||
install-introspection: setgirbuildnev $(built_install_girs) $(built_install_typelibs)
|
||||
@-copy *.gir $(G_IR_INCLUDEDIR)
|
||||
@-copy /b *.typelib $(G_IR_TYPELIBDIR)
|
||||
|
||||
!else
|
||||
all:
|
||||
@-echo $(ERROR_MSG)
|
||||
!endif
|
||||
|
||||
clean:
|
||||
@-del /f/q *.typelib
|
||||
@-del /f/q *.gir
|
||||
@-del /f/q gtk_list
|
||||
@-del /f/q gdkwin32_list
|
||||
@-del /f/q gdk_list
|
||||
@-del /f/q *.pyc
|
||||
65
build/introspection-msvc.mak
Normal file
@@ -0,0 +1,65 @@
|
||||
# Common Utility NMake Makefile Template
|
||||
# Used to Generate Introspection files for various Projects
|
||||
|
||||
# Can Override with env vars as needed
|
||||
# You will need to have built gobject-introspection for this to work.
|
||||
# Change or pass in or set the following to suit your environment
|
||||
|
||||
BASEDIR = ..\..\vs$(VSVER)\$(PLAT)
|
||||
GIR_SUBDIR = share\gir-1.0
|
||||
GIR_TYPELIBDIR = lib\girepository-1.0
|
||||
G_IR_SCANNER = $(BASEDIR)\bin\g-ir-scanner
|
||||
G_IR_COMPILER = $(BASEDIR)\bin\g-ir-compiler.exe
|
||||
G_IR_INCLUDEDIR = $(BASEDIR)\$(GIR_SUBDIR)
|
||||
G_IR_TYPELIBDIR = $(BASEDIR)\$(GIR_TYPELIBDIR)
|
||||
|
||||
# Note: The PYTHON2 must be a Python 2.6.x or 2.7.x Interpretor!
|
||||
# Either having python.exe from Python 2.6.x/2.7.x in your PATH will work
|
||||
# or passing in PYTHON2=<full path to your Python 2.6.x/2.7.x interpretor> will do
|
||||
|
||||
# This is required, and gobject-introspection needs to be built
|
||||
# before this can be successfully run.
|
||||
PYTHON2=python
|
||||
|
||||
# Don't change anything following this line!
|
||||
VALID_PKG_CONFIG_PATH = FALSE
|
||||
VALID_GCC_INSTPATH = FALSE
|
||||
|
||||
MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH
|
||||
MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the Introspection Files
|
||||
|
||||
ERROR_MSG =
|
||||
|
||||
BUILD_INTROSPECTION = TRUE
|
||||
|
||||
!if ![pkg-config --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x] \
|
||||
&& ![setlocal] \
|
||||
&& ![set file="pkgconfig.x"] \
|
||||
&& ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize] \
|
||||
&& ![del $(ERRNUL) /q/f pkgconfig.x]
|
||||
!endif
|
||||
|
||||
!include pkgconfig.chksize
|
||||
!if "$(PKG_CHECK_SIZE)" == "0"
|
||||
VALID_PKG_CONFIG_PATH = TRUE
|
||||
!else
|
||||
VALID_PKG_CONFIG_PATH = FALSE
|
||||
!endif
|
||||
|
||||
!if ![del $(ERRNUL) /q/f pkgconfig.chksize]
|
||||
!endif
|
||||
|
||||
VALID_CFGSET = FALSE
|
||||
!if "$(CFG)" == "release" || "$(CFG)" == "debug"
|
||||
VALID_CFGSET = TRUE
|
||||
!endif
|
||||
|
||||
!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE"
|
||||
BUILD_INTROSPECTION = FALSE
|
||||
ERROR_MSG = $(MSG_INVALID_PKGCONFIG)
|
||||
!endif
|
||||
|
||||
!if "$(VALID_CFGSET)" != "TRUE"
|
||||
BUILD_INTROSPECTION = FALSE
|
||||
ERROR_MSG = $(MSG_INVALID_CFG)
|
||||
!endif
|
||||
261
build/msvcfiles.py
Normal file
@@ -0,0 +1,261 @@
|
||||
#!/usr/bin/python
|
||||
# vim: encoding=utf-8
|
||||
#expand *.in files
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import optparse
|
||||
|
||||
def parent_dir(path):
|
||||
if not os.path.isabs(path):
|
||||
path = os.path.abspath(path)
|
||||
if os.path.isfile(path):
|
||||
path = os.path.dirname(path)
|
||||
return os.path.split(path)[0]
|
||||
|
||||
def check_output_type (btype):
|
||||
print_bad_type = False
|
||||
output_type = -1
|
||||
if (btype is None):
|
||||
output_type = -1
|
||||
print_bad_type = False
|
||||
elif (btype == "vs9"):
|
||||
output_type = 1
|
||||
elif (btype == "vs10"):
|
||||
output_type = 2
|
||||
elif (btype == "nmake-exe"):
|
||||
output_type = 3
|
||||
else:
|
||||
output_type = -1
|
||||
print_bad_type = True
|
||||
if (output_type == -1):
|
||||
if (print_bad_type is True):
|
||||
print ("The entered output build file type '%s' is not valid" % btype)
|
||||
else:
|
||||
print ("Output build file type is not specified.\nUse -t <type> to specify the output build file type.")
|
||||
print ("Valid output build file types are: nmake-exe, vs9 , vs10")
|
||||
return output_type
|
||||
|
||||
def read_vars_from_AM(path, vars = {}, conds = {}, filters = None):
|
||||
'''
|
||||
path: path to the Makefile.am
|
||||
vars: predefined variables
|
||||
conds: condition variables for Makefile
|
||||
filters: if None, all variables defined are returned,
|
||||
otherwise, it is a list contains that variables should be returned
|
||||
'''
|
||||
cur_vars = vars.copy()
|
||||
RE_AM_VAR_REF = re.compile(r'\$\((\w+?)\)')
|
||||
RE_AM_VAR = re.compile(r'^\s*(\w+)\s*=(.*)$')
|
||||
RE_AM_INCLUDE = re.compile(r'^\s*include\s+(\w+)')
|
||||
RE_AM_VAR_ADD = re.compile(r'^\s*(\w+)\s*\+=(.*)$')
|
||||
RE_AM_CONTINUING = re.compile(r'\\\s*$')
|
||||
RE_AM_IF = re.compile(r'^\s*if\s+(\w+)')
|
||||
RE_AM_IFNOT = re.compile(r'^\s*if\s!+(\w+)')
|
||||
RE_AM_ELSE = re.compile(r'^\s*else')
|
||||
RE_AM_ENDIF = re.compile(r'^\s*endif')
|
||||
def am_eval(cont):
|
||||
return RE_AM_VAR_REF.sub(lambda x: cur_vars.get(x.group(1), ''), cont)
|
||||
with open(path, 'r') as f:
|
||||
contents = f.readlines()
|
||||
#combine continuing lines
|
||||
i = 0
|
||||
ncont = []
|
||||
while i < len(contents):
|
||||
line = contents[i]
|
||||
if RE_AM_CONTINUING.search(line):
|
||||
line = RE_AM_CONTINUING.sub('', line)
|
||||
j = i + 1
|
||||
while j < len(contents) and RE_AM_CONTINUING.search(contents[j]):
|
||||
line += RE_AM_CONTINUING.sub('', contents[j])
|
||||
j += 1
|
||||
else:
|
||||
if j < len(contents):
|
||||
line += contents[j]
|
||||
i = j
|
||||
else:
|
||||
i += 1
|
||||
ncont.append(line)
|
||||
|
||||
#include, var define, var evaluation
|
||||
i = -1
|
||||
skip = False
|
||||
oldskip = []
|
||||
while i < len(ncont) - 1:
|
||||
i += 1
|
||||
line = ncont[i]
|
||||
mo = RE_AM_IF.search(line)
|
||||
if mo:
|
||||
oldskip.append(skip)
|
||||
skip = False if mo.group(1) in conds and conds[mo.group(1)] \
|
||||
else True
|
||||
continue
|
||||
mo = RE_AM_IFNOT.search(line)
|
||||
if mo:
|
||||
oldskip.append(skip)
|
||||
skip = False if mo.group(1) not in conds and conds[mo.group(1)] \
|
||||
else True
|
||||
continue
|
||||
mo = RE_AM_ELSE.search(line)
|
||||
if mo:
|
||||
skip = not skip
|
||||
continue
|
||||
mo = RE_AM_ENDIF.search(line)
|
||||
if mo:
|
||||
if oldskip:
|
||||
skip = oldskip.pop()
|
||||
continue
|
||||
if not skip:
|
||||
mo = RE_AM_INCLUDE.search(line)
|
||||
if mo:
|
||||
cur_vars.update(read_vars_from_AM(am_eval(mo.group(1)), cur_vars, conds, None))
|
||||
continue
|
||||
mo = RE_AM_VAR.search(line)
|
||||
if mo:
|
||||
cur_vars[mo.group(1)] = am_eval(mo.group(2).strip())
|
||||
continue
|
||||
mo = RE_AM_VAR_ADD.search(line)
|
||||
if mo:
|
||||
try:
|
||||
cur_vars[mo.group(1)] += ' '
|
||||
except KeyError:
|
||||
cur_vars[mo.group(1)] = ''
|
||||
cur_vars[mo.group(1)] += am_eval(mo.group(2).strip())
|
||||
continue
|
||||
|
||||
#filter:
|
||||
if filters != None:
|
||||
ret = {}
|
||||
for i in filters:
|
||||
ret[i] = cur_vars.get(i, '')
|
||||
return ret
|
||||
else:
|
||||
return cur_vars
|
||||
|
||||
def process_include(src, dest, includes):
|
||||
RE_INCLUDE = re.compile(r'^\s*#include\s+"(.*)"')
|
||||
with open(src, 'r') as s:
|
||||
with open(dest, 'w') as d:
|
||||
for i in s:
|
||||
mo = RE_INCLUDE.search(i)
|
||||
if mo:
|
||||
target = ''
|
||||
for j in includes:
|
||||
#print "searching in ", j
|
||||
if mo.group(1) in os.listdir(j):
|
||||
target = os.path.join(j, mo.group(1))
|
||||
break
|
||||
if not target:
|
||||
raise Exception("Couldn't find include file %s" % mo.group(1))
|
||||
else:
|
||||
with open(target, 'r') as t:
|
||||
for inc in t.readlines():
|
||||
d.write(inc)
|
||||
else:
|
||||
d.write(i)
|
||||
|
||||
#Generate the source files listing that is used
|
||||
def generate_src_list (srcroot, srcdir, filters_src, filter_conds, filter_c, mk_am_file):
|
||||
mkfile = ''
|
||||
if mk_am_file is None or mk_am_file == '':
|
||||
mkfile = 'Makefile.am'
|
||||
else:
|
||||
mkfile = mk_am_file
|
||||
vars = read_vars_from_AM(os.path.join(srcdir, mkfile),
|
||||
vars = {'top_srcdir': srcroot},
|
||||
conds = filter_conds,
|
||||
filters = filters_src)
|
||||
files = []
|
||||
for src_filters_item in filters_src:
|
||||
files += vars[src_filters_item].split()
|
||||
if filter_c is True:
|
||||
sources = [i for i in files if i.endswith('.c') ]
|
||||
return sources
|
||||
else:
|
||||
return files
|
||||
|
||||
# Generate the Visual Studio 2008 Project Files from the templates
|
||||
def gen_vs9_project (projname, srcroot, srcdir_name, sources_list):
|
||||
vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
|
||||
|
||||
with open (os.path.join (vs_file_list_dir,
|
||||
projname + '.sourcefiles'), 'w') as vs9srclist:
|
||||
for i in sources_list:
|
||||
vs9srclist.write ('\t\t\t<File RelativePath="..\\..\\..\\' + srcdir_name + '\\' + i.replace('/', '\\') + '" />\n')
|
||||
|
||||
process_include (os.path.join(srcroot, 'build', 'win32', 'vs9', projname + '.vcprojin'),
|
||||
os.path.join(srcroot, 'build', 'win32', 'vs9', projname + '.vcproj'),
|
||||
includes = [vs_file_list_dir])
|
||||
|
||||
os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.sourcefiles'))
|
||||
|
||||
# Generate the Visual Studio 2010 Project Files from the templates
|
||||
def gen_vs10_project (projname, srcroot, srcdir_name, sources_list):
|
||||
vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
|
||||
|
||||
with open (os.path.join (vs_file_list_dir,
|
||||
projname + '.vs10.sourcefiles'), 'w') as vs10srclist:
|
||||
for j in sources_list:
|
||||
vs10srclist.write (' <ClCompile Include="..\\..\\..\\' + srcdir_name + '\\' + j.replace('/', '\\') + '" />\n')
|
||||
|
||||
with open (os.path.join (vs_file_list_dir,
|
||||
projname + '.vs10.sourcefiles.filters'), 'w') as vs10srclist_filter:
|
||||
for k in sources_list:
|
||||
vs10srclist_filter.write (' <ClCompile Include="..\\..\\..\\' + srcdir_name + '\\' + k.replace('/', '\\') + '"><Filter>Source Files</Filter></ClCompile>\n')
|
||||
|
||||
process_include (os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxprojin'),
|
||||
os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj'),
|
||||
includes = [vs_file_list_dir])
|
||||
process_include (os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj.filtersin'),
|
||||
os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj.filters'),
|
||||
includes = [vs_file_list_dir])
|
||||
|
||||
os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.vs10.sourcefiles'))
|
||||
os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.vs10.sourcefiles.filters'))
|
||||
|
||||
def gen_vs_inst_list (projname, srcroot, srcdirs, inst_lists, destdir_names, isVS9):
|
||||
vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
|
||||
vsver = ''
|
||||
vsprops_line_ending = ''
|
||||
vsprops_file_ext = ''
|
||||
if isVS9 is True:
|
||||
vsver = '9'
|
||||
vsprops_line_ending = '
\n'
|
||||
vsprops_file_ext = '.vsprops'
|
||||
else:
|
||||
vsver = '10'
|
||||
vsprops_line_ending = '\n\n'
|
||||
vsprops_file_ext = '.props'
|
||||
|
||||
with open (os.path.join (vs_file_list_dir,
|
||||
projname + '.vs' + vsver + 'instfiles'), 'w') as vsinstlist:
|
||||
|
||||
for file_list, srcdir, dir_name in zip (inst_lists, srcdirs, destdir_names):
|
||||
for i in file_list:
|
||||
vsinstlist.write ('copy ..\\..\\..\\' +
|
||||
srcdir + '\\' +
|
||||
i.replace ('/', '\\') +
|
||||
' $(CopyDir)\\' +
|
||||
dir_name +
|
||||
vsprops_line_ending)
|
||||
process_include (os.path.join(srcroot, 'build', 'win32', 'vs' + vsver, projname + '-install' + vsprops_file_ext + 'in'),
|
||||
os.path.join(srcroot, 'build', 'win32', 'vs' + vsver, projname + '-install' + vsprops_file_ext),
|
||||
includes = [vs_file_list_dir])
|
||||
|
||||
os.unlink(os.path.join (vs_file_list_dir, projname + '.vs' + vsver + 'instfiles'))
|
||||
|
||||
def generate_nmake_makefiles(srcroot, srcdir, base_name, makefile_name, progs_list):
|
||||
file_list_dir = os.path.join (srcroot, 'build', 'win32')
|
||||
|
||||
with open (os.path.join (file_list_dir,
|
||||
base_name + '_progs'), 'w') as proglist:
|
||||
for i in progs_list:
|
||||
proglist.write ('\t' + i + '$(EXEEXT)\t\\\n')
|
||||
|
||||
|
||||
process_include (os.path.join(srcdir, makefile_name + 'in'),
|
||||
os.path.join(srcdir, makefile_name),
|
||||
includes = [file_list_dir])
|
||||
|
||||
os.unlink(os.path.join (file_list_dir, base_name + '_progs'))
|
||||
|
||||
@@ -1,31 +1,5 @@
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
if HAVE_INTROSPECTION
|
||||
GENERATED_ITEMS = \
|
||||
introspection.body.mak \
|
||||
Gdk_3_0_gir_list \
|
||||
GdkWin32_3_0_gir_list \
|
||||
Gtk_3_0_gir_list
|
||||
|
||||
MSVC_INTROSPECTION_INTERMEDIATE_FILES = Gdk-3.0.gir.msvc.introspect GdkWin32-3.0.gir.msvc.introspect Gtk-3.0.gir.msvc.introspect
|
||||
|
||||
introspection.body.mak: $(MSVC_INTROSPECTION_INTERMEDIATE_FILES)
|
||||
-$(RM) introspection.body.mak
|
||||
for F in `ls *.msvc.introspect`; do \
|
||||
case $$F in \
|
||||
*) cat $(top_builddir)/build/win32/$$F >>introspection.body.mak \
|
||||
;; \
|
||||
esac; \
|
||||
done
|
||||
$(RM) $(MSVC_INTROSPECTION_INTERMEDIATE_FILES)
|
||||
|
||||
DISTCLEANFILES = $(GENERATED_ITEMS)
|
||||
|
||||
else
|
||||
GENERATED_ITEMS =
|
||||
DISTCLEANFILES =
|
||||
endif
|
||||
|
||||
SUBDIRS = \
|
||||
vs9 \
|
||||
vs10 \
|
||||
@@ -33,13 +7,6 @@ SUBDIRS = \
|
||||
vs12 \
|
||||
vs14
|
||||
|
||||
EXTRA_DIST += \
|
||||
detectenv-msvc.mak \
|
||||
introspection-msvc.mak \
|
||||
gtk-introspection-msvc.mak \
|
||||
replace.py \
|
||||
pc_base.py \
|
||||
gtkpc.py \
|
||||
$(GENERATED_ITEMS)
|
||||
EXTRA_DIST += replace.py
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# NMake Makefile to build Introspection Files for GTK+
|
||||
|
||||
!include detectenv-msvc.mak
|
||||
|
||||
APIVERSION = 3.0
|
||||
|
||||
CHECK_PACKAGE = gdk-pixbuf-2.0 atk pangocairo gio-2.0
|
||||
|
||||
built_install_girs = Gdk-$(APIVERSION).gir GdkWin32-$(APIVERSION).gir Gtk-$(APIVERSION).gir
|
||||
built_install_typelibs = Gdk-$(APIVERSION).typelib GdkWin32-$(APIVERSION).typelib Gtk-$(APIVERSION).typelib
|
||||
|
||||
!include introspection-msvc.mak
|
||||
|
||||
!if "$(BUILD_INTROSPECTION)" == "TRUE"
|
||||
|
||||
!if "$(PLAT)" == "x64"
|
||||
AT_PLAT=x86_64
|
||||
!else
|
||||
AT_PLAT=i686
|
||||
!endif
|
||||
|
||||
all: setgirbuildenv $(built_install_girs) $(built_install_typelibs)
|
||||
|
||||
setgirbuildenv:
|
||||
@set PYTHONPATH=$(PREFIX)\lib\gobject-introspection
|
||||
@set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(PREFIX)\bin;$(PATH)
|
||||
@set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
|
||||
@set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
|
||||
|
||||
!include introspection.body.mak
|
||||
|
||||
install-introspection: all
|
||||
@-copy *.gir $(G_IR_INCLUDEDIR)
|
||||
@-copy /b *.typelib $(G_IR_TYPELIBDIR)
|
||||
|
||||
!else
|
||||
all:
|
||||
@-echo $(ERROR_MSG)
|
||||
!endif
|
||||
|
||||
clean:
|
||||
@-del /f/q *.typelib
|
||||
@-del /f/q *.gir
|
||||
@@ -1,97 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Utility script to generate .pc files for GTK+
|
||||
# for Visual Studio builds, to be used for
|
||||
# building introspection files
|
||||
|
||||
# Author: Fan, Chun-wei
|
||||
# Date: April 26, 2016
|
||||
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
from replace import replace_multi, replace
|
||||
from pc_base import BasePCItems
|
||||
|
||||
def main(argv):
|
||||
base_pc = BasePCItems()
|
||||
|
||||
gdk_parser = argparse.ArgumentParser(description='Setup basic .pc file info')
|
||||
gdk_parser.add_argument('--broadway',
|
||||
action='store_const',
|
||||
const=1,
|
||||
help='GDK with Broadway backend')
|
||||
gdk_parser.add_argument('--host',
|
||||
required=True,
|
||||
help='Build type')
|
||||
base_pc.setup(argv, gdk_parser)
|
||||
|
||||
atk_min_ver = '2.15.1'
|
||||
cairo_min_ver = '1.14.0'
|
||||
gdk_pixbuf_min_ver = '2.30.0'
|
||||
gdk_win32_sys_libs = '-lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi'
|
||||
glib_min_ver = '2.45.8'
|
||||
|
||||
cairo_backends = 'cairo-win32'
|
||||
gdk_backends = 'win32'
|
||||
gio_package = 'gio-2.0 >= ' + glib_min_ver
|
||||
broadway_extra_libs = ''
|
||||
|
||||
gdk_args = gdk_parser.parse_args()
|
||||
if getattr(gdk_args, 'broadway', None) is 1:
|
||||
# On Visual Studio, we link to zlib1.lib
|
||||
broadway_extra_libs = '-lzlib1'
|
||||
gdk_backends += ' broadway'
|
||||
cairo_backends += ' cairo'
|
||||
|
||||
pkg_replace_items = {'@GTK_API_VERSION@': '3.0',
|
||||
'@GDK_BACKENDS@': gdk_backends}
|
||||
|
||||
pkg_required_packages = 'gdk-pixbuf >= ' + gdk_pixbuf_min_ver + ' ' + \
|
||||
'cairo >= ' + cairo_min_ver + ' ' + \
|
||||
'cairo-gobject >= ' + cairo_min_ver
|
||||
|
||||
gdk_pc_replace_items = {'@GDK_PACKAGES@': gio_package + ' ' + \
|
||||
'pangowin32 pangocairo' + ' ' + \
|
||||
pkg_required_packages,
|
||||
'@GDK_PRIVATE_PACKAGES@': gio_package + ' ' + cairo_backends,
|
||||
'@GDK_EXTRA_LIBS@': gdk_win32_sys_libs + broadway_extra_libs,
|
||||
'@GDK_EXTRA_CFLAGS@': '',
|
||||
'gdk-3': 'gdk-3.0'}
|
||||
|
||||
gtk_pc_replace_items = {'@host@': gdk_args.host,
|
||||
'@GTK_BINARY_VERSION@': '3.0.0',
|
||||
'@GTK_PACKAGES@': 'atk >= ' + atk_min_ver + ' ' + \
|
||||
pkg_required_packages + ' ' + \
|
||||
gio_package,
|
||||
'@GTK_PRIVATE_PACKAGES@': 'atk',
|
||||
'@GTK_EXTRA_CFLAGS@': '',
|
||||
'@GTK_EXTRA_LIBS@': '',
|
||||
'@GTK_EXTRA_CFLAGS@': '',
|
||||
'gtk-3': 'gtk-3.0'}
|
||||
|
||||
gail_pc_replace_items = {'gailutil-3': 'gailutil-3.0'}
|
||||
|
||||
pkg_replace_items.update(base_pc.base_replace_items)
|
||||
gdk_pc_replace_items.update(pkg_replace_items)
|
||||
gtk_pc_replace_items.update(pkg_replace_items)
|
||||
gail_pc_replace_items.update(base_pc.base_replace_items)
|
||||
|
||||
# Generate gdk-3.0.pc
|
||||
replace_multi(base_pc.top_srcdir + '/gdk-3.0.pc.in',
|
||||
base_pc.srcdir + '/gdk-3.0.pc',
|
||||
gdk_pc_replace_items)
|
||||
|
||||
# Generate gtk+-3.0.pc
|
||||
replace_multi(base_pc.top_srcdir + '/gtk+-3.0.pc.in',
|
||||
base_pc.srcdir + '/gtk+-3.0.pc',
|
||||
gtk_pc_replace_items)
|
||||
|
||||
# Generate gail-3.0.pc
|
||||
replace_multi(base_pc.top_srcdir + '/gail-3.0.pc.in',
|
||||
base_pc.srcdir + '/gail-3.0.pc',
|
||||
gail_pc_replace_items)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@@ -1,94 +0,0 @@
|
||||
# Common NMake Makefile module for checking the build environment is sane
|
||||
# for building introspection files under MSVC/NMake.
|
||||
# This can be copied from $(gi_srcroot)\build\win32 for GNOME items
|
||||
# that support MSVC builds and introspection under MSVC.
|
||||
|
||||
# Can override with env vars as needed
|
||||
# You will need to have built gobject-introspection for this to work.
|
||||
# Change or pass in or set the following to suit your environment
|
||||
|
||||
!if "$(PREFIX)" == ""
|
||||
PREFIX = ..\..\..\vs$(VSVER)\$(PLAT)
|
||||
!endif
|
||||
|
||||
!if ![setlocal] && \
|
||||
![set PFX=$(PREFIX)] && \
|
||||
![for %P in (%PFX%) do @echo PREFIX_FULL=%~dpnfP > pfx.x]
|
||||
!endif
|
||||
!include pfx.x
|
||||
|
||||
!if "$(PKG_CONFIG_PATH)" == ""
|
||||
PKG_CONFIG_PATH=$(PREFIX_FULL)\lib\pkgconfig
|
||||
!else
|
||||
PKG_CONFIG_PATH=$(PREFIX_FULL)\lib\pkgconfig;$(PKG_CONFIG_PATH)
|
||||
!endif
|
||||
|
||||
!if ![del $(ERRNUL) /q/f pfx.x]
|
||||
!endif
|
||||
|
||||
# Note: The PYTHON must be the Python release series that was used to build
|
||||
# the GObject-introspection scanner Python module!
|
||||
# Either having python.exe your PATH will work or passing in
|
||||
# PYTHON=<full path to your Python interpretor> will do
|
||||
|
||||
# This is required, and gobject-introspection needs to be built
|
||||
# before this can be successfully run.
|
||||
!if "$(PYTHON)" == ""
|
||||
PYTHON=python
|
||||
!endif
|
||||
|
||||
# Path to the pkg-config tool, if not already in the PATH
|
||||
!if "$(PKG_CONFIG)" == ""
|
||||
PKG_CONFIG=pkg-config
|
||||
!endif
|
||||
|
||||
# Don't change anything following this line!
|
||||
|
||||
GIR_SUBDIR = share\gir-1.0
|
||||
GIR_TYPELIBDIR = lib\girepository-1.0
|
||||
G_IR_SCANNER = $(PREFIX)\bin\g-ir-scanner
|
||||
G_IR_COMPILER = $(PREFIX)\bin\g-ir-compiler.exe
|
||||
G_IR_INCLUDEDIR = $(PREFIX)\$(GIR_SUBDIR)
|
||||
G_IR_TYPELIBDIR = $(PREFIX)\$(GIR_TYPELIBDIR)
|
||||
|
||||
VALID_PKG_CONFIG_PATH = FALSE
|
||||
|
||||
MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH
|
||||
MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the Introspection Files
|
||||
|
||||
ERROR_MSG =
|
||||
|
||||
BUILD_INTROSPECTION = TRUE
|
||||
|
||||
!if ![set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)] \
|
||||
&& ![$(PKG_CONFIG) --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x] \
|
||||
&& ![setlocal] \
|
||||
&& ![set file="pkgconfig.x"] \
|
||||
&& ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize] \
|
||||
&& ![del $(ERRNUL) /q/f pkgconfig.x]
|
||||
!endif
|
||||
|
||||
!include pkgconfig.chksize
|
||||
!if "$(PKG_CHECK_SIZE)" == "0"
|
||||
VALID_PKG_CONFIG_PATH = TRUE
|
||||
!else
|
||||
VALID_PKG_CONFIG_PATH = FALSE
|
||||
!endif
|
||||
|
||||
!if ![del $(ERRNUL) /q/f pkgconfig.chksize]
|
||||
!endif
|
||||
|
||||
VALID_CFGSET = FALSE
|
||||
!if "$(CFG)" == "release" || "$(CFG)" == "debug" || "$(CFG)" == "Release" || "$(CFG)" == "Debug"
|
||||
VALID_CFGSET = TRUE
|
||||
!endif
|
||||
|
||||
!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE"
|
||||
BUILD_INTROSPECTION = FALSE
|
||||
ERROR_MSG = $(MSG_INVALID_PKGCONFIG)
|
||||
!endif
|
||||
|
||||
!if "$(VALID_CFGSET)" != "TRUE"
|
||||
BUILD_INTROSPECTION = FALSE
|
||||
ERROR_MSG = $(MSG_INVALID_CFG)
|
||||
!endif
|
||||
@@ -1,124 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Simple utility script to generate the basic info
|
||||
# needed in a .pc (pkg-config) file, used especially
|
||||
# for introspection purposes
|
||||
|
||||
# This can be used in various projects where
|
||||
# there is the need to generate .pc files,
|
||||
# and is copied from GLib's $(srcroot)/build/win32
|
||||
|
||||
# Author: Fan, Chun-wei
|
||||
# Date: March 10, 2016
|
||||
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
class BasePCItems:
|
||||
def __init__(self):
|
||||
self.base_replace_items = {}
|
||||
self.exec_prefix = ''
|
||||
self.includedir = ''
|
||||
self.libdir = ''
|
||||
self.prefix = ''
|
||||
self.srcdir = os.path.dirname(__file__)
|
||||
self.top_srcdir = self.srcdir + '\\..\\..'
|
||||
self.version = ''
|
||||
|
||||
def setup(self, argv, parser=None):
|
||||
if parser is None:
|
||||
parser = argparse.ArgumentParser(description='Setup basic .pc file info')
|
||||
parser.add_argument('--prefix', help='prefix of the installed library',
|
||||
required=True)
|
||||
parser.add_argument('--exec-prefix',
|
||||
help='prefix of the installed programs, \
|
||||
if different from the prefix')
|
||||
parser.add_argument('--includedir',
|
||||
help='includedir of the installed library, \
|
||||
if different from ${prefix}/include')
|
||||
parser.add_argument('--libdir',
|
||||
help='libdir of the installed library, \
|
||||
if different from ${prefix}/lib')
|
||||
parser.add_argument('--version', help='Version of the package',
|
||||
required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
self.version = args.version
|
||||
|
||||
# check whether the prefix and exec_prefix are valid
|
||||
if not os.path.exists(args.prefix):
|
||||
raise SystemExit('Specified prefix \'%s\' is invalid' % args.prefix)
|
||||
|
||||
# use absolute paths for prefix
|
||||
self.prefix = os.path.abspath(args.prefix).replace('\\','/')
|
||||
|
||||
# check and setup the exec_prefix
|
||||
if getattr(args, 'exec_prefix', None) is None:
|
||||
exec_prefix_use_shorthand = True
|
||||
self.exec_prefix = '${prefix}'
|
||||
else:
|
||||
if args.exec_prefix.startswith('${prefix}'):
|
||||
exec_prefix_use_shorthand = True
|
||||
input_exec_prefix = args.prefix + args.exec_prefix[len('${prefix}'):]
|
||||
else:
|
||||
exec_prefix_use_shorthand = False
|
||||
input_exec_prefix = args.exec_prefix
|
||||
if not os.path.exists(input_exec_prefix):
|
||||
raise SystemExit('Specified exec_prefix \'%s\' is invalid' %
|
||||
args.exec_prefix)
|
||||
if exec_prefix_use_shorthand is True:
|
||||
self.exec_prefix = args.exec_prefix.replace('\\','/')
|
||||
else:
|
||||
self.exec_prefix = os.path.abspath(input_exec_prefix).replace('\\','/')
|
||||
|
||||
# check and setup the includedir
|
||||
if getattr(args, 'includedir', None) is None:
|
||||
self.includedir = '${prefix}/include'
|
||||
else:
|
||||
if args.includedir.startswith('${prefix}'):
|
||||
includedir_use_shorthand = True
|
||||
input_includedir = args.prefix + args.includedir[len('${prefix}'):]
|
||||
else:
|
||||
if args.includedir.startswith('${exec_prefix}'):
|
||||
includedir_use_shorthand = True
|
||||
input_includedir = input_exec_prefix + args.includedir[len('${exec_prefix}'):]
|
||||
else:
|
||||
includedir_use_shorthand = False
|
||||
input_includedir = args.includedir
|
||||
if not os.path.exists(input_includedir):
|
||||
raise SystemExit('Specified includedir \'%s\' is invalid' %
|
||||
args.includedir)
|
||||
if includedir_use_shorthand is True:
|
||||
self.includedir = args.includedir.replace('\\','/')
|
||||
else:
|
||||
self.includedir = os.path.abspath(input_includedir).replace('\\','/')
|
||||
|
||||
# check and setup the libdir
|
||||
if getattr(args, 'libdir', None) is None:
|
||||
self.libdir = '${prefix}/lib'
|
||||
else:
|
||||
if args.libdir.startswith('${prefix}'):
|
||||
libdir_use_shorthand = True
|
||||
input_libdir = args.prefix + args.libdir[len('${prefix}'):]
|
||||
else:
|
||||
if args.libdir.startswith('${exec_prefix}'):
|
||||
libdir_use_shorthand = True
|
||||
input_libdir = input_exec_prefix + args.libdir[len('${exec_prefix}'):]
|
||||
else:
|
||||
libdir_use_shorthand = False
|
||||
input_libdir = args.libdir
|
||||
if not os.path.exists(input_libdir):
|
||||
raise SystemExit('Specified libdir \'%s\' is invalid' %
|
||||
args.libdir)
|
||||
if libdir_use_shorthand is True:
|
||||
self.libdir = args.libdir.replace('\\','/')
|
||||
else:
|
||||
self.libdir = os.path.abspath(input_libdir).replace('\\','/')
|
||||
|
||||
# setup dictionary for replacing items in *.pc.in
|
||||
self.base_replace_items.update({'@VERSION@': self.version})
|
||||
self.base_replace_items.update({'@prefix@': self.prefix})
|
||||
self.base_replace_items.update({'@exec_prefix@': self.exec_prefix})
|
||||
self.base_replace_items.update({'@libdir@': self.libdir})
|
||||
self.base_replace_items.update({'@includedir@': self.includedir})
|
||||
@@ -21,19 +21,12 @@ valid_actions = ['remove-prefix',
|
||||
'replace-str',
|
||||
'remove-str']
|
||||
|
||||
def replace_multi(src, dest, replace_items):
|
||||
def replace(src, dest, instring, outstring):
|
||||
with open(src, 'r') as s:
|
||||
with open(dest, 'w') as d:
|
||||
for line in s:
|
||||
replace_dict = dict((re.escape(key), value) \
|
||||
for key, value in replace_items.items())
|
||||
replace_pattern = re.compile("|".join(replace_dict.keys()))
|
||||
d.write(replace_pattern.sub(lambda m: \
|
||||
replace_dict[re.escape(m.group(0))], line))
|
||||
|
||||
def replace(src, dest, instring, outstring):
|
||||
replace_item = {instring: outstring}
|
||||
replace_multi(src, dest, replace_item)
|
||||
i = line.replace(instring, outstring)
|
||||
d.write(i)
|
||||
|
||||
def check_required_args(args, params):
|
||||
for param in params:
|
||||
|
||||
@@ -33,7 +33,6 @@ EXTRA_DIST += \
|
||||
README.txt \
|
||||
gtk+.sln \
|
||||
gtk3-prebuild.vcxproj \
|
||||
gtk3-prebuild.vcxproj.filters \
|
||||
gdk3-win32.vcxprojin \
|
||||
gdk3-win32.vcxproj.filtersin \
|
||||
gdk3-broadway.vcxprojin \
|
||||
@@ -61,7 +60,6 @@ EXTRA_DIST += \
|
||||
gailutil-3.vcxprojin \
|
||||
gailutil-3.vcxproj.filtersin \
|
||||
gtk3-install.vcxproj \
|
||||
gtk3-install.vcxproj.filters \
|
||||
gtk3-build-defines.props \
|
||||
gtk3-copy-gdk-broadway.props \
|
||||
gtk3-gen-srcs.props \
|
||||
@@ -74,9 +72,6 @@ DISTCLEANFILES = \
|
||||
$(GENERATED_ITEMS)
|
||||
|
||||
gtk3-install.props: $(top_srcdir)/build/win32/vs10/gtk3-install.propsin $(MSVC10_HEADERS_LISTS)
|
||||
-$(RM) $(top_builddir)/build/win32/vs11/gtk3-install.props
|
||||
-$(RM) $(top_builddir)/build/win32/vs12/gtk3-install.props
|
||||
-$(RM) $(top_builddir)/build/win32/vs14/gtk3-install.props
|
||||
$(CPP) -P - <$(top_srcdir)/build/win32/vs10/gtk3-install.propsin >$@
|
||||
rm $(MSVC10_HEADERS_LISTS)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
@@ -144,7 +144,7 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).pdb</ProgramDatabaseFile>
|
||||
@@ -167,7 +167,7 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);$(GdkBroadwayAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;ws2_32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -187,7 +187,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -209,7 +209,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);$(GdkBroadwayAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;ws2_32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -234,7 +234,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -257,7 +257,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);$(GdkBroadwayAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;ws2_32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -277,7 +277,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -299,7 +299,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GdkAdditionalLibs);$(GdkBroadwayAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>imm32.lib;winmm.lib;ws2_32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
@@ -86,7 +86,7 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GtkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -106,7 +106,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GtkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -131,7 +131,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GtkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -151,7 +151,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>$(GtkAdditionalLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).0.lib</ImportLibrary>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -168,13 +168,13 @@
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GenerateGtkDbusBuiltSources)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating GTK+ DBus Sources...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenerateGtkDbusBuiltSourcesX64)</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenerateGtkDbusBuiltSources)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating GTK+ DBus Sources...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GenerateGtkDbusBuiltSources)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h;%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating GTK+ DBus Sources...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenerateGtkDbusBuiltSourcesX64)</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenerateGtkDbusBuiltSources)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\gtk\gtk-win32.rc.body">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="gtk3-version-paths.props" />
|
||||
@@ -10,10 +10,6 @@
|
||||
<GdkDefines>GDK_COMPILATION;G_LOG_DOMAIN="Gdk"</GdkDefines>
|
||||
<GtkIncludedImmodulesDefines>INCLUDE_IM_am_et;INCLUDE_IM_cedilla;INCLUDE_IM_cyrillic_translit;INCLUDE_IM_ime;INCLUDE_IM_inuktitut;INCLUDE_IM_ipa;INCLUDE_IM_multipress;INCLUDE_IM_thai;INCLUDE_IM_ti_er;INCLUDE_IM_ti_et;INCLUDE_IM_viqr</GtkIncludedImmodulesDefines>
|
||||
<GtkDefines>GTK_COMPILATION;G_LOG_DOMAIN="Gtk";GTK_HOST="i686-pc-vs$(VSVer)";GTK_PRINT_BACKENDS="file";GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED;$(GtkIncludedImmodulesDefines);GTK_LIBDIR="$(GtkDummyPrefix)/lib";GTK_DATADIR="$(GtkDummyPrefix)/share";GTK_DATA_PREFIX="$(GtkDummyPrefix)";GTK_SYSCONFDIR="$(GtkDummyPrefix)/etc";MULTIPRESS_CONFDIR="$(GtkDummyPrefix)/etc/gtk-$(ApiVersion)";MULTIPRESS_LOCALEDIR="$(GtkDummyPrefix)/share/locale";GTK_VERSION="$(GtkVersion)/etc";GTK_BINARY_VERSION="$(GtkBinaryVersion)/etc";GDK_DISABLE_DEPRECATED;ISOLATION_AWARE_ENABLED</GtkDefines>
|
||||
<GtkGdkCommonLibs>imm32.lib</GtkGdkCommonLibs>
|
||||
<GdkAdditionalLibs>winmm.lib;dwmapi.lib;setupapi.lib;$(GtkGdkCommonLibs)</GdkAdditionalLibs>
|
||||
<GdkBroadwayAdditionalLibs>ws2_32.lib</GdkBroadwayAdditionalLibs>
|
||||
<GtkAdditionalLibs>atk-1.0.lib;pangowin32-1.0.lib;winspool.lib;comctl32.lib;$(GtkGdkCommonLibs)</GtkAdditionalLibs>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>gtk3builddefinesprops</_PropertySheetDisplayName>
|
||||
@@ -28,7 +24,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<AdditionalOptions>/d2Zi+ %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<Link>
|
||||
<AdditionalDependencies>pangocairo-1.0.lib;cairo.lib;cairo-gobject.lib;pango-1.0.lib;gdk_pixbuf-2.0.lib;gio-2.0.lib;gmodule-2.0.lib;gobject-2.0.lib;glib-2.0.lib;intl.lib;epoxy.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
@@ -52,17 +48,5 @@
|
||||
<BuildMacro Include="GtkDefines">
|
||||
<Value>$(GtkDefines)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GtkGdkCommonLibs">
|
||||
<Value>$(GtkGdkCommonLibs)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GdkAdditionalLibs">
|
||||
<Value>$(GdkAdditionalLibs)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GdkBroadwayAdditionalLibs">
|
||||
<Value>$(GdkBroadwayAdditionalLibs)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GtkAdditionalLibs">
|
||||
<Value>$(GtkAdditionalLibs)</Value>
|
||||
</BuildMacro>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -4,19 +4,30 @@
|
||||
<Import Project="gtk3-build-defines.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<GenConfigH>copy ..\..\..\config.h.win32 ..\..\..\config.h</GenConfigH>
|
||||
<GenConfigH>
|
||||
copy ..\..\..\config.h.win32 ..\..\..\config.h
|
||||
</GenConfigH>
|
||||
<GenGdkConfigHWin32>
|
||||
if exist ..\..\..\MSVC_$(Configuration) goto DONE_GDKCONFIG_H
|
||||
|
||||
if exist ..\..\..\gdk\gdkconfig.h del ..\..\..\gdk\gdkconfig.h
|
||||
|
||||
if exist ..\..\..\GDK_BROADWAY_BUILD del ..\..\..\GDK_BROADWAY_BUILD
|
||||
|
||||
if exist ..\..\..\MSVC_$(Configuration)_Broadway del ..\..\..\MSVC_$(Configuration)_Broadway
|
||||
|
||||
if exist $(Configuration)\$(Platform)\bin\$(GtkDllPrefix)gdk$(GtkDllSuffix).dll del $(Configuration)\$(Platform)\bin\$(GtkDllPrefix)gdk$(GtkDllSuffix).dll
|
||||
|
||||
if exist $(Configuration)\$(Platform)\bin\gdk-$(ApiVersion).lib del $(Configuration)\$(Platform)\bin\gdk-$(ApiVersion).lib
|
||||
|
||||
if "$(Configuration)" == "Release" del ..\..\..\MSVC_Debug
|
||||
|
||||
if "$(Configuration)" == "Debug" del ..\..\..\MSVC_Release
|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h.win32 ..\..\..\gdk\gdkconfig.h
|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h.win32 ..\..\..\GDK_WIN32ONLY_BUILD
|
||||
|
||||
echo $(Configuration) > ..\..\..\MSVC_$(Configuration)
|
||||
|
||||
:DONE_GDKCONFIG_H
|
||||
@@ -24,23 +35,35 @@ echo $(Configuration) > ..\..\..\MSVC_$(Configuration)
|
||||
<GenGdkConfigHBroadway>
|
||||
if exist ..\..\..\MSVC_$(Configuration)_Broadway goto DONE_GDKCONFIG_H
|
||||
|
||||
|
||||
if exist ..\..\..\gdk\gdkconfig.h del ..\..\..\gdk\gdkconfig.h
|
||||
|
||||
if exist ..\..\..\GDK_WIN32ONLY_BUILD del ..\..\..\GDK_WIN32ONLY_BUILD
|
||||
|
||||
if exist ..\..\..\MSVC_Release del ..\..\..\MSVC_Release
|
||||
|
||||
if exist ..\..\..\MSVC_Debug del ..\..\..\MSVC_Debug
|
||||
|
||||
|
||||
if "$(Configuration)" == "Release_Broadway" del ..\..\..\MSVC_Debug_Broadway
|
||||
|
||||
if "$(Configuration)" == "Debug_Broadway" del ..\..\..\MSVC_Release_Broadway
|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h.win32_broadway ..\..\..\gdk\gdkconfig.h
|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h.win32_broadway ..\..\..\GDK_BROADWAY_BUILD
|
||||
|
||||
echo $(Configuration) > ..\..\..\MSVC_$(Configuration)_Broadway
|
||||
|
||||
:DONE_GDKCONFIG_H
|
||||
</GenGdkConfigHBroadway>
|
||||
<GDbusCodeGenCmd>$(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml</GDbusCodeGenCmd>
|
||||
<GenerateGtkDbusBuiltSources>cd ..\..\..\gtk & $(PythonPath)\python $(GDbusCodeGenCmd) & cd $(SolutionDir)</GenerateGtkDbusBuiltSources>
|
||||
<GenerateGtkDbusBuiltSourcesX64>cd ..\..\..\gtk & $(PythonPathX64)\python $(GDbusCodeGenCmd) & cd $(SolutionDir)</GenerateGtkDbusBuiltSourcesX64>
|
||||
<GenerateGtkDbusBuiltSources>
|
||||
cd ..\..\..\gtk
|
||||
|
||||
$(PythonPath)\python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml
|
||||
|
||||
cd $(SolutionDir)
|
||||
</GenerateGtkDbusBuiltSources>
|
||||
<CopyGtkWin32RC>copy ..\..\..\gtk\gtk-win32.rc.body ..\..\..\gtk\gtk-win32.rc</CopyGtkWin32RC>
|
||||
<GenerateGtkWin32Manifest>$(PythonPath)\python ..\replace.py --action=replace-var --input=..\..\..\gtk\libgtk3.manifest.in --output=..\..\..\gtk\libgtk3.manifest --var=EXE_MANIFEST_ARCHITECTURE --outstring=*</GenerateGtkWin32Manifest>
|
||||
<CopyDemosH>copy ..\..\..\demos\gtk-demo\demos.h.win32 ..\..\..\demos\gtk-demo\demos.h</CopyDemosH>
|
||||
@@ -58,15 +81,9 @@ echo $(Configuration) > ..\..\..\MSVC_$(Configuration)_Broadway
|
||||
<BuildMacro Include="GenGdkConfigHBroadway">
|
||||
<Value>$(GenGdkConfigHBroadway)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GDbusCodeGenCmd">
|
||||
<Value>$(GDbusCodeGenCmd)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GenerateGtkDbusBuiltSources">
|
||||
<Value>$(GenerateGtkDbusBuiltSources)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GenerateGtkDbusBuiltSourcesX64">
|
||||
<Value>$(GenerateGtkDbusBuiltSourcesX64)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="CopyGtkWin32RC">
|
||||
<Value>$(CopyGtkWin32RC)</Value>
|
||||
</BuildMacro>
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<BinDir>$(SolutionDir)$(Configuration)\$(Platform)\bin</BinDir>
|
||||
<InstalledDlls>$(BinDir)\$(GtkDllPrefix)gdk(GtkDllSuffix).dll;$(BinDir)\$(GtkDllPrefix)gtk(GtkDllSuffix).dll;$(BinDir)\$(GtkDllPrefix)gailutil(GtkDllSuffix).dll</InstalledDlls>
|
||||
<InstalledBins>$(BinDir)\gtk3-demo.exe;$(BinDir)\gtk3-demo-application.exe;$(BinDir)\gtk3-icon-browser.exe;$(BinDir)\gtk-encode-symbolic-svg.exe</InstalledBins>
|
||||
<InstalledBroadwayBins>$(BinDir)\broadwayd.exe</InstalledBroadwayBins>
|
||||
<GtkDoInstallBin>
|
||||
mkdir $(CopyDir)\bin
|
||||
mkdir $(CopyDir)\lib\pkgconfig
|
||||
mkdir $(CopyDir)\lib
|
||||
|
||||
copy "$(BinDir)\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).dll" $(CopyDir)\bin
|
||||
copy "$(BinDir)\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).pdb" $(CopyDir)\bin
|
||||
@@ -90,10 +93,6 @@ copy .\Debug\$(Platform)\bin\gtk-builder-tool.exe $(CopyDir)\bin
|
||||
copy .\Debug\$(Platform)\bin\gtk-builder-tool.pdb $(CopyDir)\bin
|
||||
|
||||
:DONE_BIN
|
||||
|
||||
copy ..\gdk-3.0.pc $(CopyDir)\lib\pkgconfig
|
||||
copy "..\gtk+-3.0.pc" $(CopyDir)\lib\pkgconfig
|
||||
copy ..\gail-3.0.pc $(CopyDir)\lib\pkgconfig
|
||||
</GtkDoInstallBin>
|
||||
<GtkDoInstall>
|
||||
echo off
|
||||
@@ -127,22 +126,18 @@ copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(CopyDir)\share\glib
|
||||
copy ..\..\..\gtk\org.gtk.Settings.ColorChooser.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
copy ..\..\..\gtk\org.gtk.Settings.Debug.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
copy ..\..\..\demos\gtk-demo\org.gtk.Demo.gschema.xml $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
echo "Compiling gsettings XML Files..."
|
||||
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
echo "Generating icon cache......"
|
||||
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir)\share\icons\hicolor"
|
||||
</GtkDoInstall>
|
||||
<GtkDoInstallBroadwayHeaders>
|
||||
copy ..\..\..\gdk\broadway\gdkbroadway.h $(CopyDir)\include\gtk-$(ApiVersion)\gdk
|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\broadway
|
||||
#include "gdk3-broadway.vs10.headers"
|
||||
</GtkDoInstallBroadwayHeaders>
|
||||
<GtkPostInstall>
|
||||
echo "Compiling gsettings XML Files..."
|
||||
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
echo "Generating icon cache......"
|
||||
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir)\share\icons\hicolor"
|
||||
</GtkPostInstall>
|
||||
<GenerateGtkPC>$(PythonPath)\python ..\gtkpc.py --prefix=$(CopyDir) --version=$(GtkVersion) --host=i686-pc-vs$(VSVer)</GenerateGtkPC>
|
||||
<GenerateGtkPCX64>$(PythonPathX64)\python ..\gtkpc.py --prefix=$(CopyDir) --version=$(GtkVersion) --host=x86_64-pc-vs$(VSVer)</GenerateGtkPCX64>
|
||||
<GtkPCFiles>..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc</GtkPCFiles>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>gtk3installsprops</_PropertySheetDisplayName>
|
||||
@@ -169,17 +164,5 @@ $(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir
|
||||
<BuildMacro Include="GtkDoInstallBroadwayHeaders">
|
||||
<Value>$(GtkDoInstallBroadwayHeaders)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GtkPostInstall">
|
||||
<Value>$(GtkPostInstall)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GenerateGtkPC">
|
||||
<Value>$(GenerateGtkPC)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GenerateGtkPCX64">
|
||||
<Value>$(GenerateGtkPCX64)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="GtkPCFiles">
|
||||
<Value>$(GtkPCFiles)</Value>
|
||||
</BuildMacro>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -157,63 +157,29 @@
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\config.h.win32">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">blah;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">Installing Build Results...</Message>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkPCFiles)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">blah;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\gtkpc.py">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GenerateGtkPC)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GenerateGtkPC) --broadway</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenerateGtkPCX64)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GenerateGtkPCX64) --broadway</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GenerateGtkPC)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GenerateGtkPC) --broadway</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenerateGtkPCX64)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">Generating .pc files...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GenerateGtkPCX64) --broadway</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkPCFiles);%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\config.h.win32"><Filter>Resource Files</Filter></CustomBuild>
|
||||
<CustomBuild Include="..\gtkpc.py"><Filter>Resource Files</Filter></CustomBuild>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\config.h.win32"><Filter>Resource Files</Filter></CustomBuild>
|
||||
<CustomBuild Include="..\..\..\gdk\gdkconfig.h.win32"><Filter>Resource Files</Filter></CustomBuild>
|
||||
<CustomBuild Include="..\..\..\gdk\gdkconfig.h.win32_broadway"><Filter>Resource Files</Filter></CustomBuild>
|
||||
<CustomBuild Include="..\..\..\demos\gtk-demo\demos.h.win32"><Filter>Resource Files</Filter></CustomBuild>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -12,8 +12,7 @@
|
||||
<GtkSeparateVSDllSuffix>-vs$(VSVer)</GtkSeparateVSDllSuffix>
|
||||
<GtkDllPrefix>$(GtkSeparateVSDllPrefix)</GtkDllPrefix>
|
||||
<GtkDllSuffix>$(GtkSeparateVSDllSuffix)</GtkDllSuffix>
|
||||
<PythonPath>c:\python34</PythonPath>
|
||||
<PythonPathX64>$(PythonPath).x64</PythonPathX64>
|
||||
<PythonPath>c:\python27</PythonPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>gtk3versionpathsprops</_PropertySheetDisplayName>
|
||||
@@ -55,8 +54,5 @@
|
||||
<BuildMacro Include="PythonPath">
|
||||
<Value>$(PythonPath)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="PythonPathX64">
|
||||
<Value>$(PythonPathX64)</Value>
|
||||
</BuildMacro>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -4,7 +4,6 @@ EXTRA_DIST += \
|
||||
README.txt \
|
||||
gtk+.sln \
|
||||
gtk3-prebuild.vcxproj \
|
||||
gtk3-prebuild.vcxproj.filters \
|
||||
gdk3-win32.vcxproj \
|
||||
gdk3-win32.vcxproj.filters \
|
||||
gdk-3.vcxproj \
|
||||
@@ -28,7 +27,6 @@ EXTRA_DIST += \
|
||||
gailutil-3.vcxproj \
|
||||
gailutil-3.vcxproj.filters \
|
||||
gtk3-install.vcxproj \
|
||||
gtk3-install.vcxproj.filters \
|
||||
broadwayd.vcxproj \
|
||||
broadwayd.vcxproj.filters \
|
||||
gdk3-broadway.vcxproj \
|
||||
|
||||
@@ -4,7 +4,6 @@ EXTRA_DIST += \
|
||||
README.txt \
|
||||
gtk+.sln \
|
||||
gtk3-prebuild.vcxproj \
|
||||
gtk3-prebuild.vcxproj.filters \
|
||||
gdk3-win32.vcxproj \
|
||||
gdk3-win32.vcxproj.filters \
|
||||
gdk-3.vcxproj \
|
||||
@@ -28,7 +27,6 @@ EXTRA_DIST += \
|
||||
gailutil-3.vcxproj \
|
||||
gailutil-3.vcxproj.filters \
|
||||
gtk3-install.vcxproj \
|
||||
gtk3-install.vcxproj.filters \
|
||||
broadwayd.vcxproj \
|
||||
broadwayd.vcxproj.filters \
|
||||
gdk3-broadway.vcxproj \
|
||||
|
||||
@@ -4,7 +4,6 @@ EXTRA_DIST += \
|
||||
README.txt \
|
||||
gtk+.sln \
|
||||
gtk3-prebuild.vcxproj \
|
||||
gtk3-prebuild.vcxproj.filters \
|
||||
gdk3-win32.vcxproj \
|
||||
gdk3-win32.vcxproj.filters \
|
||||
gdk-3.vcxproj \
|
||||
@@ -28,7 +27,6 @@ EXTRA_DIST += \
|
||||
gailutil-3.vcxproj \
|
||||
gailutil-3.vcxproj.filters \
|
||||
gtk3-install.vcxproj \
|
||||
gtk3-install.vcxproj.filters \
|
||||
broadwayd.vcxproj \
|
||||
broadwayd.vcxproj.filters \
|
||||
gdk3-broadway.vcxproj \
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -74,7 +74,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs) $(GdkBroadwayAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib ws2_32.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -104,7 +104,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -136,7 +136,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs) $(GdkBroadwayAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib ws2_32.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -170,7 +170,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -202,7 +202,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs) $(GdkBroadwayAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib ws2_32.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -232,7 +232,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -264,7 +264,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GdkAdditionalLibs) $(GdkBroadwayAdditionalLibs)"
|
||||
AdditionalDependencies="imm32.lib winmm.lib ws2_32.lib dwmapi.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GtkAdditionalLibs)"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -72,7 +72,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GtkAdditionalLibs)"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -106,7 +106,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GtkAdditionalLibs)"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -136,7 +136,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(GtkAdditionalLibs)"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
@@ -180,14 +180,14 @@
|
||||
<FileConfiguration Name="Debug|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating GTK+ DBus Sources..."
|
||||
CommandLine="$(GenerateGtkDbusBuiltSourcesX64)"
|
||||
CommandLine="$(GenerateGtkDbusBuiltSources)"
|
||||
Outputs="..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating GTK+ DBus Sources..."
|
||||
CommandLine="$(GenerateGtkDbusBuiltSourcesX64)"
|
||||
CommandLine="$(GenerateGtkDbusBuiltSources)"
|
||||
Outputs="..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
||||
@@ -43,20 +43,4 @@
|
||||
Name="GtkDefines"
|
||||
Value="GTK_COMPILATION;G_LOG_DOMAIN=\"Gtk\";GTK_HOST=\"i686-pc-vs$(VSVer)\";GTK_PRINT_BACKENDS=\"file\";GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED;$(GtkIncludedImmodulesDefines);GTK_LIBDIR=\"$(GtkDummyPrefix)/lib\";GTK_DATADIR=\"$(GtkDummyPrefix)/share\"GTK_DATA_PREFIX=\"$(GtkDummyPrefix)\";GTK_SYSCONFDIR=\"$(GtkDummyPrefix)/etc\";MULTIPRESS_CONFDIR=\"$(GtkDummyPrefix)/etc/gtk-$(ApiVersion)\";MULTIPRESS_LOCALEDIR=\"$(GtkDummyPrefix)/share/locale\";GTK_VERSION=\"$(GtkVersion)/etc\";GTK_BINARY_VERSION=\"$(GtkBinaryVersion)/etc\";GDK_DISABLE_DEPRECATED;ISOLATION_AWARE_ENABLED"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkGdkCommonLibs"
|
||||
Value="imm32.lib"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GdkBroadwayAdditionalLibs"
|
||||
Value="ws2_32.lib"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GdkAdditionalLibs"
|
||||
Value="winmm.lib dwmapi.lib setupapi.lib $(GtkGdkCommonLibs)"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkAdditionalLibs"
|
||||
Value="atk-1.0.lib pangowin32-1.0.lib winspool.lib comctl32.lib $(GtkGdkCommonLibs)"
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
||||
|
||||
@@ -54,17 +54,13 @@ echo $(ConfigurationName) > ..\..\..\MSVC_$(ConfigurationName)_Broadway
|
||||
:DONE_GDKCONFIG_H

|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GDbusCodeGenCmd"
|
||||
Value="$(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GenerateGtkDbusBuiltSources"
|
||||
Value="cd ..\..\..\gtk & $(PythonPath)\python $(GDbusCodeGenCmd) & cd $(SolutionDir)"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GenerateGtkDbusBuiltSourcesX64"
|
||||
Value="cd ..\..\..\gtk & $(PythonPathX64)\python $(GDbusCodeGenCmd) & cd $(SolutionDir)"
|
||||
Value="
|
||||
cd ..\..\..\gtk

|
||||
$(PythonPath)\python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml

|
||||
cd $(SolutionDir)

|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="CopyGtkWin32RC"
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
DeleteExtensionsOnClean=""
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -41,8 +41,8 @@
|
||||
DeleteExtensionsOnClean=""
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -55,8 +55,8 @@
|
||||
DeleteExtensionsOnClean=""
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -68,8 +68,8 @@
|
||||
DeleteExtensionsOnClean=""
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -83,8 +83,8 @@
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -97,8 +97,8 @@
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -112,8 +112,8 @@
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -126,78 +126,14 @@
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File RelativePath="..\..\..\gtkpc.py">
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPC)"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPC)"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPCX64)"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPCX64)"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug_Broadway|Win32">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPC) --broadway"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release_Broadway|Win32">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPC) --broadway"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug_Broadway|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPCX64) --broadway"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release_Broadway|x64">
|
||||
<Tool Name="VCCustomBuildTool"
|
||||
Description="Generating .pc files..."
|
||||
CommandLine="$(GenerateGtkPCX64) --broadway"
|
||||
Outputs="..\gdk-3.0.pc;..\gtk+-3.0.pc;..\gail-3.0.pc"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioPropertySheet
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="gtkinstallprops"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
>
|
||||
<UserMacro
|
||||
Name="GtkDoInstallBin"
|
||||
Value="
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="gtkinstallprops"
|
||||
InheritedPropertySheets=".\gtk3-build-defines.vsprops"
|
||||
>
|
||||
<UserMacro
|
||||
Name="GtkDoInstallBin"
|
||||
Value="
|
||||
mkdir $(CopyDir)\bin

|
||||
mkdir $(CopyDir)\lib\pkgconfig

|
||||
mkdir $(CopyDir)\lib

|
||||
|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).dll $(CopyDir)\bin

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).pdb $(CopyDir)\bin

|
||||
@@ -90,15 +90,11 @@ copy .\Debug\$(PlatformName)\bin\gtk-query-settings.pdb $(CopyDir)\bin
�
|
||||
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.exe $(CopyDir)\bin

|
||||
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.pdb $(CopyDir)\bin

|
||||
:DONE_BIN

|
||||
|
||||
copy ..\gdk-3.0.pc $(CopyDir)\lib\pkgconfig

|
||||
copy "..\gtk+-3.0.pc" $(CopyDir)\lib\pkgconfig

|
||||
copy ..\gail-3.0.pc $(CopyDir)\lib\pkgconfig

|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkDoInstall"
|
||||
Value="
|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkDoInstall"
|
||||
Value="
|
||||
echo off

|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\win32

|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\deprecated

|
||||
@@ -132,32 +128,20 @@ copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(CopyDir)\share\glib
|
||||
copy ..\..\..\gtk\org.gtk.Settings.ColorChooser.gschema.xml $(CopyDir)\share\glib-2.0\schemas

|
||||
copy ..\..\..\gtk\org.gtk.Settings.Debug.gschema.xml $(CopyDir)\share\glib-2.0\schemas

|
||||
copy ..\..\..\demos\gtk-demo\org.gtk.Demo.gschema.xml $(CopyDir)\share\glib-2.0\schemas

|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkPostInstall"
|
||||
Value="
|
||||
|
||||
echo "Compiling gsettings XML Files..."

|
||||
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas

|
||||
|
||||
echo "Generating icon cache..."

|
||||
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force "$(CopyDir)\share\icons\hicolor"
|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkDoInstallBroadwayHeaders"
|
||||
Value="
|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkDoInstallBroadwayHeaders"
|
||||
Value="
|
||||
copy ..\..\..\gdk\broadway\gdkbroadway.h $(CopyDir)\include\gtk-$(ApiVersion)\gdk

|
||||
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\broadway

|
||||
#include "gdk3-broadway.headers"
|
||||
"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GenerateGtkPC"
|
||||
Value="$(PythonPath)\python ..\gtkpc.py --prefix=$(CopyDir) --version=$(GtkVersion) --host=i686-pc-vs$(VSVer)"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GenerateGtkPCX64"
|
||||
Value="$(PythonPathX64)\python ..\gtkpc.py --prefix=$(CopyDir) --version=$(GtkVersion) --host=x86_64-pc-vs$(VSVer)"
|
||||
/>
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
||||
|
||||
@@ -54,8 +54,4 @@
|
||||
Name="PythonPath"
|
||||
Value="c:\python27"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="PythonPathX64"
|
||||
Value="$(PythonPath).x64"
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
||||
|
||||
@@ -50,11 +50,6 @@
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
/* #undef HAVE_DLFCN_H */
|
||||
|
||||
/* Define to 1 if you have the `exp2' function. */
|
||||
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
|
||||
#define HAVE_EXP2 1
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the `flockfile' function. */
|
||||
#undef HAVE_FLOCKFILE
|
||||
|
||||
@@ -110,11 +105,6 @@
|
||||
/* Define to 1 if you have the `localtime_r' function. */
|
||||
/* #undef HAVE_LOCALTIME_R */
|
||||
|
||||
/* Define to 1 if you have the `log2' function. */
|
||||
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
|
||||
#define HAVE_LOG2 1
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the `lstat' function. */
|
||||
/* #undef HAVE_LSTAT */
|
||||
|
||||
|
||||
136
configure.ac
@@ -9,9 +9,9 @@
|
||||
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
|
||||
|
||||
m4_define([gtk_major_version], [3])
|
||||
m4_define([gtk_minor_version], [22])
|
||||
m4_define([gtk_micro_version], [2])
|
||||
m4_define([gtk_interface_age], [2])
|
||||
m4_define([gtk_minor_version], [20])
|
||||
m4_define([gtk_micro_version], [4])
|
||||
m4_define([gtk_interface_age], [4])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
m4_define([gtk_version],
|
||||
@@ -42,8 +42,8 @@ m4_define([gtk_binary_version], [3.0.0])
|
||||
|
||||
# required versions of other packages
|
||||
m4_define([glib_required_major], [2])
|
||||
m4_define([glib_required_minor], [49])
|
||||
m4_define([glib_required_micro], [4])
|
||||
m4_define([glib_required_minor], [45])
|
||||
m4_define([glib_required_micro], [8])
|
||||
m4_define([glib_required_version],
|
||||
[glib_required_major.glib_required_minor.glib_required_micro])
|
||||
m4_define([glib_min_required_minor],
|
||||
@@ -60,8 +60,8 @@ m4_define([cairo_required_version], [1.14.0])
|
||||
m4_define([gdk_pixbuf_required_version], [2.30.0])
|
||||
m4_define([introspection_required_version], [1.39.0])
|
||||
m4_define([wayland_required_version], [1.9.91])
|
||||
m4_define([wayland_protocols_required_version], [1.7])
|
||||
m4_define([mirclient_required_version], [0.22.0])
|
||||
m4_define([wayland_protocols_required_version], [1.0])
|
||||
m4_define([mirclient_required_version], [0.11.0])
|
||||
m4_define([mircookie_required_version], [0.17.0])
|
||||
m4_define([epoxy_required_version], [1.0])
|
||||
GLIB_REQUIRED_VERSION=glib_required_version
|
||||
@@ -161,13 +161,6 @@ AC_PROG_MKDIR_P
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
# Define _GNU_SOURCE etc. where appropriate, e.g. for strptime() on glibc
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
# i18n stuff
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.7])
|
||||
|
||||
GETTEXT_PACKAGE=gtk30
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||
@@ -211,6 +204,9 @@ case $host in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Define _GNU_SOURCE etc. where appropriate, e.g. for strptime() on glibc
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
dnl
|
||||
dnl Check for a working C++ compiler, but do not bail out, if none is found.
|
||||
dnl We use this for an automated test for C++ header correctness.
|
||||
@@ -389,7 +385,7 @@ if test "$enable_win32_backend" = "yes"; then
|
||||
backend_immodules="$backend_immodules,ime"
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_WIN32"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi"
|
||||
AM_CONDITIONAL(USE_WIN32, true)
|
||||
PANGO_PACKAGES="pangowin32 pangocairo"
|
||||
else
|
||||
@@ -585,21 +581,18 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
|
||||
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
|
||||
|
||||
# Remove this check once cairo_required_version reaches at least 1.16.0
|
||||
AS_CASE([$host_os],
|
||||
[mingw*],
|
||||
[
|
||||
case $host_os in
|
||||
mingw*)
|
||||
PKG_CHECK_MODULES(CAIRO, [cairo >= cairo_required_version])
|
||||
gtk_save_LIBS="$LIBS"
|
||||
LIBS="$CAIRO_LIBS $LIBS"
|
||||
AC_CHECK_LIB([cairo], [cairo_win32_surface_create_with_format],
|
||||
[AC_MSG_RESULT([found])],
|
||||
[AC_MSG_ERROR(
|
||||
[cairo_win32_surface_create_with_format is not found in cairo library
|
||||
You need a cairo snapshot 1.15.x or 1.16.x release or newer])])
|
||||
LIBS="$gtk_save_LIBS"
|
||||
],
|
||||
[]
|
||||
)
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
|
||||
@@ -689,7 +682,46 @@ if test "$gtk_ok" = "yes"; then
|
||||
[Define if _NL_PAPER_WIDTH is available])
|
||||
fi
|
||||
|
||||
# i18n stuff
|
||||
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
AC_MSG_CHECKING([whether xgettext supports ui files])
|
||||
if $ac_cv_path_XGETTEXT --output=- --color=no --language=Glade $srcdir/gtk/ui/gtkfilechooserwidget.ui > /dev/null 2>&1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([GNU gettext 0.18.3 or newer is required])
|
||||
fi
|
||||
|
||||
LIBS="$LIBS $INTLLIBS"
|
||||
AC_CONFIG_COMMANDS([po-properties],
|
||||
[[case "$CONFIG_FILES" in *po-properties/Makefile.in*)
|
||||
sed -e "/POTFILES =/r po-properties/POTFILES" po-properties/Makefile.in > po-properties/Makefile
|
||||
esac]],
|
||||
[[]])
|
||||
|
||||
dnl Snippet below is copied from AM_GLIB_GNU_GETTEXT to generate a first
|
||||
dnl po-properties/POTFILES during configure; see GNOME #573515.
|
||||
dnl
|
||||
dnl Generate list of files to be processed by xgettext which will
|
||||
dnl be included in po-properties/Makefile.
|
||||
test -d po-properties || mkdir po-properties
|
||||
if test "x$srcdir" != "x."; then
|
||||
if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
|
||||
popropsrcprefix="$srcdir/"
|
||||
else
|
||||
popropsrcprefix="../$srcdir/"
|
||||
fi
|
||||
else
|
||||
popropsrcprefix="../"
|
||||
fi
|
||||
rm -f po-properties/POTFILES
|
||||
sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $popropsrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
|
||||
< $srcdir/po-properties/POTFILES.in > po-properties/POTFILES
|
||||
dnl (End of adapted AM_GLIB_GNU_GETTEXT snippet.)
|
||||
|
||||
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
|
||||
|
||||
dnl The DU4 header files don't provide library prototypes unless
|
||||
dnl -std1 is given to the native cc.
|
||||
@@ -724,54 +756,6 @@ case $host in
|
||||
;;
|
||||
esac
|
||||
|
||||
AS_CASE([$host_os],
|
||||
[mingw*],
|
||||
[
|
||||
AC_CHECK_SIZEOF(
|
||||
[DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY],
|
||||
[],
|
||||
[
|
||||
#define _WIN32_WINNT 0x601
|
||||
#include <windows.h>
|
||||
]
|
||||
)
|
||||
AS_IF(
|
||||
[test x$ac_cv_sizeof_DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY = x4],
|
||||
[AC_MSG_RESULT([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is OK])],
|
||||
[test x$ac_cv_sizeof_DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY = x0],
|
||||
[AC_MSG_ERROR([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is unavailable])],
|
||||
[AC_MSG_RESULT([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is not OK])]
|
||||
)
|
||||
AC_MSG_CHECKING([for SetupDiGetDevicePropertyW])
|
||||
gtk_save_LIBS="$LIBS"
|
||||
LIBS="-lsetupapi $LIBS"
|
||||
AC_TRY_LINK(
|
||||
[
|
||||
#define _WIN32_WINNT 0x0600
|
||||
#include <windows.h>
|
||||
#include <devpropdef.h>
|
||||
#include <setupapi.h>
|
||||
],
|
||||
[return SetupDiGetDevicePropertyW(NULL, NULL, NULL, NULL, NULL, 0, NULL, 0);],
|
||||
[have_SetupDiGetDevicePropertyW=yes],
|
||||
[have_SetupDiGetDevicePropertyW=no]
|
||||
)
|
||||
AS_IF(
|
||||
[test x$have_SetupDiGetDevicePropertyW = xyes],
|
||||
[
|
||||
AC_DEFINE(
|
||||
[HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W],
|
||||
[1],
|
||||
[Define to 1 if SetupDiGetDevicePropertyW() is available]
|
||||
)
|
||||
]
|
||||
)
|
||||
AC_MSG_RESULT([$have_SetupDiGetDevicePropertyW])
|
||||
LIBS="$gtk_save_LIBS"
|
||||
],
|
||||
[]
|
||||
)
|
||||
|
||||
AC_SUBST(MATH_LIB)
|
||||
#
|
||||
# see bug 162979
|
||||
@@ -810,9 +794,6 @@ LIBS="$LIBS $GLIB_LIBS"
|
||||
AC_CHECK_FUNCS(bind_textdomain_codeset)
|
||||
LIBS=$gtk_save_LIBS
|
||||
|
||||
AC_CHECK_HEADERS(linux/memfd.h,
|
||||
AC_DEFINE(HAVE_LINUX_MEMFD_H, 1,
|
||||
[Define to 1 if memfd.h is available]))
|
||||
AC_CHECK_HEADERS(sys/mman.h,
|
||||
AC_DEFINE(HAVE_SYS_MMAN_H, 1,
|
||||
[Define to 1 if mman.h is available]))
|
||||
@@ -865,7 +846,7 @@ AC_TYPE_UID_T
|
||||
|
||||
# Check for round(), rint(), isnan(), isinf() and nearbyint()
|
||||
AC_CHECK_LIB(m,round,,)
|
||||
AC_CHECK_FUNCS(round rint nearbyint sincos exp2 log2)
|
||||
AC_CHECK_FUNCS(round rint nearbyint sincos)
|
||||
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
|
||||
|
||||
# Checks for gdkspawn
|
||||
@@ -1491,7 +1472,7 @@ else
|
||||
CUPS_API_MAJOR=`echo $ECHO_N $CUPS_API_VERSION | awk -F. '{print $1}'`
|
||||
CUPS_API_MINOR=`echo $ECHO_N $CUPS_API_VERSION | awk -F. '{print $2}'`
|
||||
|
||||
if test $CUPS_API_MAJOR -lt 1 -o \
|
||||
if test $CUPS_API_MAJOR -gt 1 -o \
|
||||
$CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -lt 2; then
|
||||
AC_MSG_ERROR([CUPS >= 1.2 not found])
|
||||
fi
|
||||
@@ -1939,6 +1920,7 @@ docs/reference/libgail-util/Makefile
|
||||
docs/reference/libgail-util/version.xml
|
||||
docs/tools/Makefile
|
||||
build/Makefile
|
||||
build/gtk-introspection-msvc.mak
|
||||
build/win32/Makefile
|
||||
build/win32/vs9/Makefile
|
||||
build/win32/vs9/gtk3-version-paths.vsprops
|
||||
|
||||
@@ -14,7 +14,6 @@ demos_base = \
|
||||
combobox.c \
|
||||
css_accordion.c \
|
||||
css_basics.c \
|
||||
css_blendmodes.c \
|
||||
css_multiplebgs.c \
|
||||
css_pixbufs.c \
|
||||
css_shadows.c \
|
||||
|
||||
@@ -1,392 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkWindow" id="window">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="resizable">False</property>
|
||||
<property name="title">CSS Blend Modes</property>
|
||||
<property name="default_width">400</property>
|
||||
<property name="default_height">300</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">12</property>
|
||||
<property name="row_spacing">12</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Blend mode:</property>
|
||||
<property name="xalign">0</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<property name="min_content_width">150</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStackSwitcher">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="stack">stack</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStack" id="stack">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="hhomogeneous">False</property>
|
||||
<property name="vhomogeneous">False</property>
|
||||
<property name="transition_type">crossfade</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">False</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="row_spacing">12</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Duck</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Background</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="duck"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="gradient"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">
|
||||
Blended picture</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="blend0"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page0</property>
|
||||
<property name="title" translatable="yes">Ducky</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">False</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="row_spacing">12</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Red</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Blue</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="red"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="blue"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">
|
||||
Blended picture</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="blend1"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page1</property>
|
||||
<property name="title" translatable="yes">Blends</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="cyan"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="magenta"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<style>
|
||||
<class name="yellow"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="blend2"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Cyan</property>
|
||||
<property name="xalign">0</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Magenta</property>
|
||||
<property name="xalign">0</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Yellow</property>
|
||||
<property name="xalign">0</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Blended picture</property>
|
||||
<property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page2</property>
|
||||
<property name="title" translatable="yes">CMYK</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
|
Before Width: | Height: | Size: 788 B |
@@ -193,7 +193,7 @@ button_press (GtkWidget *widget,
|
||||
gtk_widget_show (item);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
|
||||
gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *) button);
|
||||
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 3, button->time);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -4,7 +4,7 @@
|
||||
transition-property: color, background-color, border-color, background-image, padding, border-width;
|
||||
transition-duration: 1s;
|
||||
|
||||
font: 20px Cantarell;
|
||||
font: Cantarell 20px;
|
||||
}
|
||||
|
||||
window {
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
/* Theming/CSS Blend Modes
|
||||
*
|
||||
* You can blend multiple backgrounds using the CSS blend modes available.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#define WID(x) ((GtkWidget*) gtk_builder_get_object (builder, x))
|
||||
|
||||
/*
|
||||
* These are the available blend modes.
|
||||
*/
|
||||
struct {
|
||||
gchar *name;
|
||||
gchar *id;
|
||||
} blend_modes[] =
|
||||
{
|
||||
{ "Color", "color" },
|
||||
{ "Color (burn)", "color-burn" },
|
||||
{ "Color (dodge)", "color-dodge" },
|
||||
{ "Darken", "darken" },
|
||||
{ "Difference", "difference" },
|
||||
{ "Exclusion", "exclusion" },
|
||||
{ "Hard Light", "hard-light" },
|
||||
{ "Hue", "hue" },
|
||||
{ "Lighten", "lighten" },
|
||||
{ "Luminosity", "luminosity" },
|
||||
{ "Multiply", "multiply" },
|
||||
{ "Normal", "normal" },
|
||||
{ "Overlay", "overlay" },
|
||||
{ "Saturate", "saturate" },
|
||||
{ "Screen", "screen" },
|
||||
{ "Soft Light", "soft-light" },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
||||
static void
|
||||
update_css_for_blend_mode (GtkCssProvider *provider,
|
||||
const gchar *blend_mode)
|
||||
{
|
||||
GBytes *bytes;
|
||||
gchar *css;
|
||||
|
||||
bytes = g_resources_lookup_data ("/css_blendmodes/css_blendmodes.css", 0, NULL);
|
||||
|
||||
css = g_strdup_printf ((gchar*) g_bytes_get_data (bytes, NULL),
|
||||
blend_mode,
|
||||
blend_mode,
|
||||
blend_mode);
|
||||
|
||||
gtk_css_provider_load_from_data (provider, css, -1, NULL);
|
||||
|
||||
g_bytes_unref (bytes);
|
||||
g_free (css);
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
static void
|
||||
row_activated (GtkListBox *listbox,
|
||||
GtkListBoxRow *row,
|
||||
GtkCssProvider *provider)
|
||||
{
|
||||
const gchar *blend_mode;
|
||||
|
||||
blend_mode = blend_modes[gtk_list_box_row_get_index (row)].id;
|
||||
|
||||
update_css_for_blend_mode (provider, blend_mode);
|
||||
}
|
||||
|
||||
static void
|
||||
setup_listbox (GtkBuilder *builder,
|
||||
GtkStyleProvider *provider)
|
||||
{
|
||||
GtkWidget *normal_row;
|
||||
GtkWidget *listbox;
|
||||
gint i;
|
||||
|
||||
normal_row = NULL;
|
||||
listbox = gtk_list_box_new ();
|
||||
gtk_container_add (GTK_CONTAINER (WID ("scrolledwindow")), listbox);
|
||||
|
||||
g_signal_connect (listbox, "row-activated", G_CALLBACK (row_activated), provider);
|
||||
|
||||
/* Add a row for each blend mode available */
|
||||
for (i = 0; blend_modes[i].name != NULL; i++)
|
||||
{
|
||||
GtkWidget *label;
|
||||
GtkWidget *row;
|
||||
|
||||
row = gtk_list_box_row_new ();
|
||||
label = g_object_new (GTK_TYPE_LABEL,
|
||||
"label", blend_modes[i].name,
|
||||
"xalign", 0.0,
|
||||
NULL);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (row), label);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (listbox), row);
|
||||
|
||||
/* The first selected row is "normal" */
|
||||
if (g_strcmp0 (blend_modes[i].id, "normal") == 0)
|
||||
normal_row = row;
|
||||
}
|
||||
|
||||
/* Select the "normal" row */
|
||||
gtk_list_box_select_row (GTK_LIST_BOX (listbox), GTK_LIST_BOX_ROW (normal_row));
|
||||
g_signal_emit_by_name (G_OBJECT (normal_row), "activate");
|
||||
|
||||
gtk_widget_grab_focus (normal_row);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_css_blendmodes (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkStyleProvider *provider;
|
||||
GtkBuilder *builder;
|
||||
|
||||
builder = gtk_builder_new_from_resource ("/css_blendmodes/blendmodes.ui");
|
||||
|
||||
window = WID ("window");
|
||||
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
|
||||
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
/* Setup the CSS provider for window */
|
||||
provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
|
||||
|
||||
gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
|
||||
provider,
|
||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
|
||||
setup_listbox (builder, provider);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show_all (window);
|
||||
else
|
||||
gtk_widget_destroy (window);
|
||||
|
||||
return window;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
* First page.
|
||||
*/
|
||||
image.duck {
|
||||
background-image: url('resource://css_blendmodes/ducky.png');
|
||||
background-size: cover;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.gradient {
|
||||
background-image: linear-gradient(to right, red 0%%, green 50%%, blue 100%%);
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Second page.
|
||||
*/
|
||||
image.red {
|
||||
background: url('resource://css_blendmodes/blends.png') top center;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.blue {
|
||||
background: url('resource://css_blendmodes/blends.png') bottom center;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Third page.
|
||||
*/
|
||||
image.cyan {
|
||||
background: url('resource://css_blendmodes/cmy.jpg') top center;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.magenta {
|
||||
background: url('resource://css_blendmodes/cmy.jpg') center center;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.yellow {
|
||||
background: url('resource://css_blendmodes/cmy.jpg') bottom center;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.blend0 {
|
||||
background-image: url('resource://css_blendmodes/ducky.png'),
|
||||
linear-gradient(to right, red 0%%, green 50%%, blue 100%%);
|
||||
background-size: cover;
|
||||
background-blend-mode: %s;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.blend1 {
|
||||
background: url('resource://css_blendmodes/blends.png') top center,
|
||||
url('resource://css_blendmodes/blends.png') bottom center;
|
||||
background-blend-mode: %s;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
image.blend2 {
|
||||
background: url('resource://css_blendmodes/cmy.jpg') top center,
|
||||
url('resource://css_blendmodes/cmy.jpg') center center,
|
||||
url('resource://css_blendmodes/cmy.jpg') bottom center;
|
||||
background-blend-mode: %s;
|
||||
min-width: 200px;
|
||||
min-height: 200px;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Make the text editor has a nice style */
|
||||
.view {
|
||||
color: #2e3436;
|
||||
font-family: Monospace;
|
||||
font: Monospace;
|
||||
background-color: alpha(white, 0.30);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,13 +20,6 @@
|
||||
<file>css_basics.css</file>
|
||||
<file>reset.css</file>
|
||||
</gresource>
|
||||
<gresource prefix="/css_blendmodes">
|
||||
<file>css_blendmodes.css</file>
|
||||
<file>blendmodes.ui</file>
|
||||
<file>blends.png</file>
|
||||
<file>ducky.png</file>
|
||||
<file>cmy.jpg</file>
|
||||
</gresource>
|
||||
<gresource prefix="/css_multiplebgs">
|
||||
<file>css_multiplebgs.css</file>
|
||||
<file>brick.png</file>
|
||||
@@ -61,7 +54,6 @@
|
||||
<file>all_scroll_cursor.png</file>
|
||||
<file>cell_cursor.png</file>
|
||||
<file>col_resize_cursor.png</file>
|
||||
<file>context_menu_cursor.png</file>
|
||||
<file>copy_cursor.png</file>
|
||||
<file>crosshair_cursor.png</file>
|
||||
<file>default_cursor.png</file>
|
||||
@@ -137,7 +129,6 @@
|
||||
<file>combobox.c</file>
|
||||
<file>css_accordion.c</file>
|
||||
<file>css_basics.c</file>
|
||||
<file>css_blendmodes.c</file>
|
||||
<file>css_multiplebgs.c</file>
|
||||
<file>css_pixbufs.c</file>
|
||||
<file>css_shadows.c</file>
|
||||
@@ -208,10 +199,8 @@
|
||||
<file>popover.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/glarea">
|
||||
<file>glarea-gl.fs.glsl</file>
|
||||
<file>glarea-gl.vs.glsl</file>
|
||||
<file>glarea-gles.fs.glsl</file>
|
||||
<file>glarea-gles.vs.glsl</file>
|
||||
<file>glarea-fragment.glsl</file>
|
||||
<file>glarea-vertex.glsl</file>
|
||||
</gresource>
|
||||
<gresource prefix="/font_features">
|
||||
<file>font-features.ui</file>
|
||||
|
||||
|
Before Width: | Height: | Size: 243 KiB |
@@ -1,12 +1,11 @@
|
||||
/* Touch and Drawing Tablets
|
||||
/* Event Axes
|
||||
*
|
||||
* Demonstrates advanced handling of event information from exotic
|
||||
* input devices.
|
||||
*
|
||||
* On one hand, this snippet demonstrates management of drawing tablets,
|
||||
* On one hand, this snippet demonstrates management of input axes,
|
||||
* those contain additional information for the pointer other than
|
||||
* X/Y coordinates. Tablet pads events are mapped to actions, which
|
||||
* are both defined and interpreted by the application.
|
||||
* X/Y coordinates.
|
||||
*
|
||||
* Input axes are dependent on hardware devices, on linux/unix you
|
||||
* can see the device axes through xinput list <device>. Each time
|
||||
@@ -21,20 +20,18 @@
|
||||
* touchpoints can be tracked.
|
||||
*/
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
typedef struct {
|
||||
GdkDevice *last_source;
|
||||
GdkDeviceTool *last_tool;
|
||||
gdouble *axes;
|
||||
GHashTable *axes; /* axis label atom -> value */
|
||||
GdkRGBA color;
|
||||
gdouble x;
|
||||
gdouble y;
|
||||
} AxesInfo;
|
||||
|
||||
typedef struct {
|
||||
GHashTable *pointer_info; /* GdkDevice -> AxesInfo */
|
||||
AxesInfo *pointer_info;
|
||||
GHashTable *touch_info; /* GdkEventSequence -> AxesInfo */
|
||||
} EventData;
|
||||
|
||||
@@ -53,30 +50,7 @@ const gchar *colors[] = {
|
||||
"burlywood"
|
||||
};
|
||||
|
||||
static GtkPadActionEntry pad_actions[] = {
|
||||
{ GTK_PAD_ACTION_BUTTON, 1, -1, N_("Nuclear strike"), "pad.nuke" },
|
||||
{ GTK_PAD_ACTION_BUTTON, 2, -1, N_("Release siberian methane reserves"), "pad.heat" },
|
||||
{ GTK_PAD_ACTION_BUTTON, 3, -1, N_("Release solar flare"), "pad.fry" },
|
||||
{ GTK_PAD_ACTION_BUTTON, 4, -1, N_("De-stabilize Oort cloud"), "pad.fall" },
|
||||
{ GTK_PAD_ACTION_BUTTON, 5, -1, N_("Ignite WR-104"), "pad.burst" },
|
||||
{ GTK_PAD_ACTION_BUTTON, 6, -1, N_("Lart whoever asks about this button"), "pad.lart" },
|
||||
{ GTK_PAD_ACTION_RING, -1, -1, N_("Earth axial tilt"), "pad.tilt" },
|
||||
{ GTK_PAD_ACTION_STRIP, -1, -1, N_("Extent of weak nuclear force"), "pad.dissolve" },
|
||||
};
|
||||
|
||||
static const gchar *pad_action_results[] = {
|
||||
"☢",
|
||||
"♨",
|
||||
"☼",
|
||||
"☄",
|
||||
"⚡",
|
||||
"💫",
|
||||
"◑",
|
||||
"⚛"
|
||||
};
|
||||
|
||||
static guint cur_color = 0;
|
||||
static guint pad_action_timeout_id = 0;
|
||||
|
||||
static AxesInfo *
|
||||
axes_info_new (void)
|
||||
@@ -85,22 +59,51 @@ axes_info_new (void)
|
||||
|
||||
info = g_new0 (AxesInfo, 1);
|
||||
gdk_rgba_parse (&info->color, colors[cur_color]);
|
||||
info->axes = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
|
||||
cur_color = (cur_color + 1) % G_N_ELEMENTS (colors);
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
static void
|
||||
axes_info_free (AxesInfo *info)
|
||||
{
|
||||
g_hash_table_destroy (info->axes);
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
axes_info_lookup (AxesInfo *info,
|
||||
const gchar *axis_label,
|
||||
gdouble *value)
|
||||
{
|
||||
gdouble *val;
|
||||
GdkAtom atom;
|
||||
|
||||
atom = gdk_atom_intern (axis_label, FALSE);
|
||||
|
||||
if (atom == GDK_NONE)
|
||||
return FALSE;
|
||||
|
||||
val = g_hash_table_lookup (info->axes, GDK_ATOM_TO_POINTER (atom));
|
||||
|
||||
if (!val)
|
||||
return FALSE;
|
||||
|
||||
*value = *val;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static EventData *
|
||||
event_data_new (void)
|
||||
{
|
||||
EventData *data;
|
||||
|
||||
data = g_new0 (EventData, 1);
|
||||
data->pointer_info = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
data->touch_info = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
(GDestroyNotify) axes_info_free);
|
||||
|
||||
return data;
|
||||
}
|
||||
@@ -108,7 +111,8 @@ event_data_new (void)
|
||||
static void
|
||||
event_data_free (EventData *data)
|
||||
{
|
||||
g_hash_table_destroy (data->pointer_info);
|
||||
if (data->pointer_info)
|
||||
axes_info_free (data->pointer_info);
|
||||
g_hash_table_destroy (data->touch_info);
|
||||
g_free (data);
|
||||
}
|
||||
@@ -119,14 +123,13 @@ update_axes_from_event (GdkEvent *event,
|
||||
{
|
||||
GdkDevice *device, *source_device;
|
||||
GdkEventSequence *sequence;
|
||||
GdkDeviceTool *tool;
|
||||
gdouble x, y;
|
||||
gdouble x, y, value;
|
||||
GList *l, *axes;
|
||||
AxesInfo *info;
|
||||
|
||||
device = gdk_event_get_device (event);
|
||||
source_device = gdk_event_get_source_device (event);
|
||||
sequence = gdk_event_get_event_sequence (event);
|
||||
tool = gdk_event_get_device_tool (event);
|
||||
|
||||
if (event->type == GDK_TOUCH_END ||
|
||||
event->type == GDK_TOUCH_CANCEL)
|
||||
@@ -136,19 +139,17 @@ update_axes_from_event (GdkEvent *event,
|
||||
}
|
||||
else if (event->type == GDK_LEAVE_NOTIFY)
|
||||
{
|
||||
g_hash_table_remove (data->pointer_info, device);
|
||||
if (data->pointer_info)
|
||||
axes_info_free (data->pointer_info);
|
||||
data->pointer_info = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sequence)
|
||||
{
|
||||
info = g_hash_table_lookup (data->pointer_info, device);
|
||||
|
||||
if (!info)
|
||||
{
|
||||
info = axes_info_new ();
|
||||
g_hash_table_insert (data->pointer_info, device, info);
|
||||
}
|
||||
if (!data->pointer_info)
|
||||
data->pointer_info = axes_info_new ();
|
||||
info = data->pointer_info;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -162,31 +163,41 @@ update_axes_from_event (GdkEvent *event,
|
||||
}
|
||||
|
||||
if (info->last_source != source_device)
|
||||
info->last_source = source_device;
|
||||
|
||||
if (info->last_tool != tool)
|
||||
info->last_tool = tool;
|
||||
|
||||
g_clear_pointer (&info->axes, g_free);
|
||||
{
|
||||
g_hash_table_remove_all (info->axes);
|
||||
info->last_source = source_device;
|
||||
}
|
||||
|
||||
if (event->type == GDK_TOUCH_BEGIN ||
|
||||
event->type == GDK_TOUCH_UPDATE)
|
||||
event->type == GDK_TOUCH_UPDATE ||
|
||||
event->type == GDK_MOTION_NOTIFY ||
|
||||
event->type == GDK_BUTTON_PRESS ||
|
||||
event->type == GDK_BUTTON_RELEASE)
|
||||
{
|
||||
axes = gdk_device_list_axes (device);
|
||||
|
||||
if (sequence && event->touch.emulating_pointer)
|
||||
g_hash_table_remove (data->pointer_info, device);
|
||||
}
|
||||
if (event->type == GDK_MOTION_NOTIFY)
|
||||
{
|
||||
info->axes =
|
||||
g_memdup (event->motion.axes,
|
||||
sizeof (gdouble) * gdk_device_get_n_axes (source_device));
|
||||
}
|
||||
else if (event->type == GDK_BUTTON_PRESS ||
|
||||
event->type == GDK_BUTTON_RELEASE)
|
||||
{
|
||||
info->axes =
|
||||
g_memdup (event->button.axes,
|
||||
sizeof (gdouble) * gdk_device_get_n_axes (source_device));
|
||||
{
|
||||
if (data->pointer_info)
|
||||
axes_info_free (data->pointer_info);
|
||||
data->pointer_info = NULL;
|
||||
}
|
||||
|
||||
for (l = axes; l; l = l->next)
|
||||
{
|
||||
gdouble *ptr;
|
||||
|
||||
/* All those event types are compatible wrt axes position in the struct */
|
||||
if (!gdk_device_get_axis_value (device, event->motion.axes,
|
||||
l->data, &value))
|
||||
continue;
|
||||
|
||||
ptr = g_new0 (gdouble, 1);
|
||||
*ptr = value;
|
||||
g_hash_table_insert (info->axes, GDK_ATOM_TO_POINTER (l->data), ptr);
|
||||
}
|
||||
|
||||
g_list_free (axes);
|
||||
}
|
||||
|
||||
if (gdk_event_get_coords (event, &x, &y))
|
||||
@@ -231,8 +242,7 @@ draw_axes_info (cairo_t *cr,
|
||||
AxesInfo *info,
|
||||
GtkAllocation *allocation)
|
||||
{
|
||||
gdouble pressure, tilt_x, tilt_y, distance, wheel, rotation, slider;
|
||||
GdkAxisFlags axes = gdk_device_get_axes (info->last_source);
|
||||
gdouble pressure, tilt_x, tilt_y, wheel;
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
@@ -247,19 +257,10 @@ draw_axes_info (cairo_t *cr,
|
||||
|
||||
cairo_translate (cr, info->x, info->y);
|
||||
|
||||
if (!info->axes)
|
||||
{
|
||||
cairo_restore (cr);
|
||||
return;
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_PRESSURE)
|
||||
if (axes_info_lookup (info, "Abs Pressure", &pressure))
|
||||
{
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_PRESSURE,
|
||||
&pressure);
|
||||
|
||||
pattern = cairo_pattern_create_radial (0, 0, 0, 0, 0, 100);
|
||||
cairo_pattern_add_color_stop_rgba (pattern, pressure, 1, 0, 0, pressure);
|
||||
cairo_pattern_add_color_stop_rgba (pattern, 1, 0, 0, 1, 0);
|
||||
@@ -272,49 +273,12 @@ draw_axes_info (cairo_t *cr,
|
||||
cairo_pattern_destroy (pattern);
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_XTILT &&
|
||||
axes & GDK_AXIS_FLAG_YTILT)
|
||||
if (axes_info_lookup (info, "Abs Tilt X", &tilt_x) &&
|
||||
axes_info_lookup (info, "Abs Tilt Y", &tilt_y))
|
||||
render_arrow (cr, tilt_x * 100, tilt_y * 100, "Tilt");
|
||||
|
||||
if (axes_info_lookup (info, "Abs Wheel", &wheel))
|
||||
{
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_XTILT,
|
||||
&tilt_x);
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_YTILT,
|
||||
&tilt_y);
|
||||
|
||||
render_arrow (cr, tilt_x * 100, tilt_y * 100, "Tilt");
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_DISTANCE)
|
||||
{
|
||||
double dashes[] = { 5.0, 5.0 };
|
||||
cairo_text_extents_t extents;
|
||||
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_DISTANCE,
|
||||
&distance);
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
cairo_move_to (cr, distance * 100, 0);
|
||||
|
||||
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
|
||||
cairo_set_dash (cr, dashes, 2, 0.0);
|
||||
cairo_arc (cr, 0, 0, distance * 100, 0, 2 * G_PI);
|
||||
cairo_stroke (cr);
|
||||
|
||||
cairo_move_to (cr, 0, -distance * 100);
|
||||
cairo_text_extents (cr, "Distance", &extents);
|
||||
cairo_rel_move_to (cr, -extents.width / 2, 0);
|
||||
cairo_show_text (cr, "Distance");
|
||||
|
||||
cairo_move_to (cr, 0, 0);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_WHEEL)
|
||||
{
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_WHEEL,
|
||||
&wheel);
|
||||
|
||||
cairo_save (cr);
|
||||
cairo_set_line_width (cr, 10);
|
||||
cairo_set_source_rgba (cr, 0, 0, 0, 0.5);
|
||||
@@ -325,88 +289,9 @@ draw_axes_info (cairo_t *cr,
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_ROTATION)
|
||||
{
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_ROTATION,
|
||||
&rotation);
|
||||
rotation *= 2 * G_PI;
|
||||
|
||||
cairo_save (cr);
|
||||
cairo_rotate (cr, - G_PI / 2);
|
||||
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
|
||||
cairo_set_line_width (cr, 5);
|
||||
|
||||
cairo_new_sub_path (cr);
|
||||
cairo_arc (cr, 0, 0, 100, 0, rotation);
|
||||
cairo_stroke (cr);
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
if (axes & GDK_AXIS_FLAG_SLIDER)
|
||||
{
|
||||
cairo_pattern_t *pattern, *mask;
|
||||
|
||||
gdk_device_get_axis (info->last_source, info->axes, GDK_AXIS_SLIDER,
|
||||
&slider);
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
cairo_move_to (cr, 0, -10);
|
||||
cairo_rel_line_to (cr, 0, -50);
|
||||
cairo_rel_line_to (cr, 10, 0);
|
||||
cairo_rel_line_to (cr, -5, 50);
|
||||
cairo_close_path (cr);
|
||||
|
||||
cairo_clip_preserve (cr);
|
||||
|
||||
pattern = cairo_pattern_create_linear (0, -10, 0, -60);
|
||||
cairo_pattern_add_color_stop_rgb (pattern, 0, 0, 1, 0);
|
||||
cairo_pattern_add_color_stop_rgb (pattern, 1, 1, 0, 0);
|
||||
cairo_set_source (cr, pattern);
|
||||
cairo_pattern_destroy (pattern);
|
||||
|
||||
mask = cairo_pattern_create_linear (0, -10, 0, -60);
|
||||
cairo_pattern_add_color_stop_rgba (mask, 0, 0, 0, 0, 1);
|
||||
cairo_pattern_add_color_stop_rgba (mask, slider, 0, 0, 0, 1);
|
||||
cairo_pattern_add_color_stop_rgba (mask, slider, 0, 0, 0, 0);
|
||||
cairo_pattern_add_color_stop_rgba (mask, 1, 0, 0, 0, 0);
|
||||
cairo_mask (cr, mask);
|
||||
cairo_pattern_destroy (mask);
|
||||
|
||||
cairo_set_source_rgb (cr, 0, 0, 0);
|
||||
cairo_stroke (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
tool_type_to_string (GdkDeviceToolType tool_type)
|
||||
{
|
||||
switch (tool_type)
|
||||
{
|
||||
case GDK_DEVICE_TOOL_TYPE_PEN:
|
||||
return "Pen";
|
||||
case GDK_DEVICE_TOOL_TYPE_ERASER:
|
||||
return "Eraser";
|
||||
case GDK_DEVICE_TOOL_TYPE_BRUSH:
|
||||
return "Brush";
|
||||
case GDK_DEVICE_TOOL_TYPE_PENCIL:
|
||||
return "Pencil";
|
||||
case GDK_DEVICE_TOOL_TYPE_AIRBRUSH:
|
||||
return "Airbrush";
|
||||
case GDK_DEVICE_TOOL_TYPE_MOUSE:
|
||||
return "Mouse";
|
||||
case GDK_DEVICE_TOOL_TYPE_LENS:
|
||||
return "Lens cursor";
|
||||
case GDK_DEVICE_TOOL_TYPE_UNKNOWN:
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
draw_device_info (GtkWidget *widget,
|
||||
cairo_t *cr,
|
||||
@@ -428,19 +313,6 @@ draw_device_info (GtkWidget *widget,
|
||||
g_string_append_printf (string, "\nSequence: %d",
|
||||
GPOINTER_TO_UINT (sequence));
|
||||
|
||||
if (info->last_tool)
|
||||
{
|
||||
const gchar *tool_type;
|
||||
guint64 serial;
|
||||
|
||||
tool_type = tool_type_to_string (gdk_device_tool_get_tool_type (info->last_tool));
|
||||
serial = gdk_device_tool_get_serial (info->last_tool);
|
||||
g_string_append_printf (string, "\nTool: %s", tool_type);
|
||||
|
||||
if (serial != 0)
|
||||
g_string_append_printf (string, ", Serial: %lx", serial);
|
||||
}
|
||||
|
||||
cairo_move_to (cr, 10, *y);
|
||||
layout = gtk_widget_create_pango_layout (widget, string->str);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
@@ -469,7 +341,7 @@ draw_cb (GtkWidget *widget,
|
||||
{
|
||||
EventData *data = user_data;
|
||||
GtkAllocation allocation;
|
||||
AxesInfo *info;
|
||||
AxesInfo *touch_info;
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
gint y = 0;
|
||||
@@ -477,144 +349,38 @@ draw_cb (GtkWidget *widget,
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
|
||||
/* Draw Abs info */
|
||||
g_hash_table_iter_init (&iter, data->pointer_info);
|
||||
|
||||
while (g_hash_table_iter_next (&iter, NULL, &value))
|
||||
{
|
||||
info = value;
|
||||
draw_axes_info (cr, info, &allocation);
|
||||
}
|
||||
if (data->pointer_info)
|
||||
draw_axes_info (cr, data->pointer_info, &allocation);
|
||||
|
||||
g_hash_table_iter_init (&iter, data->touch_info);
|
||||
|
||||
while (g_hash_table_iter_next (&iter, NULL, &value))
|
||||
{
|
||||
info = value;
|
||||
draw_axes_info (cr, info, &allocation);
|
||||
touch_info = value;
|
||||
draw_axes_info (cr, touch_info, &allocation);
|
||||
}
|
||||
|
||||
/* Draw name, color legend and misc data */
|
||||
g_hash_table_iter_init (&iter, data->pointer_info);
|
||||
|
||||
while (g_hash_table_iter_next (&iter, NULL, &value))
|
||||
{
|
||||
info = value;
|
||||
draw_device_info (widget, cr, NULL, &y, info);
|
||||
}
|
||||
if (data->pointer_info)
|
||||
draw_device_info (widget, cr, NULL, &y, data->pointer_info);
|
||||
|
||||
g_hash_table_iter_init (&iter, data->touch_info);
|
||||
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
{
|
||||
info = value;
|
||||
draw_device_info (widget, cr, key, &y, info);
|
||||
touch_info = value;
|
||||
draw_device_info (widget, cr, key, &y, touch_info);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
update_label_text (GtkWidget *label,
|
||||
const gchar *text)
|
||||
{
|
||||
gchar *markup = NULL;
|
||||
|
||||
if (text)
|
||||
markup = g_strdup_printf ("<span font='48.0'>%s</span>", text);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
reset_label_text_timeout_cb (gpointer user_data)
|
||||
{
|
||||
GtkWidget *label = user_data;
|
||||
|
||||
update_label_text (label, NULL);
|
||||
pad_action_timeout_id = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
update_label_and_timeout (GtkWidget *label,
|
||||
const gchar *text)
|
||||
{
|
||||
if (pad_action_timeout_id)
|
||||
g_source_remove (pad_action_timeout_id);
|
||||
|
||||
update_label_text (label, text);
|
||||
pad_action_timeout_id = g_timeout_add (200, reset_label_text_timeout_cb, label);
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_activate (GSimpleAction *action,
|
||||
GVariant *parameter,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkWidget *label = user_data;
|
||||
const gchar *result;
|
||||
gchar *str;
|
||||
|
||||
result = g_object_get_data (G_OBJECT (action), "action-result");
|
||||
|
||||
if (!parameter)
|
||||
update_label_and_timeout (label, result);
|
||||
else
|
||||
{
|
||||
str = g_strdup_printf ("%s %.2f", result, g_variant_get_double (parameter));
|
||||
update_label_and_timeout (label, str);
|
||||
g_free (str);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
init_pad_controller (GtkWidget *window,
|
||||
GtkWidget *label)
|
||||
{
|
||||
GtkPadController *pad_controller;
|
||||
GSimpleActionGroup *action_group;
|
||||
GSimpleAction *action;
|
||||
gint i;
|
||||
|
||||
action_group = g_simple_action_group_new ();
|
||||
pad_controller = gtk_pad_controller_new (GTK_WINDOW (window),
|
||||
G_ACTION_GROUP (action_group),
|
||||
NULL);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (pad_actions); i++)
|
||||
{
|
||||
if (pad_actions[i].type == GTK_PAD_ACTION_BUTTON)
|
||||
{
|
||||
action = g_simple_action_new (pad_actions[i].action_name, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
action = g_simple_action_new_stateful (pad_actions[i].action_name,
|
||||
G_VARIANT_TYPE_DOUBLE, NULL);
|
||||
}
|
||||
|
||||
g_signal_connect (action, "activate",
|
||||
G_CALLBACK (on_action_activate), label);
|
||||
g_object_set_data (G_OBJECT (action), "action-result",
|
||||
(gpointer) pad_action_results[i]);
|
||||
g_action_map_add_action (G_ACTION_MAP (action_group), G_ACTION (action));
|
||||
g_object_unref (action);
|
||||
}
|
||||
|
||||
gtk_pad_controller_set_action_entries (pad_controller, pad_actions,
|
||||
G_N_ELEMENTS (pad_actions));
|
||||
g_object_set_data_full (G_OBJECT (window), "pad-controller",
|
||||
pad_controller, g_object_unref);
|
||||
|
||||
g_object_unref (action_group);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_event_axes (GtkWidget *toplevel)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
EventData *event_data;
|
||||
GtkWidget *box, *label;
|
||||
GtkWidget *box;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
@@ -627,14 +393,11 @@ do_event_axes (GtkWidget *toplevel)
|
||||
|
||||
box = gtk_event_box_new ();
|
||||
gtk_container_add (GTK_CONTAINER (window), box);
|
||||
gtk_widget_set_support_multidevice (box, TRUE);
|
||||
gtk_widget_add_events (box,
|
||||
GDK_POINTER_MOTION_MASK |
|
||||
GDK_BUTTON_PRESS_MASK |
|
||||
GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_SMOOTH_SCROLL_MASK |
|
||||
GDK_ENTER_NOTIFY_MASK |
|
||||
GDK_LEAVE_NOTIFY_MASK |
|
||||
GDK_TOUCH_MASK);
|
||||
|
||||
event_data = event_data_new ();
|
||||
@@ -645,12 +408,6 @@ do_event_axes (GtkWidget *toplevel)
|
||||
G_CALLBACK (event_cb), event_data);
|
||||
g_signal_connect (box, "draw",
|
||||
G_CALLBACK (draw_cb), event_data);
|
||||
|
||||
label = gtk_label_new ("");
|
||||
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (box), label);
|
||||
|
||||
init_pad_controller (window, label);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
enum {
|
||||
WIDTH_COLUMN,
|
||||
@@ -84,28 +83,6 @@ visible_func (GtkTreeModel *model,
|
||||
return width < 10;
|
||||
}
|
||||
|
||||
static void
|
||||
cell_edited (GtkCellRendererSpin *cell,
|
||||
const char *path_string,
|
||||
const char *new_text,
|
||||
GtkListStore *store)
|
||||
{
|
||||
int val;
|
||||
GtkTreePath *path;
|
||||
GtkTreeIter iter;
|
||||
int column;
|
||||
|
||||
path = gtk_tree_path_new_from_string (path_string);
|
||||
gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path);
|
||||
gtk_tree_path_free (path);
|
||||
|
||||
column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));
|
||||
|
||||
val = atoi (new_text);
|
||||
|
||||
gtk_list_store_set (store, &iter, column, val, -1);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_filtermodel (GtkWidget *do_widget)
|
||||
{
|
||||
@@ -129,21 +106,15 @@ do_filtermodel (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
store = (GtkListStore*)gtk_builder_get_object (builder, "liststore1");
|
||||
|
||||
column = (GtkTreeViewColumn*)gtk_builder_get_object (builder, "treeviewcolumn1");
|
||||
cell = (GtkCellRenderer*)gtk_builder_get_object (builder, "cellrenderertext1");
|
||||
gtk_tree_view_column_set_cell_data_func (column, cell,
|
||||
format_number, GINT_TO_POINTER (WIDTH_COLUMN), NULL);
|
||||
g_object_set_data (G_OBJECT (cell), "column", GINT_TO_POINTER (WIDTH_COLUMN));
|
||||
g_signal_connect (cell, "edited", G_CALLBACK (cell_edited), store);
|
||||
|
||||
column = (GtkTreeViewColumn*)gtk_builder_get_object (builder, "treeviewcolumn2");
|
||||
cell = (GtkCellRenderer*)gtk_builder_get_object (builder, "cellrenderertext2");
|
||||
gtk_tree_view_column_set_cell_data_func (column, cell,
|
||||
format_number, GINT_TO_POINTER (HEIGHT_COLUMN), NULL);
|
||||
g_object_set_data (G_OBJECT (cell), "column", GINT_TO_POINTER (HEIGHT_COLUMN));
|
||||
g_signal_connect (cell, "edited", G_CALLBACK (cell_edited), store);
|
||||
|
||||
column = (GtkTreeViewColumn*)gtk_builder_get_object (builder, "treeviewcolumn3");
|
||||
cell = (GtkCellRenderer*)gtk_builder_get_object (builder, "cellrenderertext3");
|
||||
@@ -164,6 +135,7 @@ do_filtermodel (GtkWidget *do_widget)
|
||||
cell = (GtkCellRenderer*)gtk_builder_get_object (builder, "cellrendererpixbuf1");
|
||||
gtk_tree_view_column_add_attribute (column, cell, "visible", SQUARE_COLUMN);
|
||||
|
||||
store = (GtkListStore*)gtk_builder_get_object (builder, "liststore1");
|
||||
tree = (GtkWidget*)gtk_builder_get_object (builder, "treeview2");
|
||||
|
||||
types[WIDTH_COLUMN] = G_TYPE_INT;
|
||||
|
||||
@@ -24,12 +24,6 @@
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adj">
|
||||
<property name="lower">5</property>
|
||||
<property name="upper">50</property>
|
||||
<property name="step-increment">1</property>
|
||||
<property name="page-increment">5</property>
|
||||
</object>
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="title" translatable="yes">Filter Model</property>
|
||||
<child>
|
||||
@@ -69,10 +63,7 @@
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
|
||||
<property name="title" translatable="yes">Width</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererSpin" id="cellrenderertext1">
|
||||
<property name="editable">1</property>
|
||||
<property name="adjustment">adj</property>
|
||||
</object>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext1"/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
@@ -80,10 +71,7 @@
|
||||
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
|
||||
<property name="title" translatable="yes">Height</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererSpin" id="cellrenderertext2">
|
||||
<property name="editable">1</property>
|
||||
<property name="adjustment">adj</property>
|
||||
</object>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext2"/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
precision highp float;
|
||||
|
||||
void main() {
|
||||
float lerpVal = gl_FragCoord.y / 500.0f;
|
||||
|
||||
gl_FragColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
attribute vec4 position;
|
||||
|
||||
uniform mat4 mvp;
|
||||
|
||||
void main() {
|
||||
gl_Position = mvp * position;
|
||||
}
|
||||
@@ -93,9 +93,7 @@ create_shader (int type,
|
||||
|
||||
/* Initialize the shaders and link them into a program */
|
||||
static void
|
||||
init_shaders (const char *vertex_path,
|
||||
const char *fragment_path,
|
||||
GLuint *program_out,
|
||||
init_shaders (GLuint *program_out,
|
||||
GLuint *mvp_out)
|
||||
{
|
||||
GLuint vertex, fragment;
|
||||
@@ -104,7 +102,7 @@ init_shaders (const char *vertex_path,
|
||||
int status;
|
||||
GBytes *source;
|
||||
|
||||
source = g_resources_lookup_data (vertex_path, 0, NULL);
|
||||
source = g_resources_lookup_data ("/glarea/glarea-vertex.glsl", 0, NULL);
|
||||
vertex = create_shader (GL_VERTEX_SHADER, g_bytes_get_data (source, NULL));
|
||||
g_bytes_unref (source);
|
||||
|
||||
@@ -114,7 +112,7 @@ init_shaders (const char *vertex_path,
|
||||
return;
|
||||
}
|
||||
|
||||
source = g_resources_lookup_data (fragment_path, 0, NULL);
|
||||
source = g_resources_lookup_data ("/glarea/glarea-fragment.glsl", 0, NULL);
|
||||
fragment = create_shader (GL_FRAGMENT_SHADER, g_bytes_get_data (source, NULL));
|
||||
g_bytes_unref (source);
|
||||
|
||||
@@ -220,29 +218,13 @@ static GLuint mvp_location;
|
||||
static void
|
||||
realize (GtkWidget *widget)
|
||||
{
|
||||
const char *vertex_path, *fragment_path;
|
||||
GdkGLContext *context;
|
||||
|
||||
gtk_gl_area_make_current (GTK_GL_AREA (widget));
|
||||
|
||||
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
|
||||
return;
|
||||
|
||||
context = gtk_gl_area_get_context (GTK_GL_AREA (widget));
|
||||
|
||||
if (gdk_gl_context_get_use_es (context))
|
||||
{
|
||||
vertex_path = "/glarea/glarea-gles.vs.glsl";
|
||||
fragment_path = "/glarea/glarea-gles.fs.glsl";
|
||||
}
|
||||
else
|
||||
{
|
||||
vertex_path = "/glarea/glarea-gl.vs.glsl";
|
||||
fragment_path = "/glarea/glarea-gl.fs.glsl";
|
||||
}
|
||||
|
||||
init_buffers (&position_buffer, NULL);
|
||||
init_shaders (vertex_path, fragment_path, &program, &mvp_location);
|
||||
init_shaders (&program, &mvp_location);
|
||||
}
|
||||
|
||||
/* We should tear down the state when unrealizing */
|
||||
@@ -333,7 +315,7 @@ create_axis_slider (int axis)
|
||||
GtkAdjustment *adj;
|
||||
const char *text;
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE);
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
|
||||
@@ -966,7 +966,7 @@ end_cb (GtkMenuItem *item, GtkWidget *scrollbar)
|
||||
static gboolean
|
||||
scrollbar_popup (GtkWidget *scrollbar, GtkWidget *menu)
|
||||
{
|
||||
gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
|
||||
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ());
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1144,33 +1144,6 @@ out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
print_version (void)
|
||||
{
|
||||
g_print ("gtk3-demo %d.%d.%d\n",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
}
|
||||
|
||||
static int
|
||||
local_options (GApplication *app,
|
||||
GVariantDict *options,
|
||||
gpointer data)
|
||||
{
|
||||
gboolean version = FALSE;
|
||||
|
||||
g_variant_dict_lookup (options, "version", "b", &version);
|
||||
|
||||
if (version)
|
||||
{
|
||||
print_version ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
@@ -1196,7 +1169,6 @@ main (int argc, char **argv)
|
||||
app_entries, G_N_ELEMENTS (app_entries),
|
||||
app);
|
||||
|
||||
g_application_add_main_option (G_APPLICATION (app), "version", 0, 0, G_OPTION_ARG_NONE, "Show program version", NULL);
|
||||
g_application_add_main_option (G_APPLICATION (app), "run", 0, 0, G_OPTION_ARG_STRING, "Run an example", "EXAMPLE");
|
||||
g_application_add_main_option (G_APPLICATION (app), "list", 0, 0, G_OPTION_ARG_NONE, "List examples", NULL);
|
||||
g_application_add_main_option (G_APPLICATION (app), "autoquit", 0, 0, G_OPTION_ARG_NONE, "Quit after a delay", NULL);
|
||||
@@ -1204,7 +1176,6 @@ main (int argc, char **argv)
|
||||
g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
|
||||
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
||||
g_signal_connect (app, "command-line", G_CALLBACK (command_line), NULL);
|
||||
g_signal_connect (app, "handle-local-options", G_CALLBACK (local_options), NULL);
|
||||
|
||||
g_application_run (G_APPLICATION (app), argc, argv);
|
||||
|
||||
|
||||
@@ -28,8 +28,7 @@ source_toggled (GtkToggleButton *button)
|
||||
markup = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
||||
gtk_text_buffer_get_bounds (buffer, &start, &end);
|
||||
gtk_text_buffer_delete (buffer, &start, &end);
|
||||
gtk_text_buffer_get_start_iter (buffer, &start);
|
||||
gtk_text_buffer_insert_markup (buffer, &start, markup, -1);
|
||||
g_free (markup);
|
||||
|
||||
@@ -68,7 +67,6 @@ do_markup (GtkWidget *do_widget)
|
||||
g_signal_connect (show_source, "toggled", G_CALLBACK (source_toggled), stack);
|
||||
|
||||
header = gtk_header_bar_new ();
|
||||
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header), TRUE);
|
||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), show_source);
|
||||
gtk_widget_show_all (header);
|
||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="action-name">win.color</property>
|
||||
<property name="action-target">'red'</property>
|
||||
<property name="text">Red</property>
|
||||
<property name="inverted">1</property>
|
||||
</object>
|
||||
@@ -75,7 +74,6 @@
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="action-name">win.color</property>
|
||||
<property name="action-target">'green'</property>
|
||||
<property name="text">Green</property>
|
||||
<property name="inverted">1</property>
|
||||
</object>
|
||||
@@ -84,7 +82,6 @@
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">1</property>
|
||||
<property name="action-name">win.color</property>
|
||||
<property name="action-target">'blue'</property>
|
||||
<property name="text">Blue</property>
|
||||
<property name="inverted">1</property>
|
||||
</object>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -51,6 +51,13 @@ create_complex_popover (GtkWidget *parent,
|
||||
popover = create_popover (parent, content, GTK_POS_BOTTOM);
|
||||
g_object_unref (content);
|
||||
|
||||
gtk_widget_set_size_request (popover, 200, -1);
|
||||
gtk_widget_set_vexpand (popover, TRUE);
|
||||
|
||||
gtk_widget_set_margin_start (popover, 10);
|
||||
gtk_widget_set_margin_end (popover, 10);
|
||||
gtk_widget_set_margin_bottom (popover, 10);
|
||||
|
||||
return popover;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,6 @@
|
||||
<property name="visible">1</property>
|
||||
<property name="can_focus">1</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<property name="max-content-height">100</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="treeview1">
|
||||
<property name="visible">1</property>
|
||||
|
||||
@@ -12,13 +12,10 @@ static guint timeout = 0;
|
||||
static void
|
||||
change_direction (GtkRevealer *revealer)
|
||||
{
|
||||
if (gtk_widget_get_mapped (GTK_WIDGET (revealer)))
|
||||
{
|
||||
gboolean revealed;
|
||||
gboolean revealed;
|
||||
|
||||
revealed = gtk_revealer_get_child_revealed (revealer);
|
||||
gtk_revealer_set_reveal_child (revealer, !revealed);
|
||||
}
|
||||
revealed = gtk_revealer_get_child_revealed (revealer);
|
||||
gtk_revealer_set_reveal_child (revealer, !revealed);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
||||
@@ -4,20 +4,14 @@
|
||||
<object class="GtkAdjustment" id="adjustment1">
|
||||
<property name="upper">4</property>
|
||||
<property name="value">2</property>
|
||||
<property name="step-increment">0.1</property>
|
||||
<property name="page-increment">1</property>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adjustment2">
|
||||
<property name="upper">4</property>
|
||||
<property name="value">2</property>
|
||||
<property name="step-increment">0.1</property>
|
||||
<property name="page-increment">1</property>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adjustment3">
|
||||
<property name="upper">4</property>
|
||||
<property name="value">2</property>
|
||||
<property name="step-increment">0.1</property>
|
||||
<property name="page-increment">1</property>
|
||||
</object>
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="title" translatable="yes">Scales</property>
|
||||
|
||||
@@ -43,11 +43,8 @@ static gboolean
|
||||
finish_search (GtkButton *button)
|
||||
{
|
||||
show_find_button ();
|
||||
if (search_progress_id)
|
||||
{
|
||||
g_source_remove (search_progress_id);
|
||||
search_progress_id = 0;
|
||||
}
|
||||
g_source_remove (search_progress_id);
|
||||
search_progress_id = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
@@ -74,11 +71,7 @@ static void
|
||||
stop_search (GtkButton *button,
|
||||
gpointer data)
|
||||
{
|
||||
if (finish_search_id)
|
||||
{
|
||||
g_source_remove (finish_search_id);
|
||||
finish_search_id = 0;
|
||||
}
|
||||
g_source_remove (finish_search_id);
|
||||
finish_search (button);
|
||||
}
|
||||
|
||||
@@ -157,7 +150,8 @@ icon_press_cb (GtkEntry *entry,
|
||||
gpointer data)
|
||||
{
|
||||
if (position == GTK_ENTRY_ICON_PRIMARY)
|
||||
gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *) event);
|
||||
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
|
||||
event->button, event->time);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -289,6 +289,7 @@ add_columns (GtkTreeView *treeview)
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
/* havoc column */
|
||||
@@ -310,6 +311,7 @@ add_columns (GtkTreeView *treeview)
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
/* tim column */
|
||||
@@ -332,6 +334,7 @@ add_columns (GtkTreeView *treeview)
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
/* owen column */
|
||||
@@ -353,6 +356,7 @@ add_columns (GtkTreeView *treeview)
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
/* dave column */
|
||||
@@ -374,6 +378,7 @@ add_columns (GtkTreeView *treeview)
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1625,18 +1625,6 @@ reset_icon_size (GtkWidget *iv)
|
||||
gtk_widget_queue_resize (iv);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
scale_format_value_blank (GtkScale *scale, gdouble value)
|
||||
{
|
||||
return g_strdup (" ");
|
||||
}
|
||||
|
||||
static gchar *
|
||||
scale_format_value (GtkScale *scale, gdouble value)
|
||||
{
|
||||
return g_strdup_printf ("%0.*f", 1, value);
|
||||
}
|
||||
|
||||
static void
|
||||
activate (GApplication *app)
|
||||
{
|
||||
@@ -1702,8 +1690,6 @@ activate (GApplication *app)
|
||||
gtk_builder_add_callback_symbol (builder, "increase_icon_size", (GCallback)increase_icon_size);
|
||||
gtk_builder_add_callback_symbol (builder, "decrease_icon_size", (GCallback)decrease_icon_size);
|
||||
gtk_builder_add_callback_symbol (builder, "reset_icon_size", (GCallback)reset_icon_size);
|
||||
gtk_builder_add_callback_symbol (builder, "scale_format_value", (GCallback)scale_format_value);
|
||||
gtk_builder_add_callback_symbol (builder, "scale_format_value_blank", (GCallback)scale_format_value_blank);
|
||||
|
||||
gtk_builder_connect_signals (builder, NULL);
|
||||
|
||||
@@ -1915,33 +1901,6 @@ activate (GApplication *app)
|
||||
g_object_unref (builder);
|
||||
}
|
||||
|
||||
static void
|
||||
print_version (void)
|
||||
{
|
||||
g_print ("gtk3-widget-factory %d.%d.%d\n",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
}
|
||||
|
||||
static int
|
||||
local_options (GApplication *app,
|
||||
GVariantDict *options,
|
||||
gpointer data)
|
||||
{
|
||||
gboolean version = FALSE;
|
||||
|
||||
g_variant_dict_lookup (options, "version", "b", &version);
|
||||
|
||||
if (version)
|
||||
{
|
||||
print_version ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -1969,9 +1928,6 @@ main (int argc, char *argv[])
|
||||
|
||||
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
||||
|
||||
g_application_add_main_option (G_APPLICATION (app), "version", 0, 0, G_OPTION_ARG_NONE, "Show program version", NULL);
|
||||
|
||||
g_signal_connect (app, "handle-local-options", G_CALLBACK (local_options), NULL);
|
||||
status = g_application_run (G_APPLICATION (app), argc, argv);
|
||||
g_object_unref (app);
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
.circular-button {
|
||||
border-radius: 20px;
|
||||
-gtk-outline-radius: 20px;
|
||||
}
|
||||
|
||||
.small-button {
|
||||
padding: 0;
|
||||
outline-width: 0;
|
||||
|
||||
@@ -1241,9 +1241,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
<property name="restrict_to_fill_level">0</property>
|
||||
<property name="fill_level">75</property>
|
||||
<property name="draw_value">1</property>
|
||||
<property name="digits">-1</property>
|
||||
<signal name="format-value" handler="scale_format_value"/>
|
||||
<property name="draw_value">0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -1256,9 +1254,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
<property name="restrict_to_fill_level">0</property>
|
||||
<property name="fill_level">75</property>
|
||||
<property name="draw_value">1</property>
|
||||
<property name="digits">-1</property>
|
||||
<signal name="format-value" handler="scale_format_value_blank"/>
|
||||
<property name="draw_value">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
@@ -3107,7 +3103,7 @@ microphone-sensitivity-medium-symbolic</property>
|
||||
<property name="visible">1</property>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
<class name="circular"/>
|
||||
<class name="circular-button"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
@@ -4095,6 +4091,7 @@ bad things might happen.</property>
|
||||
</action-widgets>
|
||||
</object>
|
||||
<object class="GtkPopover" id="open_popover">
|
||||
<property name="visible">1</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">1</property>
|
||||
@@ -4129,10 +4126,8 @@ bad things might happen.</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="visible">1</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<property name="hscrollbar-policy">never</property>
|
||||
<property name="min-content-height">70</property>
|
||||
<property name="max-content-height">120</property>
|
||||
<property name="min-content-width">100</property>
|
||||
<property name="max-content-width">100</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="open_popover_textview">
|
||||
<property name="visible">1</property>
|
||||
|
||||
@@ -162,7 +162,6 @@ HTML_IMAGES = \
|
||||
images/grabbing_cursor.png \
|
||||
images/grab_cursor.png \
|
||||
images/hand_cursor.png \
|
||||
images/context_menu_cursor.png \
|
||||
images/help_cursor.png \
|
||||
images/move_cursor.png \
|
||||
images/ne_resize_cursor.png \
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
<xi:include href="xml/gdkdisplay.xml" />
|
||||
<xi:include href="xml/gdkscreen.xml" />
|
||||
<xi:include href="xml/gdkseat.xml" />
|
||||
<xi:include href="xml/gdkmonitor.xml" />
|
||||
<xi:include href="xml/gdkdevicemanager.xml" />
|
||||
<xi:include href="xml/gdkdevice.xml" />
|
||||
<xi:include href="xml/gdkdevicepad.xml" />
|
||||
<xi:include href="xml/regions.xml" />
|
||||
<xi:include href="xml/pixbufs.xml" />
|
||||
<xi:include href="xml/rgba_colors.xml" />
|
||||
@@ -34,7 +33,6 @@
|
||||
<xi:include href="xml/windows.xml" />
|
||||
<xi:include href="xml/gdkframeclock.xml" />
|
||||
<xi:include href="xml/gdkframetimings.xml" />
|
||||
<xi:include href="xml/gdkdrawingcontext.xml" />
|
||||
<xi:include href="xml/gdkglcontext.xml" />
|
||||
<xi:include href="xml/events.xml" />
|
||||
<xi:include href="xml/event_structs.xml" />
|
||||
@@ -54,7 +52,6 @@
|
||||
<reference>
|
||||
<title>Deprecated</title>
|
||||
<xi:include href="xml/colors.xml" />
|
||||
<xi:include href="xml/gdkdevicemanager.xml" />
|
||||
</reference>
|
||||
|
||||
<index id="api-index-full">
|
||||
@@ -109,10 +106,6 @@
|
||||
<title>Index of new symbols in 3.20</title>
|
||||
<xi:include href="xml/api-index-3.20.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="api-index-3-22" role="3.22">
|
||||
<title>Index of new symbols in 3.22</title>
|
||||
<xi:include href="xml/api-index-3.22.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
|
||||
@@ -158,11 +158,6 @@ gdk_display_get_app_launch_context
|
||||
gdk_display_notify_startup_complete
|
||||
gdk_display_get_default_seat
|
||||
gdk_display_list_seats
|
||||
gdk_display_get_n_monitors
|
||||
gdk_display_get_monitor
|
||||
gdk_display_get_primary_monitor
|
||||
gdk_display_get_monitor_at_point
|
||||
gdk_display_get_monitor_at_window
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_DISPLAY
|
||||
@@ -341,7 +336,6 @@ GdkWindowWindowClass
|
||||
GdkWindowHints
|
||||
GdkGeometry
|
||||
GdkGravity
|
||||
GdkAnchorHints
|
||||
GdkWindowEdge
|
||||
GdkWindowTypeHint
|
||||
GdkWindowAttr
|
||||
@@ -413,9 +407,6 @@ gdk_window_get_clip_region
|
||||
gdk_window_begin_paint_rect
|
||||
gdk_window_begin_paint_region
|
||||
gdk_window_end_paint
|
||||
gdk_window_begin_draw_frame
|
||||
gdk_window_end_draw_frame
|
||||
gdk_window_should_draw
|
||||
gdk_window_get_visible_region
|
||||
GdkWindowInvalidateHandlerFunc
|
||||
gdk_window_set_invalidate_handler
|
||||
@@ -616,7 +607,6 @@ gdk_pango_layout_get_clip_region
|
||||
gdk_pango_layout_line_get_clip_region
|
||||
gdk_pango_context_get
|
||||
gdk_pango_context_get_for_screen
|
||||
gdk_pango_context_get_for_display
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -626,7 +616,6 @@ gdk_window_create_similar_surface
|
||||
gdk_window_create_similar_image_surface
|
||||
gdk_cairo_create
|
||||
gdk_cairo_get_clip_rectangle
|
||||
gdk_cairo_get_drawing_context
|
||||
gdk_cairo_set_source_color
|
||||
gdk_cairo_set_source_rgba
|
||||
gdk_cairo_set_source_pixbuf
|
||||
@@ -726,8 +715,6 @@ GdkDevice
|
||||
GdkInputSource
|
||||
GdkInputMode
|
||||
GdkAxisUse
|
||||
GdkAxisFlags
|
||||
GdkDeviceToolType
|
||||
GdkDeviceType
|
||||
GdkGrabOwnership
|
||||
|
||||
@@ -749,7 +736,6 @@ gdk_device_get_display
|
||||
gdk_device_get_has_cursor
|
||||
gdk_device_get_n_axes
|
||||
gdk_device_get_n_keys
|
||||
gdk_device_get_axes
|
||||
gdk_device_warp
|
||||
gdk_device_get_seat
|
||||
|
||||
@@ -771,10 +757,6 @@ gdk_device_list_axes
|
||||
gdk_device_get_axis_value
|
||||
gdk_device_get_last_event_window
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_device_tool_get_serial
|
||||
gdk_device_tool_get_tool_type
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_AXIS_USE
|
||||
GDK_TYPE_EXTENSION_MODE
|
||||
@@ -796,25 +778,6 @@ gdk_device_type_get_type
|
||||
GDK_MAX_TIMECOORD_AXES
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>GdkDevicePad</TITLE>
|
||||
<FILE>gdkdevicepad</FILE>
|
||||
GdkDevicePad
|
||||
GdkDevicePadFeature
|
||||
gdk_device_pad_get_n_groups
|
||||
gdk_device_pad_get_group_n_modes
|
||||
gdk_device_pad_get_n_features
|
||||
gdk_device_pad_get_feature_group
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_DEVICE_PAD
|
||||
GDK_DEVICE_PAD
|
||||
GDK_IS_DEVICE_PAD
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_device_pad_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>GdkSeat</TITLE>
|
||||
<FILE>gdkseat</FILE>
|
||||
@@ -906,8 +869,6 @@ gdk_events_get_center
|
||||
gdk_events_get_distance
|
||||
gdk_event_triggers_context_menu
|
||||
gdk_event_get_seat
|
||||
gdk_event_get_scancode
|
||||
gdk_event_get_pointer_emulated
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_event_handler_set
|
||||
@@ -922,8 +883,6 @@ gdk_event_get_device
|
||||
gdk_event_set_device
|
||||
gdk_event_get_source_device
|
||||
gdk_event_set_source_device
|
||||
gdk_event_get_device_tool
|
||||
gdk_event_set_device_tool
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_setting_get
|
||||
@@ -960,9 +919,6 @@ GdkEventOwnerChange
|
||||
GdkEventGrabBroken
|
||||
GdkEventTouchpadSwipe
|
||||
GdkEventTouchpadPinch
|
||||
GdkEventPadButton
|
||||
GdkEventPadAxis
|
||||
GdkEventPadGroupMode
|
||||
|
||||
<SUBSECTION>
|
||||
GdkScrollDirection
|
||||
@@ -1272,10 +1228,6 @@ gdk_wayland_display_get_wl_display
|
||||
gdk_wayland_display_get_xdg_shell
|
||||
gdk_wayland_window_get_wl_surface
|
||||
gdk_wayland_window_set_use_custom_surface
|
||||
GdkWaylandWindowExported
|
||||
gdk_wayland_window_export_handle
|
||||
gdk_wayland_window_unexport_handle
|
||||
gdk_wayland_window_set_transient_for_exported
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_WAYLAND_DEVICE
|
||||
@@ -1392,8 +1344,6 @@ gdk_gl_context_set_debug_enabled
|
||||
gdk_gl_context_get_debug_enabled
|
||||
gdk_gl_context_set_forward_compatible
|
||||
gdk_gl_context_get_forward_compatible
|
||||
gdk_gl_context_set_use_es
|
||||
gdk_gl_context_get_use_es
|
||||
gdk_gl_context_is_legacy
|
||||
|
||||
<SUBSECTION>
|
||||
@@ -1416,43 +1366,3 @@ GDK_GL_ERROR
|
||||
GDK_TYPE_GL_ERROR
|
||||
GDK_TYPE_GL_PROFILE
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gdkmonitor</FILE>
|
||||
GdkMonitor
|
||||
gdk_monitor_get_display
|
||||
gdk_monitor_get_geometry
|
||||
gdk_monitor_get_workarea
|
||||
gdk_monitor_get_width_mm
|
||||
gdk_monitor_get_height_mm
|
||||
gdk_monitor_get_manufacturer
|
||||
gdk_monitor_get_model
|
||||
gdk_monitor_get_scale_factor
|
||||
gdk_monitor_get_refresh_rate
|
||||
GdkSubpixelLayout
|
||||
gdk_monitor_get_subpixel_layout
|
||||
gdk_monitor_is_primary
|
||||
|
||||
<SUBSECTION Standard>
|
||||
gdk_monitor_get_type
|
||||
GdkMonitorClass
|
||||
GDK_TYPE_MONITOR
|
||||
GDK_MONITOR
|
||||
GDK_IS_MONITOR
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gdkdrawingcontext</FILE>
|
||||
GdkDrawingContext
|
||||
gdk_drawing_context_get_window
|
||||
gdk_drawing_context_get_clip
|
||||
gdk_drawing_context_get_cairo_context
|
||||
gdk_drawing_context_is_valid
|
||||
|
||||
<SUBSECTION Standard>
|
||||
gdk_drawing_context_get_type
|
||||
GdkDrawingContextClass
|
||||
GDK_TYPE_DRAWING_CONTEXT
|
||||
GDK_DRAWING_CONTEXT
|
||||
GDK_IS_DRAWING_CONTEXT
|
||||
</SECTION>
|
||||
|
||||
@@ -4,15 +4,12 @@ gdk_app_launch_context_get_type
|
||||
gdk_cursor_get_type
|
||||
gdk_device_get_type
|
||||
gdk_device_manager_get_type
|
||||
gdk_device_pad_get_type
|
||||
gdk_display_get_type
|
||||
gdk_display_manager_get_type
|
||||
gdk_drag_context_get_type
|
||||
gdk_drawing_context_get_type
|
||||
gdk_frame_clock_get_type
|
||||
gdk_gl_context_get_type
|
||||
gdk_keymap_get_type
|
||||
gdk_monitor_get_type
|
||||
gdk_screen_get_type
|
||||
gdk_seat_get_type
|
||||
gdk_visual_get_type
|
||||
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -27,7 +27,6 @@ IGNORE_HFILES = \
|
||||
gtkadjustmentprivate.h \
|
||||
gtkallocatedbitmaskprivate.h \
|
||||
gtkappchooserprivate.h \
|
||||
gtkapplicationaccelsprivate.h \
|
||||
gtkapplicationprivate.h \
|
||||
gtkbindingsprivate.h \
|
||||
gtkbitmaskprivate.h \
|
||||
@@ -303,7 +302,6 @@ content_files = \
|
||||
gtk-update-icon-cache.xml \
|
||||
input-handling.xml \
|
||||
migrating-2to3.xml \
|
||||
migrating-3xtoy.xml \
|
||||
migrating-checklist.sgml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
@@ -330,7 +328,6 @@ expand_content_files = \
|
||||
glossary.xml \
|
||||
input-handling.xml \
|
||||
migrating-2to3.xml \
|
||||
migrating-3xtoy.xml \
|
||||
migrating-checklist.sgml \
|
||||
migrating-GtkGrid.xml \
|
||||
migrating-GtkStyleContext.xml \
|
||||
@@ -387,9 +384,6 @@ HTML_IMAGES = \
|
||||
$(srcdir)/images/panes.png \
|
||||
$(srcdir)/images/pagesetupdialog.png \
|
||||
$(srcdir)/images/placessidebar.png \
|
||||
$(srcdir)/images/popup-anchors.png \
|
||||
$(srcdir)/images/popup-flip.png \
|
||||
$(srcdir)/images/popup-slide.png \
|
||||
$(srcdir)/images/printdialog.png \
|
||||
$(srcdir)/images/progressbar.png \
|
||||
$(srcdir)/images/radio-group.png \
|
||||
|
||||
@@ -587,7 +587,7 @@ background-color: @bg_color;
|
||||
set of base colors.
|
||||
</para>
|
||||
|
||||
<literallayout><code>〈color expression〉 = lighter(〈color〉) | darker(〈color〉) | shade(〈number〉,〈color〉) | alpha(〈number〉,〈color〉) | mix(〈number〉,〈color〉,〈color〉)</code>
|
||||
<literallayout><code>〈color expression〉 = ligher(〈color〉) | darker(〈color〉) | shade(〈number〉,〈color〉) | alpha(〈number〉,〈color〉) | mix(〈number〉,〈color〉,〈color〉)</code>
|
||||
</literallayout>
|
||||
|
||||
<para>
|
||||
@@ -824,7 +824,7 @@ label {
|
||||
<programlisting><![CDATA[
|
||||
spinner {
|
||||
-gtk-icon-source: -gtk-icontheme('process-working-symbolic');
|
||||
-gtk-icon-palette: success blue, warning #fc3, error magenta;
|
||||
-gtk-icon-palette: success blue, error magenta;
|
||||
}
|
||||
arrow.fancy {
|
||||
-gtk-icon-source: -gtk-icontheme('pan-down');
|
||||
@@ -942,20 +942,20 @@ arrow {
|
||||
<para>
|
||||
To enable an animation, the name of the keyframes must be set as the value
|
||||
of the animation-name property. The details of the animation can modified
|
||||
with the animation-duration, animation-timing-function, animation-iteration-count
|
||||
with the animation-time, animation-timing-function, animation-iteration-count
|
||||
and other animation properties.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>A CSS animation</title>
|
||||
<programlisting><![CDATA[
|
||||
@keyframes spin {
|
||||
@keyrframes spin {
|
||||
to { -gtk-icon-transform: rotate(1turn); }
|
||||
}
|
||||
|
||||
spinner {
|
||||
animation-name: spin;
|
||||
animation-duration: 1s;
|
||||
animation-time: 1s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
@@ -41,13 +41,12 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
|
||||
|
||||
<para>
|
||||
GTK+ supports CSS properties and shorthands as far as they can be applied
|
||||
in the context of widgets, and adds its own properties only when needed.
|
||||
in the context of widgets, and only adds its own properties only when needed.
|
||||
All GTK+-specific properties have a -gtk prefix.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
All properties support the following keywords: inherit, initial, unset, with
|
||||
the same meaning as in <ulink url="https://www.w3.org/TR/css3-cascade/#defaulting-keywords">CSS</ulink>.
|
||||
All properties support the following keywords: inherit, initial, unset.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@@ -105,16 +104,16 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
|
||||
follows:
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>4 values: </term><listitem>top right bottom left</listitem>
|
||||
<term>4 values:</term><listitem>top right bottom left</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>3 values: </term><listitem>top horizontal left</listitem>
|
||||
<term>3 values:</term><listitem>top horizontal left</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>2 values: </term><listitem>vertical horizontal</listitem>
|
||||
<term>2 values:</term><listitem>vertical horizontal</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>1 value: </term><listitem>all</listitem>
|
||||
<term>1 value:</term><listitem>all</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
@@ -1029,10 +1028,6 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para>
|
||||
GTK+ uses the CSS outline properties to render the 'focus rectangle'.
|
||||
</para>
|
||||
|
||||
<table pgwide="1">
|
||||
<title>Background properties</title>
|
||||
<tgroup cols="7">
|
||||
@@ -1109,15 +1104,6 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
|
||||
<ulink url="http://www.w3.org/TR/css3-background/#background-image">CSS3</ulink></entry>
|
||||
<entry>not supported: urls without quotes, CSS radial gradients, colors in crossfades</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>background-blend-mode</entry>
|
||||
<entry><code>〈blend-mode〉 [ , 〈blend-mode〉 ]*</code></entry>
|
||||
<entry><code>normal</code></entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry>only affects multiple backgrounds</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>box‑shadow</entry>
|
||||
<entry><code>none | 〈box shadow〉 [ , 〈box shadow〉 ]*</code></entry>
|
||||
@@ -1153,18 +1139,9 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
|
||||
<code>〈bg-image〉 = 〈image〉 | none</code>
|
||||
<code>〈bg-layer〉 = 〈bg-image〉 || 〈position〉 [ / 〈bg-size〉 ]? || 〈bg-repeat〉 || 〈box〉 || 〈box〉</code>
|
||||
<code>〈final-bg-layer〉 = 〈bg-image〉 || 〈position〉 [ / 〈bg-size〉 ]? || 〈bg-repeat〉 || 〈box〉 || 〈box〉|| 〈color〉</code>
|
||||
<code>〈blend-mode〉 = color || color-burn || color-dodge || darken || difference || exclusion || hard-light || hue || lighten || luminosity || multiply || normal || overlay || saturate || screen || soft-light</code>
|
||||
<code>〈box shadow〉 = inset? && 〈length〉{2,4}? && 〈color〉?</code>
|
||||
</literallayout>
|
||||
|
||||
<para>
|
||||
As in CSS, the background color is rendered underneath all the background image layers, so it will only be visible if
|
||||
background images are absent or have transparency.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Alternatively, multiple backgrounds can be blended using the <code>background-blend-mode</code> property.
|
||||
</para>
|
||||
|
||||
<table pgwide="1">
|
||||
<title>Transition properties</title>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
<informalexample>
|
||||
<para>Create a new file with the following content named <filename>example-0.c.</filename></para>
|
||||
<programlisting><xi:include href="../../../../examples/window-default.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/window-default.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>
|
||||
@@ -154,7 +154,7 @@
|
||||
<title>Hello World in GTK+</title>
|
||||
<para>Create a new file with the following content named example-1.c.</para>
|
||||
<programlisting><xi:include href="../../../../examples/hello-world.c" parse="text">
|
||||
<xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
@@ -233,7 +233,7 @@
|
||||
<example id="gtk-getting-started-grid-packing">
|
||||
<title>Packing buttons</title>
|
||||
<para>Create a new file with the following content named example-2.c.</para>
|
||||
<programlisting><xi:include href="../../../../examples/grid-packing.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/grid-packing.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
You can compile the program above with GCC using:
|
||||
@@ -257,9 +257,9 @@
|
||||
<example>
|
||||
<title>Packing buttons with GtkBuilder</title>
|
||||
<para>Create a new file with the following content named example-4.c.</para>
|
||||
<programlisting><xi:include href="../../../../examples/builder.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/builder.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<para>Create a new file with the following content named builder.ui.</para>
|
||||
<programlisting><xi:include href="../../../../examples/builder.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/builder.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
You can compile the program above with GCC using:
|
||||
@@ -346,7 +346,7 @@
|
||||
of our application class.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application1/main.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application1/main.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>All the application logic is in the application class, which
|
||||
@@ -364,7 +364,7 @@
|
||||
GIO <ulink url="https://developer.gnome.org/gio/2.36/GApplication.html#GApplication.description">documentation</ulink>.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleapp.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleapp.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Another important class that is part of the application support
|
||||
@@ -373,7 +373,7 @@
|
||||
window.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleappwin.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleappwin.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>As part of the initial setup of our application, we also
|
||||
@@ -388,7 +388,7 @@
|
||||
</informalfigure>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleapp.desktop" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application1/exampleapp.desktop" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Note that <replaceable>@<!-- -->bindir@</replaceable> needs to be replaced
|
||||
@@ -420,7 +420,7 @@
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application2/window.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application2/window.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>To make use of this file in our application, we revisit
|
||||
@@ -460,7 +460,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application2/exampleapp.gresource.xml" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application2/exampleapp.gresource.xml" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>This file has to be converted into a C source file that will be
|
||||
@@ -598,7 +598,7 @@ example_app_window_open (ExampleAppWindow *win,
|
||||
in a ui file, and add it as a resource to our binary.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application4/app-menu.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application4/app-menu.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>To associate the app menu with the application, we have to call
|
||||
@@ -697,7 +697,7 @@ example_app_class_init (ExampleAppClass *class)
|
||||
GSettings requires a schema that describes our settings:</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application5/org.gtk.exampleapp.gschema.xml" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application5/org.gtk.exampleapp.gschema.xml" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Before we can make use of this schema in our application,
|
||||
@@ -749,13 +749,13 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
<para>Lets start with the template.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application6/prefs.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application6/prefs.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Next comes the dialog subclass.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application6/exampleappprefs.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application6/exampleappprefs.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Now we revisit the <literal>preferences_activated(<!-- -->)</literal> function in our
|
||||
@@ -807,7 +807,7 @@ preferences_activated (GSimpleAction *action,
|
||||
to slide out the search bar below the header bar.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application7/window.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application7/window.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>Implementing the search needs quite a few code changes that
|
||||
@@ -887,7 +887,7 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
which demonstrates #GtkMenuButton, #GtkRevealer and #GtkListBox.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application8/window.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application8/window.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>The code to populate the sidebar with buttons for the words
|
||||
@@ -898,7 +898,7 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
ui file.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application8/gears-menu.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application8/gears-menu.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>To connect the menuitem to the show-words setting, we use
|
||||
@@ -957,7 +957,7 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
triggers the show-lines action:</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application9/gears-menu.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application9/gears-menu.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>To make this menu item do something, we create a property
|
||||
@@ -1017,7 +1017,7 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
be a direct child of the window, and set its type to be titlebar.</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting><xi:include href="../../../../examples/application10/window.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/application10/window.ui" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>A small extra bonus of using a header bar is that we get
|
||||
@@ -1073,7 +1073,7 @@ example_app_window_init (ExampleAppWindow *win)
|
||||
<example id="gtk-getting-started-drawing">
|
||||
<title>Drawing in response to input</title>
|
||||
<para>Create a new file with the following content named example-3.c.</para>
|
||||
<programlisting><xi:include href="../../../../examples/drawing.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
<programlisting><xi:include href="../../../../examples/drawing.c" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
You can compile the program above with GCC using:
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
</chapter>
|
||||
|
||||
<chapter id="Gestures">
|
||||
<title>Gestures and event handling</title>
|
||||
<title>Gestures</title>
|
||||
<xi:include href="xml/gtkeventcontroller.xml" />
|
||||
<xi:include href="xml/gtkgesture.xml" />
|
||||
<xi:include href="xml/gtkgesturesingle.xml" />
|
||||
@@ -310,7 +310,6 @@
|
||||
<xi:include href="xml/gtkgestureswipe.xml" />
|
||||
<xi:include href="xml/gtkgesturerotate.xml" />
|
||||
<xi:include href="xml/gtkgesturezoom.xml" />
|
||||
<xi:include href="xml/gtkpadcontroller.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter id="DeprecatedObjects">
|
||||
@@ -405,7 +404,6 @@
|
||||
<xi:include href="xml/migrating-smclient-GtkApplication.xml" />
|
||||
<xi:include href="xml/migrating-GtkGrid.xml" />
|
||||
<xi:include href="xml/migrating-checklist.sgml" />
|
||||
<xi:include href="xml/migrating-3xtoy.xml" />
|
||||
</part>
|
||||
|
||||
<part>
|
||||
@@ -490,10 +488,6 @@
|
||||
<title>Index of new symbols in 3.20</title>
|
||||
<xi:include href="xml/api-index-3.20.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="api-index-3-22" role="3.22">
|
||||
<title>Index of new symbols in 3.22</title>
|
||||
<xi:include href="xml/api-index-3.22.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
|
||||
@@ -1528,11 +1528,6 @@ gtk_file_filter_add_pixbuf_formats
|
||||
gtk_file_filter_add_custom
|
||||
gtk_file_filter_get_needed
|
||||
gtk_file_filter_filter
|
||||
|
||||
<SUBSECTION Serialization>
|
||||
gtk_file_filter_new_from_gvariant
|
||||
gtk_file_filter_to_gvariant
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_FILE_FILTER
|
||||
GTK_IS_FILE_FILTER
|
||||
@@ -2246,9 +2241,6 @@ gtk_menu_new_from_model
|
||||
gtk_menu_set_screen
|
||||
gtk_menu_reorder_child
|
||||
gtk_menu_attach
|
||||
gtk_menu_popup_at_rect
|
||||
gtk_menu_popup_at_widget
|
||||
gtk_menu_popup_at_pointer
|
||||
gtk_menu_popup_for_device
|
||||
gtk_menu_popup
|
||||
gtk_menu_set_accel_group
|
||||
@@ -3239,10 +3231,6 @@ gtk_scrolled_window_set_capture_button_press
|
||||
gtk_scrolled_window_get_capture_button_press
|
||||
gtk_scrolled_window_set_overlay_scrolling
|
||||
gtk_scrolled_window_get_overlay_scrolling
|
||||
gtk_scrolled_window_set_propagate_natural_width
|
||||
gtk_scrolled_window_get_propagate_natural_width
|
||||
gtk_scrolled_window_set_propagate_natural_height
|
||||
gtk_scrolled_window_get_propagate_natural_height
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_SCROLLED_WINDOW
|
||||
@@ -6637,7 +6625,6 @@ gtk_clipboard_wait_for_targets
|
||||
gtk_clipboard_wait_is_target_available
|
||||
gtk_clipboard_set_can_store
|
||||
gtk_clipboard_store
|
||||
gtk_clipboard_get_selection
|
||||
<SUBSECTION Standard>
|
||||
GTK_CLIPBOARD
|
||||
GTK_TYPE_CLIPBOARD
|
||||
@@ -7276,12 +7263,10 @@ GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION
|
||||
<SUBSECTION Serialization>
|
||||
gtk_print_settings_new_from_file
|
||||
gtk_print_settings_new_from_key_file
|
||||
gtk_print_settings_new_from_gvariant
|
||||
gtk_print_settings_load_file
|
||||
gtk_print_settings_load_key_file
|
||||
gtk_print_settings_to_file
|
||||
gtk_print_settings_to_key_file
|
||||
gtk_print_settings_to_gvariant
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_PRINT_SETTINGS
|
||||
@@ -7330,9 +7315,7 @@ gtk_paper_size_get_default
|
||||
|
||||
<SUBSECTION Serialization>
|
||||
gtk_paper_size_new_from_key_file
|
||||
gtk_paper_size_new_from_gvariant
|
||||
gtk_paper_size_to_key_file
|
||||
gtk_paper_size_to_gvariant
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_PAPER_SIZE
|
||||
@@ -7380,13 +7363,10 @@ gtk_page_setup_get_page_height
|
||||
<SUBSECTION Serialization>
|
||||
gtk_page_setup_new_from_file
|
||||
gtk_page_setup_new_from_key_file
|
||||
gtk_page_setup_new_from_gvariant
|
||||
gtk_page_setup_load_file
|
||||
gtk_page_setup_load_key_file
|
||||
gtk_page_setup_to_file
|
||||
gtk_page_setup_to_key_file
|
||||
gtk_page_setup_to_gvariant
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_PAGE_SETUP
|
||||
GTK_PAGE_SETUP
|
||||
@@ -7533,7 +7513,6 @@ gtk_mount_operation_get_parent
|
||||
gtk_mount_operation_set_screen
|
||||
gtk_mount_operation_get_screen
|
||||
gtk_show_uri
|
||||
gtk_show_uri_on_parent
|
||||
<SUBSECTION Standard>
|
||||
GTK_IS_MOUNT_OPERATION
|
||||
GTK_IS_MOUNT_OPERATION_CLASS
|
||||
@@ -8163,8 +8142,6 @@ GtkPopover
|
||||
gtk_popover_new
|
||||
gtk_popover_new_from_model
|
||||
gtk_popover_bind_model
|
||||
gtk_popover_popup
|
||||
gtk_popover_popdown
|
||||
gtk_popover_set_relative_to
|
||||
gtk_popover_get_relative_to
|
||||
gtk_popover_set_pointing_to
|
||||
@@ -8454,28 +8431,6 @@ GTK_GESTURE_ZOOM_GET_CLASS
|
||||
gtk_gesture_zoom_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkpadcontroller</FILE>
|
||||
<TITLE>GtkPadController</TITLE>
|
||||
GtkPadController
|
||||
gtk_pad_controller_new
|
||||
gtk_pad_controller_set_action_entries
|
||||
gtk_pad_controller_set_action
|
||||
GtkPadActionType
|
||||
GtkPadActionEntry
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_PAD_CONTROLLER
|
||||
GTK_PAD_CONTROLLER
|
||||
GTK_PAD_CONTROLLER_CLASS
|
||||
GTK_IS_PAD_CONTROLLER
|
||||
GTK_IS_PAD_CONTROLLER_CLASS
|
||||
GTK_PAD_CONTROLLER_GET_CLASS
|
||||
|
||||
<SUBSECTION Private>
|
||||
gtk_pad_controller_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkstacksidebar</FILE>
|
||||
GtkStackSidebar
|
||||
@@ -8519,8 +8474,6 @@ gtk_gl_area_set_auto_render
|
||||
gtk_gl_area_get_auto_render
|
||||
gtk_gl_area_get_required_version
|
||||
gtk_gl_area_set_required_version
|
||||
gtk_gl_area_set_use_es
|
||||
gtk_gl_area_get_use_es
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_GL_AREA
|
||||
GTK_GL_AREA
|
||||
|
||||
@@ -133,7 +133,6 @@ gtk_numerable_icon_get_type
|
||||
gtk_offscreen_window_get_type
|
||||
gtk_orientable_get_type
|
||||
gtk_overlay_get_type
|
||||
gtk_pad_controller_get_type
|
||||
gtk_page_setup_get_type
|
||||
@DISABLE_ON_W32@gtk_page_setup_unix_dialog_get_type
|
||||
gtk_paned_get_type
|
||||
@@ -174,7 +173,6 @@ gtk_separator_get_type
|
||||
gtk_separator_menu_item_get_type
|
||||
gtk_separator_tool_item_get_type
|
||||
gtk_settings_get_type
|
||||
gtk_shortcut_label_get_type
|
||||
gtk_shortcuts_window_get_type
|
||||
gtk_shortcuts_section_get_type
|
||||
gtk_shortcuts_group_get_type
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 45 KiB |
@@ -1133,7 +1133,7 @@ gtk_arrow_draw (GtkWidget *widget,
|
||||
The default values for the #GtkScrolledWindow:hscrollbar-policy and
|
||||
#GtkScrolledWindow:vscrollbar-policy properties have been changed from
|
||||
'never' to 'automatic'. If your application was relying on the default
|
||||
value, you will have to set it explicitly.
|
||||
value, you will have explicitly set it explicitly.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@@ -1205,12 +1205,6 @@ gtk_arrow_draw (GtkWidget *widget,
|
||||
have disappeared, and instead there are now
|
||||
gtk_window_set_has_resize_grip() and gtk_window_get_has_resize_grip().
|
||||
</para>
|
||||
<para>
|
||||
In more recent versions of GTK+ 3, the resize grip functionality has
|
||||
been removed entirely, in favor of invisible resize borders around the
|
||||
window. When updating to newer versions of GTK+ 3, you should simply
|
||||
remove all code dealing with resize grips.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
@@ -1,443 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
||||
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||
]>
|
||||
<chapter id="gtk-migrating-3-x-to-y">
|
||||
<title>Migrating from one GTK+ 3 release to another</title>
|
||||
|
||||
<para>
|
||||
GTK+ 3 has seen considerable development over multiple stable releases.
|
||||
While we try to maintain compatibility as far as possible, some minor
|
||||
adjustments may be necessary when moving an application from one release
|
||||
of GTK+ 3 to the next.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following sections list noteworthy changes in GTK+ 3.x release that
|
||||
may or may not require applications to be updated.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.2</title>
|
||||
|
||||
<para>
|
||||
The accessible implementations for GTK+ widgets have been integrated
|
||||
into libgtk itself, and the gail module does not exist anymore. This
|
||||
change should not affect applications very much.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.4</title>
|
||||
|
||||
<para>
|
||||
Scroll events have been separated from button events, and smooth
|
||||
scrolling has been added with a separate event mask. Widgets now
|
||||
need to have either GDK_SCROLL_MASK or GDK_SMOOTH_SCROLL_MASK in
|
||||
their event mask to receive scroll events. In addition, the
|
||||
GdkScrollDirection enumeration has gained a new member,
|
||||
GDK_SCROLL_SMOOTH, so switch statements will have to be amended
|
||||
to cover this case.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GTK+ now uses <Primary> instead of <Control> in keyboard
|
||||
accelerators, for improved cross-platform handling. This should not
|
||||
affect applications, unless they parse or create these accelerator
|
||||
manually.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The tacit assumption that the Alt key corresponds to the MOD1
|
||||
modifier under X11 is now a hard requirement.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The beagle search backend for the file chooser has been dropped.
|
||||
Tracker is the only supported search backend on Linux now.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkNotebook has been changed to destroy its action widgets when
|
||||
it gets destroyed itself. If your application is using action
|
||||
widgets in notebooks, you may have to adjust your code to take
|
||||
this into account.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkApplication no longer uses the gtk_ mainloop wrappers, so
|
||||
it is no longer possible to use gtk_main_quit() to stop it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The -uninstalled variants of the pkg-config files have been dropped.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Excessive dependencies have been culled from Requires: lines
|
||||
in .pc files. Dependent modules may have to declare dependencies
|
||||
that there were getting 'for free' in the past.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.6</title>
|
||||
|
||||
<para>
|
||||
The accessibility bridge code that exports accessible objects
|
||||
on the bus is now used by default; atk-bridge has been converted
|
||||
into a library that GTK+ links against. To void the linking,
|
||||
pass --without-atk-bridge when configuring GTK+.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GDK threading support has been deprecated. It is recommended to
|
||||
use g_idle_add(), g_main_context_invoke() and similar funtions
|
||||
to make all GTK+ calls from the main thread.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GTK+ now follows the XDG Base Directory specification for
|
||||
user configuration and data files. In detail,
|
||||
<itemizedlist>
|
||||
<listitem>$XDG_CONFIG_HOME/gtk-3.0/custom-papers is the new location
|
||||
for $HOME/.gtk-custom-papers</listitem>
|
||||
<listitem>$XDG_CONFIG_HOME/gtk-3.0/bookmarks is the new location
|
||||
for $HOME/.gtk-bookmarks</listitem>
|
||||
<listitem>$XDG_DATA_HOME/themes is preferred over $HOME/.themes</listitem>
|
||||
<listitem>$XDG_DATA_HOME/icons is preferred over $HOME/.icons.</listitem>
|
||||
</itemizedlist>
|
||||
Existing files from the old location will still be read
|
||||
if the new location does not exist.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
$HOME/.gtk-3.0 is no longer in the default module load path.
|
||||
If you want to load modules from there, add it to the GTK_PATH
|
||||
environment variable.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.8</title>
|
||||
|
||||
<para>
|
||||
GtkIconInfo has changed from being a boxed type to a GObject.
|
||||
This is technically an ABI change, but basically all existing code
|
||||
will keep working if its used as a boxed type, and it is not
|
||||
possible to instantiate GtkIconInfos outside GTK+, so this is
|
||||
not expected to be a big problem.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.10</title>
|
||||
|
||||
<para>
|
||||
GDK has been changed to allow only a single screen per display.
|
||||
Only the X11 backend had multiple screens before, and multi-screen
|
||||
setups (not multi-monitor!) are very rare nowadays. If you really
|
||||
need multiple X screens, open them as separate displays.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The behavior of GtkBox::expand has been changed to never propagate
|
||||
up. Previously, this was happening inconsistently. If you want the
|
||||
expand to propagate, use the GtkWidget h/v expand properties.
|
||||
If you experience sizing problems with widgets in ported code,
|
||||
carefully check the expand and fill flags of your boxes.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkBin no longer provides default implementations for
|
||||
get_height_for_width, subclasses now have to provide their own
|
||||
implementation if they need height-for-width functionality.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Widget state propagation has been changed. Historically, all of
|
||||
active, prelight, selected, insensitive, inconsistent and backdrop
|
||||
have been propagated to children. This has now been restricted
|
||||
to just the insensitive and backdrop states. This mostly affects
|
||||
theming.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The way widget drawing happens has changed. Earlier versions handled
|
||||
one expose event per GdkWindow, each with a separate cairo_t. Now we
|
||||
only handle the expose event on the toplevel and reuse the same
|
||||
cairo_t (with the right translation and clipping) for the entire
|
||||
widget hierarchy, recursing down via the GtkWidget::draw signal.
|
||||
Having all rendering in the same call tree allows effects like
|
||||
opacity and offscreen rendering of entire widget sub-hierarchies.
|
||||
Generally this should not require any changes in widgets, but
|
||||
code looking at e.g. the current expose event may see different
|
||||
behavior than before.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The Gtk+ scrolling implementation has changed. gdk_window_scroll()
|
||||
and gdk_window_move_region() no longer copy the region on the
|
||||
window, but rather invalidate the entire scrolled region. This is
|
||||
slightly slower, but allowed us to implement a offscreen surface
|
||||
scrolling method which better fits modern hardware. Most scrolling
|
||||
widgets in Gtk+ have been converted to use this model for scrolling,
|
||||
but external widgets implementing scrolling using GdkWindow may see
|
||||
some slowdown.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.12</title>
|
||||
|
||||
<para>
|
||||
GtkWidget had a hack where if opacity is 0.999 we set up an opacity
|
||||
group when rendering the widget. This is no longer needed in 3.10,
|
||||
and GtkStack doesn't use it anymore. It has been removed in 3.12.
|
||||
GdStack is using it, so applications should be ported from GdStack
|
||||
to GtkStack in 3.12.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkHeaderBar in 3.10 was not ordering its pack-end children in
|
||||
the right way. This has been fixed in 3.12. Applications which
|
||||
pack multiple widgets at the end of a headerbar will have to
|
||||
be updated.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
gtk_text_view_add_child_in_window has changed behaviour a bit.
|
||||
It now always positions the child in buffer coordinates, where
|
||||
it used to inconsistently scroll with the buffer but then go
|
||||
reposition to a window-relative position on redraw.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A number of container widgets have been made more compliant with
|
||||
the uniform CSS rendering model by making them render backgrounds
|
||||
and borders. This may require some adjustments in applications that
|
||||
were making assumptions about containers never rendering backgrounds.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.14</title>
|
||||
|
||||
<para>
|
||||
A new state, GTK_STATE_FLAG_CHECKED, has been added for checked states
|
||||
of radio and check buttons and menuitems. Applications that are using
|
||||
GTK+ styles without widgets will need adjustments.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Adwaita is now the default theme on all platforms.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The icon theme code has become a little pickier about sizes and is not
|
||||
automatically scaling icons beyond the limits defined in the icon theme
|
||||
unless explicitly asked to do so with GTK_ICON_LOOKUP_FORCE_SIZE.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GTK+ now includes an interactive debugger which can be activated with
|
||||
the keyboard shortcuts Ctrl-Shift-d or Ctrl-Shift-i. If these shortcuts
|
||||
interfere with application keybindings, they can be disabled with the
|
||||
setting org.gtk.Settings.Debug.enable-inspector-keybinding.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Most widgets have been ported to use the new gesture framework internally
|
||||
for event handling. Traditional event handlers in derived widgets are still
|
||||
being called.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Using GTK+ under X11 without the X Render extension has been observed
|
||||
to be problematic. This combination is using code paths in cairo and
|
||||
graphics drivers which are rarely tested and likely buggy.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkTextView is now using a pixel-cache internally, and is drawing
|
||||
a background underneath the text. This can cause problems for applications
|
||||
which assumed that they could draw things below and above the text
|
||||
by chaining up in the ::draw implementation of their GtkTextView subclass.
|
||||
As a short-term workaround, you can make the application apply a
|
||||
custom theme to the text view with a transparent background. For
|
||||
a proper fix, use the new ::draw_layer vfunc.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.16</title>
|
||||
|
||||
<para>
|
||||
GTK+ now includes an OpenGL rendering widget. To support GL on various
|
||||
platforms, GTK+ uses libepoxy.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GTK+ no longer uses gtk-update-icon-cache during its build. The
|
||||
--enable-gtk2-dependency configure option has been removed.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The introspection annotations for the x and y parameters of
|
||||
GtkMenuPositionFunc have been corrected from 'out' to 'inout'.
|
||||
If you are using such a function from language-bindings, this
|
||||
may require adjustments.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The lookup order for actions that are activated via keyboard
|
||||
accelerators has been changed to start at the currently focused
|
||||
widget. If your application is making use fo nested action groups
|
||||
via gtk_widget_insert_action_group, you may want to check that
|
||||
this change does not upset your accelerators.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The GtkScrollable interface has gained a new vfunc, get_border,
|
||||
that is used to position overshoot and undershoot indications that
|
||||
are drawn over the content by GtkScrolledWindow. Unless your scrollable
|
||||
has non-scrolling parts similar to treeview headers, there is no need
|
||||
to implement this vfunc.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The GtkSearchEntry widget has gained a number of new signals that
|
||||
are emitted when certain key sequences are seen. In particular, it
|
||||
now handles the Escape key and emits ::stop-search. Applications that
|
||||
expect to handle Escape themselves will need to be updated.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.18</title>
|
||||
|
||||
<para>
|
||||
The GtkListBox model support that was introduced in 3.16 has been
|
||||
changed to no longer call gtk_widget_show_all on rows created by
|
||||
the create_widget_func. You need to manage the visibility of child
|
||||
widgets yourself in your create_widget_func.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The alpha component of foreground colors that are applied to
|
||||
GtkCellRendererText is no longer ignored. If you don't want your
|
||||
text to be translucent, use opaque colors.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.20</title>
|
||||
|
||||
<para>
|
||||
The way theming works in GTK+ has been reworked fundamentally, to
|
||||
implement many more CSS features and make themes more expressive.
|
||||
As a result, custom CSS that is shipped with applications and third-party
|
||||
themes will need adjustments. Widgets now use element names much more
|
||||
than style classes; type names are no longer used in style matching.
|
||||
Every widget now documents the element names it has and the style classes
|
||||
it uses. The GTK+ inspector can also help with finding this information.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GTK+ now uses internal subobjects (also known as gadgets) for allocating
|
||||
and drawing widget parts. Applications that subclass GTK+ widgets may see
|
||||
warnings if they override the size_allocate vfunc and don't chain up.
|
||||
The proper way to subclass is to chain up in size_allocate. If you do not
|
||||
want to do that for some reason, you have to override the draw vfunc as
|
||||
well.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Several fixes for window sizing and window placement with client-side
|
||||
decorations may affect applications that are saving and restoring window
|
||||
sizes. The recommended best practice for this which is known to work with
|
||||
client-side and server-side decorations and with older and newer versions
|
||||
of GTK+ is to use gtk_window_get_size() to save window sizes and
|
||||
gtk_window_set_default_size() to restore it.
|
||||
See https://wiki.gnome.org/HowDoI/SaveWindowState for a detailed example.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Geometry handling in GtkWindow has been removed. If you are using the
|
||||
functions gtk_window_resize_to_geometry, gtk_window_set_default_geometry,
|
||||
gtk_window_parse_geometry or gtk_window_set_geometry_hints, you may need
|
||||
to make some changes to your code.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkDrawingArea used to implicitly render the theme background before
|
||||
calling the ::draw handler. This is no longer the case. If you rely
|
||||
on having a theme-provided background, call gtk_render_background()
|
||||
from your ::draw handler.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The GtkFileChooser interface prerequisite changed from GtkWidget
|
||||
to GObject, allowing non-widget implementations of this interface.
|
||||
This is a minor change in ABI, as applications are no longer guaranteed
|
||||
that a GtkFileChooser also supports all GtkWidget methods. However, all
|
||||
previously existing implementations still derive from GtkWidget, so no
|
||||
existing code should break.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The way in which GtkLevelBar determines the offset to apply was a bit
|
||||
inconsistent in the past; this has been fixed. Applications that are using
|
||||
custom offsets should double-check that their levels look as expected.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes in GTK+ 3.22</title>
|
||||
|
||||
<para>
|
||||
The CSS parser has gotten a bit more selective in what it accepts as
|
||||
valid values for the font: shorthand. Following the CSS specification,
|
||||
at least a size and a family name are required now. If you want to
|
||||
change an individual facet of the font, like the weight, use the
|
||||
individual CSS properties: font-weight, font-size, font-family, etc.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The CSS parser now warns about some more constructs that are not according
|
||||
to the CSS spec, such as gradients with a single color stop. Instead,
|
||||
you can just use image(<color>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The #GtkSizeGroup:ignore-hidden property has not been working properly
|
||||
for a long time, and we've not documented it as broken and deprecated.
|
||||
The recommended alternative for reserving space of widgets that are not
|
||||
currently shown in the UI is to use a #GtkStack (with some 'filler'
|
||||
widget, e.g. an empty #GtkBox, in another page).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GtkHeaderBar now respects the hexpand property for its custom title
|
||||
widget and its packed children. This change may inadvertently cause the
|
||||
layout of those children to change, if they unintentionally had hexpand
|
||||
set before.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The behavior of the expand flag in #GtkTables #GtkAttachOptions has been
|
||||
changed to (again) match the behavior in #GtkBox and in GTK+ 2.x. These
|
||||
options don't cause the table itself to expand.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The way GtkPopover behaved during a call to gtk_widget_hide() violated
|
||||
some of the internal assumptions GTK+ makes about widget visibility.
|
||||
gtk_popover_popup() and gtk_popover_popdown() have been introduced to
|
||||
show or hide the popover with a transition, while gtk_widget_show()
|
||||
and gtk_widget_hide() on a GtkPopover now work the same way they do
|
||||
on any other widget and immediately hide (or show) the popover.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -36,7 +36,7 @@ How do I get started with GTK+?
|
||||
|
||||
<answer><para>
|
||||
The GTK+ <ulink url="http://www.gtk.org">website</ulink> offers some
|
||||
<ulink url="http://www.gtk.org/documentation.php">tutorials</ulink> and other
|
||||
<ulink url="http://www.gtk.org/documentation">tutorials</ulink> and other
|
||||
documentation (most of it about GTK+ 2.x, but mostly still applicable).
|
||||
More documentation ranging from whitepapers to online books can be found at
|
||||
the <ulink url="http://developer.gnome.org">GNOME developer's site</ulink>.
|
||||
|
||||
@@ -13,7 +13,7 @@ all: exampleapp
|
||||
$(CC) -c -o $(@F) $(CFLAGS) $<
|
||||
|
||||
exampleapp: $(OBJS)
|
||||
$(CC) -o $(@F) $(OBJS) $(LIBS)
|
||||
$(CC) -o $(@F) $(LIBS) $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
|
||||
@@ -8,6 +8,11 @@ struct _ExampleApp
|
||||
GtkApplication parent;
|
||||
};
|
||||
|
||||
struct _ExampleAppClass
|
||||
{
|
||||
GtkApplicationClass parent_class;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
|
||||
|
||||
static void
|
||||
|
||||
@@ -5,8 +5,14 @@
|
||||
|
||||
|
||||
#define EXAMPLE_APP_TYPE (example_app_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication)
|
||||
#define EXAMPLE_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_APP_TYPE, ExampleApp))
|
||||
|
||||
|
||||
typedef struct _ExampleApp ExampleApp;
|
||||
typedef struct _ExampleAppClass ExampleAppClass;
|
||||
|
||||
|
||||
GType example_app_get_type (void);
|
||||
ExampleApp *example_app_new (void);
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,11 @@ struct _ExampleAppWindow
|
||||
GtkApplicationWindow parent;
|
||||
};
|
||||
|
||||
struct _ExampleAppWindowClass
|
||||
{
|
||||
GtkApplicationWindowClass parent_class;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW);
|
||||
|
||||
static void
|
||||
|
||||
@@ -6,9 +6,14 @@
|
||||
|
||||
|
||||
#define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow)
|
||||
#define EXAMPLE_APP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_APP_WINDOW_TYPE, ExampleAppWindow))
|
||||
|
||||
|
||||
typedef struct _ExampleAppWindow ExampleAppWindow;
|
||||
typedef struct _ExampleAppWindowClass ExampleAppWindowClass;
|
||||
|
||||
|
||||
GType example_app_window_get_type (void);
|
||||
ExampleAppWindow *example_app_window_new (ExampleApp *app);
|
||||
void example_app_window_open (ExampleAppWindow *win,
|
||||
GFile *file);
|
||||
|
||||
@@ -25,7 +25,7 @@ resources.c: exampleapp.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --source
|
||||
$(CC) -c -o $(@F) $(CFLAGS) $<
|
||||
|
||||
exampleapp: $(OBJS) gschemas.compiled
|
||||
$(CC) -o $(@F) $(OBJS) $(LIBS)
|
||||
$(CC) -o $(@F) $(LIBS) $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -f org.gtk.exampleapp.gschema.valid
|
||||
|
||||
@@ -9,6 +9,11 @@ struct _ExampleApp
|
||||
GtkApplication parent;
|
||||
};
|
||||
|
||||
struct _ExampleAppClass
|
||||
{
|
||||
GtkApplicationClass parent_class;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
|
||||
|
||||
static void
|
||||
|
||||