Compare commits

..

182 Commits

Author SHA1 Message Date
Matthias Clasen
13f45bd4cd 3.20.4 2016-05-09 14:33:41 -04:00
Matthias Clasen
1b07cf6522 Update css node tests for removal of .slider from GtkSwitch 2016-05-09 14:33:41 -04:00
Emmanuele Bassi
1e7ded6a47 docs: Update examples of matching key bindings
The selector for matching GtkEntry has changed to `entry` after 3.20.

https://bugzilla.gnome.org/show_bug.cgi?id=766166
2016-05-09 12:46:35 +01:00
Rafael Fontenelle
207b793316 Updated Brazilian Portuguese translation 2016-05-08 14:25:31 +00:00
Lapo Calamandrei
4ece50a13c Adwaita: relocate a selector
relocate treview acceleditor > label in the treeview section and
add a comment for a testcase.
2016-05-06 18:50:37 +02:00
Lapo Calamandrei
659329c168 Adwaita: tidy treeview style properties...
...removing a double definition in the process.
2016-05-06 15:42:07 +02:00
Matthias Clasen
162e41633d scale: Fix mark positioning at the left/top edge
We were failing to take the widget allocation.x/y into account
when deciding whether we need to push in the mark.

https://bugzilla.gnome.org/show_bug.cgi?id=765922
2016-05-05 15:19:15 -04:00
Carlos Garnacho
6f2187270e x11: Rely on passive keyboard grabs with XI2 for DnD
The active keyboard grab can be spared then. This way the passive
key grabs allow other key combinations (eg. alt-tab) that are not
mandatory to grab here.
2016-05-05 15:04:02 -04:00
Carlos Garnacho
c509a104b7 searchenginetracker: Quote fts match so it's seen as a single phrase
FTS5 has a complex enough syntax that it makes not much sense to wrap
in simple search boxes.

https://bugzilla.gnome.org/show_bug.cgi?id=765981
2016-05-05 15:04:02 -04:00
Matthias Clasen
08e508889f css names are always set
No need to check for it, we set the css name on GtkWidgetClass
ourselves.
2016-05-05 15:04:02 -04:00
Timm Bäder
e9713145f9 switch: Remove .slider from slider gadget
As the documentation states, neither the switch nor the slider gadget
should be using any style classes.
2016-05-05 15:04:02 -04:00
Timm Bäder
f203f7ccc0 switch: Create less pango layouts
Instead of creating 2 pango layouts in every draw() and on in
_get_content_size (and calling into gettext twice in both cases), just
keep the layouts around and create them in only one place.
2016-05-05 15:04:02 -04:00
Timm Bäder
b9926f65a3 label: Also initialize text
So gtk_label_get_text returns the default value of "". Broke the
GtkModelButton default value test.
2016-05-05 15:04:02 -04:00
Timm Bäder
efcfa0ec94 label: don't use set_text in gtk_label_new
It would just set up lots of things with the default values, but a
common case is that a few gtk_label_set_* calls follow.
2016-05-05 15:04:02 -04:00
Timm Bäder
200ed52e92 label: minimum/natural size parameters are not nullable
Stop comparing them to NULL.
2016-05-05 15:04:02 -04:00
Timm Bäder
304e2d5711 label: Don't set out parameters twice
We set them later again when we calculate the vertical size, so just
move the general assignment to -1 into the horizontal branch.
2016-05-05 15:04:02 -04:00
Timm Bäder
0a3122b541 widget: Remove useless NULL check
We are checking for allocation != NULL at the beginning of the function
already. This also means that the allocation parameter is not nullable.
2016-05-05 15:04:01 -04:00
Benjamin Otte
1bac6684f1 cssimagebuiltin: Remove icons that don't draw anything anymore 2016-05-05 15:04:01 -04:00
Benjamin Otte
9d1a64455b cssimagebuiltin: Remove unused variables 2016-05-05 15:04:01 -04:00
Matthias Clasen
c46bfcf752 css: Stop drawing double borders for builtins
The fallback code for rendering builtin checks, radios
and expanders was using border parameters. With the generic
gadget borders using the same parameters, this was giving
double borders.
2016-05-05 15:04:01 -04:00
Timm Bäder
bab6cb6d97 shadowsvalue: Don't draw invisible box shadows 2016-05-05 15:04:01 -04:00
Matthias Clasen
f58aaf2ccf Fix gtk_paned_set_position to set position_set consistently
As pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=765676,
we were failing to set position_set if the position did not change.
2016-05-05 15:04:01 -04:00
Руслан Ижбулатов
86855f7531 GtkPlacesView: check for network:// URI support before using it
Specifically, this URI is not supported on Windows, but GFile will
do its "best" and turn it into GLocalFile("$pwd/network"), with
spectacularly bad results.

https://bugzilla.gnome.org/show_bug.cgi?id=765858
2016-05-05 15:04:01 -04:00
Carlos Garnacho
25672b7f39 gdkevents: Free motion events discarded by motion compression
Those should be freed together with their list link.
2016-05-05 15:04:01 -04:00
Matthias Clasen
1065506257 dnd: Make sure to free a stashed event
I am not sure if this happens in practice, but better to be safe.
2016-05-05 15:04:01 -04:00
Matthias Clasen
e3e84de96c gesture: Don't leak stashed events
These events were never freed.
2016-05-05 15:04:01 -04:00
Matthias Clasen
964eb99a5e Drop unused macros
These have been sitting here forever, unused. Time to drop them
2016-05-05 15:04:01 -04:00
Matthias Clasen
518023df56 x11: drop a useless list
We were keeping all the event sources in a list, only to remove
them at the end of their life. Not useful.
2016-05-05 15:04:01 -04:00
Matthias Clasen
86f197893a wayland: drop a useless list
We were keeping all the event sources in a list, only to remove
them at the end of their life. Not useful.
2016-05-05 15:04:01 -04:00
Matthias Clasen
ac26fc3be4 wayland: Tag the event source with the acutal display name 2016-05-05 15:04:00 -04:00
Matthias Clasen
4ad8436316 wayland: Make gdk_display_get_name work
It should just return the same as gdk_screen_make_display_name.
2016-05-05 15:04:00 -04:00
Matthias Clasen
631123bbd4 Use a better hash for arcs 2016-05-05 15:04:00 -04:00
Matthias Clasen
5f9a19ff33 box gadget: Redo expand flag handling
We only keep one align flag per child, so it seems odd to
keep separate h/v expand flags. Just keep one expand flag
and interpret it according to orientation. Allow setting
the expand flag for child widgets too, though, so we can
make widget expand without interfering with the recursive
widget expand flag.

Update all callers.

Use the new possibility of expanding child widgets to make
the label of check and radio buttons expand. This fixes
unexpected behavior of these widgets in RTL in some places.

https://bugzilla.gnome.org/show_bug.cgi?id=765742
2016-05-05 15:04:00 -04:00
Matthias Clasen
587308004c expander: Reverse alignments in RTL
Flip alignments of the title gadget children.
2016-05-05 15:04:00 -04:00
Matthias Clasen
2ebad7ec2b check button: Reverse alignments in RTL
Flip alignments for the box gadget children.
2016-05-05 15:04:00 -04:00
Matthias Clasen
fc04d6613a box gadget: allow reversing alignments
In RTL, we want to interpret GTK_ALIGN_START and _END
in the opposite way. Since we don't give gadgets a text
direction, just allow setting an align_reverse flag
to the box gadget.
2016-05-05 15:04:00 -04:00
Руслан Ижбулатов
515c665b7f GtkTreeView: change child repositioning to preserve locality
If there was a piece of text in the cell, then when the edit
entry is shown for that cell, it should have a piece of text
in it roughly at the same location.

Therefore, when child widget is enlarged (child preferred
size exceeds cell size), extra width should be added by
extending either left or right edge depending on text direction.

If after that the child sticks outside of the treeivew visible region,
try to push it back inside (breaking its alignment with the
cell), again, giving preference (i.e. adjusting it last)
to either left or right edge depending on text direction.

https://bugzilla.gnome.org/show_bug.cgi?id=765471
2016-05-05 15:04:00 -04:00
Lapo Calamandrei
563add1325 Adwaita: add a background to cellrendertext 2016-05-05 15:04:00 -04:00
Daniel Stone
0e44b8c38c wayland: Ignore NoSymbol keys
NoSymbol is not a valid GDK symbol (it only has the concept of
VoidSymbol, for some reason, which is neither the same thing nor
produced by any sane keymap). Passing NoSymbol events through to GTK+
apps is unlikely to produce anything useful.

In particular, this meant VTE would scroll to the end of the buffer when
pressing Fn (required for Page Up/Down on Macs), as it was receiving a
keypress that wasn't a modifeir. This does not happen on X11, as the
KEY_FN keycode is above 255, so does not get sent to clients.

https://bugzilla.gnome.org/show_bug.cgi?id=764825
2016-05-05 15:04:00 -04:00
Christian Hergert
cdab14dc22 pixelcache: reuse existing timeout source when possible
This avoids the g_source_remove(), g_source_destroy(),
g_timer_source_new(), and g_source_set_name_by_id() in the common case.

Instead, we reuse our previous source and update the ready time to our
new deadline. We lose the coalescing with g_timeout_add_seconds(), but
that is not going to help in the common case anyway (unless you have
three hands and can scroll multiple pixelcached backed widgets at once).

https://bugzilla.gnome.org/show_bug.cgi?id=765640
2016-05-05 15:04:00 -04:00
Matthias Clasen
ab300e7de3 dnd: Fix some issues with drag icons
In non-composited environments, we were ending up with all-black
drag icons, because nothing was drawing the background of our new
toplevel. Fix this by drawing background when we are not composited.
We don't do this when composited, since we want to allow transparent
icons.
2016-05-05 15:03:59 -04:00
Matthias Clasen
acdb9650e2 dnd: Set attributes from all widgets for text drag icons
There is nothing textview-specific here.
2016-05-05 15:03:59 -04:00
Matthias Clasen
92166f1f69 progressbar: Enforce invariants
When measuring gadgets, minimum must come out <= natural.
Make sure we don't fail this when measuring progressbar text.

https://bugzilla.gnome.org/show_bug.cgi?id=765644
2016-05-05 15:03:59 -04:00
Matthias Clasen
7054b0ccff dnd: Fix lifecycle issues with widgets as drag icons
The documentation clearly says that the widget is not destroyed,
but we were in fact failing to keep it alive, since it was still
a child or the icon_window when we destroy that. Fix this by
reparenting the icon_widget out before. Also, deal with the
possibility that the application might destroy the widget
halfway through, for whatever reason.
2016-05-05 15:03:59 -04:00
Matthias Clasen
ea0d3d2a95 testdnd2: Actually test gtk_drag_set_icon_widget
I added a new test function, but didn't actually use it.
No wonder I couldn't reproduce the lifecycle issues with
drag widgets that firefox is experiencing.
2016-05-05 15:03:59 -04:00
Jonas Ådahl
0258c88949 gdk/dnd: Don't use default display when getting cursor
Always associate a drag context with a GdkDisplay and use that when
getting a cursor for a given action.

If we don't do this, dragging on a window that doesn't use the default
display will make us use cursors from the wrong display.

https://bugzilla.gnome.org/show_bug.cgi?id=765565
2016-05-05 15:03:59 -04:00
Christian Hergert
3244d7a138 frametimings: reuse previous frame timing in common case
Typically, there won't be any references on old frame timings except for
the most recent timing. So instead of discarding these and re-entering
gslice twice, just steal the old frame timing and reuse it.

https://bugzilla.gnome.org/show_bug.cgi?id=765592
2016-05-05 15:03:59 -04:00
Jonas Ådahl
044e4b15a6 wayland: Track orphaned dialogs per display
Don't track all orphaned dialogs globally, as mixing them up with each
other would in most cases trigger errors when we try to pass bogus
values to Wayland requests.

https://bugzilla.gnome.org/show_bug.cgi?id=765474
2016-05-05 15:03:59 -04:00
Matthias Clasen
f6a5dad12c Expand the drag widget testcase
This adds a testcase which reuses the drag widget for multiple
drags.
2016-05-05 15:03:59 -04:00
Matthias Clasen
b38e4e0ac0 notify test: Skip GtkFontButton::font-name
This is not freely settable.
2016-05-05 15:03:59 -04:00
Matthias Clasen
4b4533ef68 font button: Fix translation of font-name default
The default value should come out of regular translations, not
property translations.
2016-05-05 15:03:59 -04:00
Christian Hergert
113ce66151 wayland: avoid jitter in keyboard repeat
When synthesizing keyboard repeat, we can potentially drift further from
the mark depending on the timing of the frame callback and how long it
took to deliver the event.

This patch attempts to reduce this by tracking from a stable epoch the
time of our next keyboard repeat.

https://bugzilla.gnome.org/show_bug.cgi?id=765567
2016-05-05 15:03:59 -04:00
Timm Bäder
021d065a1f GtkLabel: Use g_clear_object
https://bugzilla.gnome.org/show_bug.cgi?id=765496
2016-05-05 15:03:58 -04:00
Timm Bäder
db17324d82 GtkLabel: Don't manually iterate over link list
There are various functions to access links based on their index for
a11y. We can spare quite a few lines of code by just using
g_list_nth_data instead of iterating over the list ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=765496
2016-05-05 15:03:58 -04:00
Christian Hergert
d505df90b0 builtinicon: avoid calculating font-metrics in vast majority of cases
We perform lots of gadget allocations that require allocating a
GtkBuiltinIcon. One notable example is the scrollbar for a scrolled
window.

In the process of doing this, we often calculate baseline information that
isn't necessary. With how much this code path gets exercised, its worth
catching the result for the common case, which is that the font-description
has not changed and we are using the default language the application
was started with.

This simply caches the previous result and verifies that we can reuse it
with pango_font_description_hash() and a simple language check.

Numbers below are scrolling through a textview with GDK_KEY_Down.

Before:
      SELF CUMULATIVE    FUNCTION
[   0.08%] [   9.26%]    gtk_builtin_icon_get_preferred_size
[   0.01%] [   8.82%]      pango_context_get_metrics
[   0.02%] [   0.16%]      gtk_widget_get_pango_context
[   0.06%] [   0.06%]      pango_context_get_language
[   0.01%] [   0.02%]      g_type_check_instance_cast
[   0.02%] [   0.02%]      strlen
[   0.02%] [   0.02%]      pango_context_get_font_description
[   0.02%] [   0.02%]      g_list_foreach
[   0.01%] [   0.01%]      gtk_css_style_get_value
[   0.01%] [   0.01%]      itemize_with_font
[   0.01%] [   0.01%]      pango_context_get_type
[   0.01%] [   0.01%]      get_base_metrics
[   0.00%] [   0.01%]      pango_font_metrics_unref
[   0.01%] [   0.01%]      g_list_free
[   0.01%] [   0.01%]      gtk_builtin_icon_get_type

After:
      SELF CUMULATIVE    FUNCTION
[   0.08%] [   0.18%]    gtk_builtin_icon_get_preferred_size
[   0.02%] [   0.02%]      pango_font_description_hash
[   0.00%] [   0.02%]      gtk_widget_get_pango_context
[   0.00%] [   0.02%]        g_object_get_qdata
[   0.00%] [   0.02%]          g_datalist_id_get_data
[   0.02%] [   0.02%]      gtk_builtin_icon_get_type
[   0.01%] [   0.01%]      pango_context_get_font_description
[   0.00%] [   0.01%]      - - kernel - -
[   0.01%] [   0.01%]      pango_context_get_language
[   0.00%] [   0.01%]      gtk_css_style_get_value
[   0.00%] [   0.01%]      gtk_css_gadget_get_style

https://bugzilla.gnome.org/show_bug.cgi?id=765486
2016-05-05 15:03:58 -04:00
Paolo Borelli
db326889f9 inspector: do not leak seat capabilities descriprion
Factor out an utility function for readability and free the string
with the list of capabilities
2016-05-05 15:03:58 -04:00
Christian Hergert
6be0f108b4 kineticscrolling: avoid stutter at tail of kinetic deceleration
When decelerating the kinetic scroll, we can get into a position where it
looks like we are stuttering. This happens because the amount we move is
so little that it takes multiple frames to make forward progress by one
pixel.

This prevents that by detecting when we have reached the slow stutter of
the deceleration and simply stops the deceleration phase immediately.

https://bugzilla.gnome.org/show_bug.cgi?id=765493
2016-05-05 15:03:58 -04:00
Paolo Borelli
136409b8cd textiter: add unit test for forward_to_line_end
Surprisingly we had no unit test for this method
2016-05-05 15:03:58 -04:00
Matthias Clasen
84e0bef150 Fix formatting
The previous change was not quite using the right coding style.
2016-05-05 15:03:58 -04:00
Timm Bäder
0e002cbef0 listbox: Make sure page down/up move at least one row
When the current cursor_row is taller than the page_size we get from the
GtkAdjustment, the previous code would not actually cause any scrolling,
so make sure we just take the row after or before the cursor_row in that
case.

https://bugzilla.gnome.org/show_bug.cgi?id=765261
2016-05-05 15:03:58 -04:00
Benjamin Otte
107b5d7397 cssshadowsvalue: Avoid allocating new value if not needed 2016-05-05 15:03:58 -04:00
Benjamin Otte
8efd10c9fd cssbordervalue: Avoid allocating new value if not needed 2016-05-05 15:03:58 -04:00
Benjamin Otte
758e10ad41 cssbgsizevalue: Avoid allocating new value if not needed 2016-05-05 15:03:58 -04:00
Matthias Clasen
5d5b7c9f7f Add a dnd test using a window as icon
This case is causing problems in firefox. Lets at least make
sure that it doesn't crash in GTK+.
2016-05-05 15:03:58 -04:00
Jonathan Matthew
761f19e7d7 gtkmenusectionbox: remove submenus when the parent item is removed
https://bugzilla.gnome.org/show_bug.cgi?id=749405
2016-05-05 15:03:58 -04:00
Matthias Clasen
c33d8c7005 widget: Don't show widget resizes in the inspector
Avoiding this sort of visual debugging in the inspector
is the main reason we have per-display debug flags now.
2016-05-05 15:03:57 -04:00
Matthias Clasen
4cf6141462 css gadget: Fix baseline debug
We were not using the baseline that we're computing.
2016-05-05 15:03:57 -04:00
Matthias Clasen
3376093058 Use qdata for debug flags
This avoids some overhead.
2016-05-05 15:03:57 -04:00
Matthias Clasen
11e8573d0e css gadget: Don't get display flags twice
This got more expensive now that we store them per-display,
so don't get them twice in the same function.
2016-05-05 15:03:57 -04:00
Christian Hergert
8653bb8122 debug: remove open-coded debug checks in gtktextsegment
These runtime checks were being performed whether or not we were in a
debug build. Using GTK_DEBUG_CHECK() will compile out of production
builds, as it will result in something like:

  if (G_UNLIKELY(0))

which the optimizer can prune.

https://bugzilla.gnome.org/show_bug.cgi?id=765284
2016-05-05 15:03:57 -04:00
Matthias Clasen
9e2d5b9064 Add some va marshallers to frequent signals
This makes us take the fast path in signal emission.
2016-05-05 15:03:57 -04:00
Matthias Clasen
bdda7d1fa8 magnifier: Only connect to ::draw when needed
This making us take the slow path in ::draw handling, so we
want to avoid it if we can.

https://bugzilla.gnome.org/show_bug.cgi?id=765238
2016-05-05 15:03:57 -04:00
Lapo Calamandrei
7dbe3d953d Adwaita: more flexible headerbar_fill mixin
adding an additional background layer as a parameter.
2016-05-05 18:07:55 +02:00
Kjartan Maraas
80a93be9e6 Updated Norwegian bokmål translation. 2016-05-03 23:22:42 +02:00
Olivier Fourdan
a537bdc1fe wayland: fix up/down mix up in discrete events
The wayland specification for discrete step information for scroll and
other axes reads:

| The discrete value carries the directional information. e.g. a
| value of -2 is two steps towards the negative direction of this axis.

mutter sets a value of 1 for SCROLL_DOWN events and -1 for SCROLL_UP
events.

gdkdevice Wayland backend does the opposite, it translates a positive
discrete value as SCROLL_UP and a negative value as SCROLL_DOWN, which
ends up inverting the scrolling direction.

Fix the logic in gdkdevice Wayland to use a positive value as
SCROLL_DOWN and a negative value as SCROLL_UP so that it matches mutter
and weston logic.

https://bugzilla.gnome.org/show_bug.cgi?id=765907
2016-05-03 10:50:50 +02:00
Carlos Soriano
848dd947ca testnotebookdnd: add one GtkListBox as tab content
To make sure we test regressions on widgets that bubble up motion
handling and can trigger the motion handling code path on GtkNotebook.

https://bugzilla.gnome.org/show_bug.cgi?id=764395
2016-05-02 13:21:41 +02:00
Carlos Soriano
d6187a3dc4 gtknotebook: avoid tab dnd from content
Before commit 6c1bee2377 we were setting an attribute of GtkNotebook
to track the pressed button if the pressed button happened on the
tab itself.
Later in the motion handling code we were checking whether the private
pressed button attribute was set or not in order to handle a tab dnd
or not.

In commit 6c1bee2377 the code changed and set the pressed button
variable unconditionally, which means, a motion event from within the
tab content triggered a tab reordering.

This happened only if the children hierarchy have a widget that bubbles
up both button press event, which sets the private pressed button
attribute; and motion events, which started the tab dnd checking the
private pressed button attribute.
A widget that experienced the regression was GtkListBox.

In order to fix it, set the button pressed variable only when it press
the tab itself, not the content.

https://bugzilla.gnome.org/show_bug.cgi?id=764395
2016-05-02 13:21:34 +02:00
Руслан Ижбулатов
96e1d7bfac W32: reword the error about required cairo version
1.14.x series does not contain the functionality needed by GTK+.
Advise to use 1.15.x (1.15.2 is available) or 1.16.x (yet to be released).

https://bugzilla.gnome.org/show_bug.cgi?id=765790
2016-04-29 07:07:29 +00:00
Lapo Calamandrei
0f28c2cd47 Adwaita: refactor levelbar styling. 2016-04-28 15:56:14 +02:00
Daniel Stone
8f9693e02c wayland: Ignore NoSymbol keys
NoSymbol is not a valid GDK symbol (it only has the concept of
VoidSymbol, for some reason, which is neither the same thing nor
produced by any sane keymap). Passing NoSymbol events through to GTK+
apps is unlikely to produce anything useful.

In particular, this meant VTE would scroll to the end of the buffer when
pressing Fn (required for Page Up/Down on Macs), as it was receiving a
keypress that wasn't a modifeir. This does not happen on X11, as the
KEY_FN keycode is above 255, so does not get sent to clients.

https://bugzilla.gnome.org/show_bug.cgi?id=764825
2016-04-27 14:08:11 +01:00
Carlos Garnacho
7dac519277 wayland: Perform seat grab focus checks on native windows
We don't care about the specific (possibly client-side) window that
requested the focus here, only the toplevel. Fixes mistakenly sent
focus events when the grab happens inside the current focus window.

https://bugzilla.gnome.org/show_bug.cgi?id=762756
2016-04-27 13:34:27 +02:00
Rūdolfs Mazurs
d0ad84c2a3 Update Latvian translation 2016-04-24 16:18:45 +03:00
Rui Matos
60ba261ed6 wayland: Leave existing mods on map_virtual_modifiers
map_virtual_modifiers() is supposed to add the necessary virtual mods
but otherwise leave the mods that are passed in.

https://bugzilla.gnome.org/show_bug.cgi?id=765270
2016-04-19 21:13:45 +02:00
Timm Bäder
ddde1a58a8 gtkcssimagebuiltin: Save/restore around cairo_clip
This was previously causing trouble in checkbuttons where the check node
didn't have an icon shadow set, e.g. in Raleigh.
2016-04-19 10:40:14 -04:00
Christian Hergert
373749649e frame-clock: avoid g_signal_emit_by_name()
These were showing up higher in Sysprof profiles.

The simple fix is to avoid the emit_by_name() and let the interface emit
the signals directly. No function preconditions are provided since these
are internal API.
2016-04-19 10:39:56 -04:00
Carlos Garnacho
9187677a78 wayland: Improve checks when flushing scroll events
If we get gdk_wayland_seat_flush_frame_event() with no previous event to be
flushed, we fallback into the scroll event checks. However, there's no check
performed there as to whether it really scrolled, so it'd always send a smooth
scroll event with 0/0 deltas in this case.

This should be mostly harmless, but still, we should only end up emitting scroll
events if those really happened.
2016-04-19 10:39:20 -04:00
Carlos Garnacho
b6402da864 wayland: Do not check the pointer focus when receiving wl_pointer.frame
The frame event is also meant to compress wl_pointer.leave events, at this
point the focus surface will be definitely NULL. In the end, wl_pointer.frame
should flush the last composed event despite the pointer focus.

https://bugzilla.gnome.org/show_bug.cgi?id=765065
2016-04-19 10:39:04 -04:00
Carlos Garnacho
32397f0b72 gdk: Make GDK_TOUCH_CANCEL be dealt with similarly to GDK_TOUCH_END
We must emit the cancel event with the same semantics, and towards the GdkWindow
that is currently under the touchpoint, so make proxy_button_event() deal with
GDK_TOUCH_CANCEL.

Fixes the GDK_TOUCH_CANCEL event being emitted only on the toplevel, which is
usually non-sufficient.
2016-04-19 10:37:34 -04:00
Matthias Clasen
6e00717079 menuitem: Fix some possible problems with arrow_gadget
https://bugzilla.gnome.org/show_bug.cgi?id=765134 shows
a stacktrace where we end up with arrow_gadget being NULL
despite the conditions for its presence being satisfied.

This commit makes sure we call update_arrow_gadget() whenever
any of the conditions changes. This should fix the reported
crash.
2016-04-19 10:36:23 -04:00
Matthias Clasen
e8863ece18 Add some more accelerator / modifier tests 2016-04-19 10:36:14 -04:00
Matthias Clasen
0100f08592 wayland: Make virtual modifier mapping more similar to X
Ignore virtual modifiers that are mapped to Mod1 (as Meta
often is), to avoid interfering with our fix interpretation
of Mod1 as Alt.
2016-04-19 10:36:14 -04:00
Matthias Clasen
49bddf48ad wayland: Fix the map_virtual_modifiers implementation
We were not stripping real modifiers out, and thus always
thought there's a conflict when the passed in modifiers
included any real modifiers.
2016-04-19 10:36:14 -04:00
Matthias Clasen
4018a32e0b wayland: Implement virtual modifiers
Since Wayland is using libxkbcommon, it inherits X unfortunate
real/virtual modifier distinction, so we have to do the same
gymnastics we do for X to map between the two.

This should fix matching of accelerators using virtual modifiers
(modulo gnome-shell bugs regarding the handling of Super).

https://bugzilla.gnome.org/show_bug.cgi?id=764424
2016-04-19 10:36:14 -04:00
Matthias Clasen
e530a0ecd1 Clarify docs a bit
The wording here was just awkward: TRUE is returned if... Note that
FALSE is also returned if...
2016-04-19 10:36:14 -04:00
Emmanuele Bassi
5e11b071a7 recent-manager: Emit ::changed on file deletion
This will clear out the list of recently used files, and will allow GVFS
to handle this case.

https://bugzilla.gnome.org/show_bug.cgi?id=693077
2016-04-19 10:30:59 -04:00
Emmanuele Bassi
1c449e8d4a Assign a recent manager if one is set
The GtkRecentAction implementation ignored a GtkRecentManager passed to
its :manager property.

https://bugzilla.gnome.org/show_bug.cgi?id=620065
2016-04-19 10:30:59 -04:00
Sébastien Wilmet
6144469d02 app: minor code improvements
- use GDK_EVENT_PROPAGATE
- pass better zero-values to gtk_init(), since the parameters are
  pointers.

https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:58 -04:00
Sébastien Wilmet
a2a3de7861 app: improve code of extract_accels_from_menu()
sub_model is clearer than "m". And we don't use the key, so we can pass
NULL instead.

https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:52 -04:00
Sébastien Wilmet
69c902a146 app: use g_set_object()
https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:45 -04:00
Sébastien Wilmet
0bb1991afb app: don't use deprecated function
gtk_application_add_accelerator() is deprecated, but was still used
inside IGNORE_DEPRECATIONS's.

https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:39 -04:00
Sébastien Wilmet
5cc3b265be app: improve doc of gtk_application_get_window_by_id()
https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:17 -04:00
Sébastien Wilmet
cb2950e17f app: improve doc of gtk_application_set_accels_for_action()
When reading the API for the first time I didn't know what was the
"detailed" action name.

https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:28:06 -04:00
Sébastien Wilmet
dc96266e66 app: avoid code duplication for setting accels
The implementation of the deprecated functions is now based on the
non-deprecated gtk_application_set_accels_for_action().

https://bugzilla.gnome.org/show_bug.cgi?id=764846
2016-04-19 10:27:19 -04:00
Sébastien Wilmet
b51455712f app: fix indentation
And add missing curly braces.
2016-04-19 10:24:32 -04:00
Sébastien Wilmet
9bc3a93cf9 docs: trivial fixes in GtkApplication-related documentation 2016-04-19 10:24:07 -04:00
Olivier Fourdan
115af7c96e wayland: do not update shadows for child windows
glade-previewer places a gtkwindow inside another toplevel gtkwindow,
updating the shadow width for the client induces a busy loop where the
parent will grow continuously until it crashes gnome-shell/mutter.

To avoid the loop, do not update the shadow width if not dealing with a
toplevel window.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=761651
2016-04-19 10:23:39 -04:00
Wouter Verhelst
139cb2a510 Clarify that one cannot use the same variable
A naive way to perform an action on all parent nodes of a given node
could be to do:

while(gtk_tree_model_iter_parent(model, &iter, &iter)) {
	/* perform some action on iter here */
}

However, since gtk_tree_model_iter_parent() will initialize the iterator
pointed to by the second parameter before performing the lookup, this
will not work.

Explicitly document this behaviour.

Signed-off-by: Wouter Verhelst <w@uter.be>

https://bugzilla.gnome.org/show_bug.cgi?id=573380
2016-04-19 10:22:00 -04:00
Matthias Clasen
a2a369ae1c Add a comment to explain numbers here
This explains the change in the previous commit.
2016-04-19 10:21:30 -04:00
Piotr Drąg
9d8a3e99fd cups: Fix duplicate string
https://bugzilla.gnome.org/show_bug.cgi?id=765122
2016-04-19 10:21:11 -04:00
Lapo Calamandrei
5affbbe545 Adwaita: fix infobar text color in backdrop windows
see https://bugzilla.gnome.org/show_bug.cgi?id=765213
2016-04-19 00:21:15 +02:00
Piotr Drąg
dadd81768a Updated Polish translation 2016-04-18 02:36:34 +02:00
Bastien Nocera
a69e59132f cups: Fix gettext usage
The previous patches didn't mark some strings as to be translated, and
tried to translate strings with a variable part already inside the
string, which isn't going to work.

Mark the strings as translatable with context, and also make sure to
translate static strings when getting them out of their structure.

https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-16 18:42:28 +02:00
Lapo Calamandrei
dfc26939cc Adwaita: ensure dialogs titlebar rounded corners
broken from my previous commit about rounded corners, dialogs
doesn't use the "window" node, but the "dialog" node, so use the
.background styleclass in the selectors which is more generic.
2016-04-16 14:44:58 +02:00
Lapo Calamandrei
c961962ce6 Adwaita: ensure titlebar corners are not rounded...
...when the window is maximized or tiled, by using more specific
selectors, since there were cases of erroneusly rounded corners.
See https://bugzilla.gnome.org/show_bug.cgi?id=765038
2016-04-16 12:07:32 +02:00
Benjamin Otte
6308d3a03d iconhelper: Invalidate on clear()
When clearing the icon helper, we need to invalidate it. Otherwise the
previous icon keeps lingering along.
This is not relevant inside gtkiconhelper.c where other code causes the
invalidation, but happens when external code calls
_gtk_icon_helper_clear().

https://bugzilla.gnome.org/show_bug.cgi?id=765066
2016-04-14 15:17:54 -04:00
Felipe Borges
71385044fe cups: make string non-literals translatable again
Notice that C_ just takes string literals as arguments.

https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-14 18:58:56 +02:00
Sebastien Bacher
c1e82bf276 gtkplacessidebar: don't margins in the code
those should rather be defined by the theme
https://bugzilla.gnome.org/show_bug.cgi?id=763768
2016-04-14 11:47:31 +02:00
Felipe Borges
8e0c2a3fff cups: Fix more "format not a string literal" error
https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-13 14:27:34 +02:00
YunQiang Su
99763f3dd5 update zh_CN translation 2016-04-13 20:15:38 +08:00
YunQiang Su
f655210f42 update zh_CN translation 2016-04-13 16:41:44 +08:00
Rico Tzschichholz
2b71170b12 gtk: Annotate GtkFlowBoxCreateWidgetFunc as "transfer full"
(cherry picked from commit c8d1108574)
2016-04-12 13:34:53 +02:00
Matthias Clasen
8e6171d68e 3.20.3 2016-04-11 20:04:45 -04:00
Ignacio Casal Quinteiro
667bb3c869 win32: rollback change and use _gdk_display
This makes usage of _gdk_display again when creating a window.
This is needed because there is a window created when the display
is being initialized, so it becomes a chicken and egg problem.
For now we roll back this to fix the wintab crash but we might
want to fix this again in the future by improving the wintab
initialization.

https://bugzilla.gnome.org/show_bug.cgi?id=764664
2016-04-11 22:35:43 +02:00
Arash Mousavi
c752d8ad75 Update Persian translations 2016-04-11 23:11:35 +04:30
Matthias Clasen
22d3a16653 listbox: Fix css node ordering
When inserting a child at the top, we were not inserting its
css node properly.

https://bugzilla.gnome.org/show_bug.cgi?id=764710
2016-04-11 07:53:45 -04:00
Mohammed Sadik
b16c9ebdf1 broadway: fix documentation
broadway backend has 0 as the default display port,
which maps to tcp port 8080.

https://bugzilla.gnome.org/show_bug.cgi?id=764835
2016-04-11 07:36:31 -04:00
Lukas K
0f85624e3d Fix gtk_scrollable_get_border annotation
https://bugzilla.gnome.org/show_bug.cgi?id=764540
(cherry picked from commit 8fc1ca1ef2)
2016-04-10 16:14:21 +02:00
Zahari Yurukov
6b401440d7 Added Bulgarian translation 2016-04-10 16:50:43 +03:00
Zahari Yurukov
b9c2bbc385 Added Bulgarian translation 2016-04-10 16:31:35 +03:00
Friedrich Beckmann
6964f9dbf1 quartz: zoom/rotate change compile/runtime check from 10.7 to 10.8
The zoom/rotate change for quartz does not build on 10.7. This change
adds zoom/rotate support in quartz only for 10.8 and following. The
problems is described here:
https://bugzilla.gnome.org/show_bug.cgi?id=760276 and here
https://trac.macports.org/ticket/51052
NSEventPhaseMayBegin was only introduced in 10.8 although documentation
says it is introduced in 10.7. Tests on 10.7 indicate that the phase
property for the Magnify event is not supported at all on 10.7
2016-04-09 18:09:59 -04:00
Matthias Clasen
85df2d3729 Mention geometry handling changes in release notes 2016-04-09 17:06:45 -04:00
Olivier Fourdan
0922d4059a test: do not remove files on distclean
bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=764686
2016-04-08 17:01:56 +02:00
Руслан Ижбулатов
f233609c93 GDK W32: Don't move windows into top-left corner on style change
This fixes a bug that was introduced by db1b24233e.
The reason why 0:0 coordinates were passed was that SWP_NOREPOSITION was
misinterpreted as SWP_NOMOVE. That is not the case - SWP_NOREPOSITION
prevents owner Z-order change, not the window position change.
2016-04-06 10:25:32 +00:00
Olivier Fourdan
dee6d13f0d wayland: Do not resize with the same size
gnome-control-center is calling gtk_window_resize() on configure-event
signals which leads to a busy loop.

Avoids such a busy loop by not re-configuring a window with the same
size, unless this is coming from and xdg-shell configure.

bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=764374
2016-04-05 18:23:45 +02:00
Bastien Nocera
830626596b cups: Fix "format not a string literal" error
https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-05 13:01:59 +02:00
Bastien Nocera
3ff8f55ed0 recent-manager: Fix "format not a string literal" error
https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-05 13:01:50 +02:00
Bastien Nocera
7ca4d22bc3 file-chooser-widget: Fix "format not a string literal" error
https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-05 13:01:39 +02:00
Bastien Nocera
ff8d0dc54c about-dialog: Fix "format not a string literal" errors
A non-intrusive fix.

https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-05 13:01:33 +02:00
Bastien Nocera
4b104c6217 ui-manager: Fix "format not a string literal" errors
Quite a bit of code movement, but necessary to build with the
default format errors produced by newer versions of GCC.

https://bugzilla.gnome.org/show_bug.cgi?id=764585
2016-04-05 13:01:24 +02:00
Benjamin Otte
6144b2276c window: Remove suspicious branch
This commit was found to make emacs windows shrink, but the reversal
caused more widespread damage than initially expected. I've send
suggested fixes to the emacs team, to avoid the shrinking window,
regardless of this commit.

Original commit message:

It seems this branch is not needed anymore. It was originally added in
1999 to support gtk_widget_realize(), but all those reasons seem
obsolete today.
Instead just call gtk_widget_realize().

If you end up at this commit when bisecting:
There is no bug that made me remove this code, it was purely meant to be
cleanup / dead code removal. I seem to have introduced a new bug or
bisecting wouldn't have let you here. So it seems we should just revert
this commit.
2016-04-04 11:22:47 -04:00
Lapo Calamandrei
17d1cd1506 Adwaita: transparent textview border border
So it will play nicely with gedit color combinations.
See https://bugzilla.gnome.org/show_bug.cgi?id=764203
2016-04-04 12:06:05 +02:00
Tom Tryfonidis
40afffb9fd Updated Greek translation 2016-04-04 09:28:23 +00:00
Kristjan SCHMIDT
b088c9de26 Updated Esperanto translation 2016-04-03 02:17:55 +02:00
Kristjan SCHMIDT
17a26eef48 Updated Esperanto translation 2016-04-03 00:47:30 +02:00
Lapo Calamandrei
30e234d847 Adwaita: style textview border
see https://bugzilla.gnome.org/show_bug.cgi?id=764203
2016-04-02 16:27:10 +02:00
Lapo Calamandrei
9ce61b5c9a Adwaita: cosmetic fixes 2016-04-02 16:04:15 +02:00
Matthias Clasen
41687658ad Use dngettext instead of ngettext
Since we are a library, we have to pass the domain explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=764261
2016-04-01 23:07:13 +02:00
Carlos Garnacho
b8140b74e3 wayland: Avoid NULL slave devices in GdkSeat::get_slaves
Just because we're asked for a capability, it doesn't mean we have
it.
2016-04-01 19:11:35 +02:00
Lapo Calamandrei
8d402589cf Adwaita: set secondary caret color to selection blue
see https://bugzilla.gnome.org/show_bug.cgi?id=764204
2016-04-01 16:47:14 +02:00
Rui Matos
b4143c6af9 gtkwindow: Don't allow unresizable windows to be smaller than required
Commit cdc580463e made it so that
unresizable windows can't be smaller than a set default size but it
lost the logic to ensure these windows remain at least big enough to
comply with their requisition.

https://bugzilla.gnome.org/show_bug.cgi?id=764174
2016-03-31 21:04:20 +02:00
Matthias Clasen
3d76005585 icon theme: Make the builtin hicolor index match reality
We were missing all of the status directories, and a few sizes.
This was causing us to not find image-missing on systems without
hicolor icon theme (this basically only happens on Windows).

https://bugzilla.gnome.org/show_bug.cgi?id=764378
2016-03-31 07:13:16 -04:00
Matthias Clasen
c8de4c9093 3.20.2 2016-03-30 22:29:48 -04:00
Theppitak Karoonboonyanan
5d29c07087 Updated Thai translation. 2016-03-31 09:14:44 +07:00
Matthias Clasen
13619963a0 Adwaita: theme acceleditor > label
We need to have an opaque background here, otherwise the underlying
cell shines through.

https://bugzilla.gnome.org/show_bug.cgi?id=764376
2016-03-30 19:53:01 -04:00
Matthias Clasen
79a2edd840 Accel cell renderer: Set a css name
Give the event box we use here the distinctive name "acceleditor".
2016-03-30 19:52:45 -04:00
Benjamin Otte
f3dd4a6fee widget: queue a redraw only if resize highlighting is enabled
e8aa9b0440 introduced a new debug mode
that highlights resizes. Unfortunately it has the side effect of
always queueing redraws even when the debug mode is not enabled.
Make the redraw conditional.
2016-03-30 21:45:54 +02:00
Debarshi Ray
d14cdf2998 window: Make the sample code obey the party line on geometry widgets
The geometry_widget parameter is deprecated [1]. If one is passed, we
remove GDK_HINT_BASE_SIZE and GDK_HINT_RESIZE_INC from the mask [2].

[1] commit 08974a1e9a
[2] commit f7cc4abbad

https://bugzilla.gnome.org/show_bug.cgi?id=764321
2016-03-30 13:22:50 +02:00
Debarshi Ray
b6d73e7d20 window: Fix gtk_window_set_geometry_hints documentation
The geometry_widget parameter is ignored from 3.20 onwards [1], not
3.18 as mentioned in the documentation.

[1] commit 08974a1e9a

https://bugzilla.gnome.org/show_bug.cgi?id=764321
2016-03-30 13:22:50 +02:00
Руслан Ижбулатов
a4c6339351 GDK W32: Implement show_window_menu()
This is achieved by sending undocumented message WM_SYSMENU
to the window.
Before doing that, the window is given WS_SYSMENU style
(to enable window menu) and some combination of
WS_MAXIMIZEBOX (for "Mazimize" item)
WS_MINIMIZEBOX (for "Minimize" item)
WS_SIZEBOX (for "Size" item)
depending on which operations are currently permissible.

WM_SYSMENU is processed by DefWindowProc(), which results
in showing the window menu. We remove extra styles
at the first opportunity (WM_INITMENU message), as they
alter the way our window is rendered.

https://bugzilla.gnome.org/show_bug.cgi?id=763851
2016-03-29 15:09:39 +00:00
Руслан Ижбулатов
884adaac9e GDK W32: Erase hidden layered windows before showing them
If a layered window was hidden and is made visible, erase its
contents before showing it. GDK will schedule a redraw, but until
then we generally don't want to show old contents.

https://bugzilla.gnome.org/show_bug.cgi?id=763783
2016-03-29 14:36:09 +00:00
Aurimas Černius
ff93dfd3eb Updated Lithuanian translation 2016-03-28 17:47:45 +03:00
Matthias Clasen
8ff6d55c18 places sidebar: Plug a small memory leak
_gtk_trash_moniotr_get_icon is transfer full, so we have
to unref the icon.
2016-03-27 11:28:49 -04:00
Cosimo Cecchi
5d83553beb scale: fix marks node position for scales with value
We should only count the value node as the first/last one if its
position matches.
2016-03-27 11:28:40 -04:00
Cosimo Cecchi
23572c21be range: use gadget pointers for grab/mouse locations
Simplify code and remove the mouse location indirection.
2016-03-27 11:28:29 -04:00
Cosimo Cecchi
6e4312a49a scale: remove impossible case
We only create the gadget when the markup is not empty, so we don't
need to check again here.
2016-03-27 11:28:22 -04:00
Cosimo Cecchi
ab2178e308 scale: cache pango layouts for mark labels
Constantly creating pango layouts while drawing means that animations
will be slow. Instead, cache the pango layout in the mark structure.
2016-03-27 11:28:11 -04:00
Matthias Clasen
ba91d7d3a9 Revert "window: Remove suspicious branch"
This reverts commit 67ab00e01e.

Bisection showed that this commit caused emacs windows to shrink
to a small size when first shown.
2016-03-26 17:40:28 -04:00
Matthias Clasen
bdb146cce5 range: Simplify highlight allocation
Since we are really only interested in the center point of the
slider allocation, the pre-computed slider geometry is perfectly
fine, just use it always. This avoids the complication with
gadget visibility.
2016-03-26 13:52:44 -04:00
Matthias Clasen
19a8fbf336 range: Avoid miscalculating highlight allocation
The slider gadget may be turned invisible as side-effect of
gtk_range_calc_slider(). If that happens,
gtk_css_gadget_get_content_allocation() returns { 0, 0, 0, 0},
which leads us to calculate a negative allocation for the highlight
node. Avoid this, by just reusing our already calculated slider
allocation in this case (it is not technically the same as the
content, allocation, but the difference hardly matter here.

https://bugzilla.gnome.org/show_bug.cgi?id=764022
2016-03-26 10:53:09 -04:00
Matthias Clasen
230dccf77b Add a test for the system rgba visual
The main point of this test is to ensure that the pixel_details
getters work as expected.
2016-03-26 10:11:48 -04:00
Matthias Clasen
91e636d64b wayland: Fully initialize the visual
The pixel details (mask, shift and precision) are supposed to
be filled in for TrueColor visuals.
2016-03-26 10:11:40 -04:00
Matthias Clasen
7b6cf538e1 Make gdk_visual_get_*_pixel_details work again
These functions are supposed to return the numbers of consecutive
1 bits in each components mask as precision. However, due to a
copy-paste mistake when this code was moved around in
commit 70d689cddd, the precision
was always reported as zero. This affects only a few applications
that directly set window background on X11 windows, such as emacs.

https://bugzilla.gnome.org/show_bug.cgi?id=764210
2016-03-26 09:36:41 -04:00
Мирослав Николић
5ebe040e6c Updated Serbian translation 2016-03-26 09:29:02 +01:00
Matthias Clasen
aee69615bc HighContrastInverse: Fix suggested-action colors
Choose a suitable foreground color instead of hardcoding white.

https://bugzilla.gnome.org/show_bug.cgi?id=764170
2016-03-25 22:49:36 -04:00
Matthias Clasen
28fe00fc68 gtk3-demo: Show more button styles
Add examples for suggested-action and destructive-action
buttons in the style classes example.
2016-03-25 22:49:36 -04:00
Matthias Clasen
742a4658e8 gtk3-demo: Rename "CSS Theming" group
Call it just "Themeing" to avoid the repetition of CSS.
2016-03-25 22:49:36 -04:00
Matthias Clasen
6228da23b5 Add a css node test for scales 2016-03-25 22:49:36 -04:00
Olivier Fourdan
db241d36e2 popover: raise when showing
Some other widget might have mapped and raised another child window of
the toplevel in the meantime, causing the popover window to be covered.

Raise the popover window to avoid the issue.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=763627
2016-03-25 22:49:36 -04:00
Wolfgang Stöggl
5e5372ce74 Updated German translation 2016-03-25 18:20:27 +00:00
Wolfgang Stöggl
c08f4bd2a9 Updated German translation 2016-03-25 18:17:41 +00:00
Hannie Dumoleyn
ecd8841d25 Updated Dutch translation 3-20 2016-03-25 13:52:44 +01:00
Milo Casagrande
be624e71f4 Updated Italian translation 2016-03-25 10:58:30 +00:00
882 changed files with 90946 additions and 132333 deletions

View File

@@ -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
View File

@@ -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
View File

@@ -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.

View File

@@ -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 \

View File

@@ -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

View File

@@ -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))))

View File

@@ -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

View File

@@ -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
View 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))

View 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

View 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
View 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 = '&#x0D;&#x0A;\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'))

View File

@@ -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

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View File

@@ -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})

View File

@@ -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:

View File

@@ -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)

View File

@@ -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>

View File

@@ -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">

View File

@@ -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>

View File

@@ -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) &gt; ..\..\..\MSVC_$(Configuration)
:DONE_GDKCONFIG_H
@@ -24,23 +35,35 @@ echo $(Configuration) &gt; ..\..\..\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) &gt; ..\..\..\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 &amp; $(PythonPath)\python $(GDbusCodeGenCmd) &amp; cd $(SolutionDir)</GenerateGtkDbusBuiltSources>
<GenerateGtkDbusBuiltSourcesX64>cd ..\..\..\gtk &amp; $(PythonPathX64)\python $(GDbusCodeGenCmd) &amp; 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) &gt; ..\..\..\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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 \

View File

@@ -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 \

View File

@@ -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 \

View File

@@ -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"

View File

@@ -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>

View File

@@ -43,20 +43,4 @@
Name="GtkDefines"
Value="GTK_COMPILATION;G_LOG_DOMAIN=\&quot;Gtk\&quot;;GTK_HOST=\&quot;i686-pc-vs$(VSVer)\&quot;;GTK_PRINT_BACKENDS=\&quot;file\&quot;;GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED;$(GtkIncludedImmodulesDefines);GTK_LIBDIR=\&quot;$(GtkDummyPrefix)/lib\&quot;;GTK_DATADIR=\&quot;$(GtkDummyPrefix)/share\&quot;GTK_DATA_PREFIX=\&quot;$(GtkDummyPrefix)\&quot;;GTK_SYSCONFDIR=\&quot;$(GtkDummyPrefix)/etc\&quot;;MULTIPRESS_CONFDIR=\&quot;$(GtkDummyPrefix)/etc/gtk-$(ApiVersion)\&quot;;MULTIPRESS_LOCALEDIR=\&quot;$(GtkDummyPrefix)/share/locale\&quot;;GTK_VERSION=\&quot;$(GtkVersion)/etc\&quot;;GTK_BINARY_VERSION=\&quot;$(GtkBinaryVersion)/etc\&quot;;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>

View File

@@ -54,17 +54,13 @@ echo $(ConfigurationName) &gt; ..\..\..\MSVC_$(ConfigurationName)_Broadway&#x0D;
:DONE_GDKCONFIG_H&#x0D;&#x0A;
"
/>
<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 &amp; $(PythonPath)\python $(GDbusCodeGenCmd) &amp; cd $(SolutionDir)"
/>
<UserMacro
Name="GenerateGtkDbusBuiltSourcesX64"
Value="cd ..\..\..\gtk &amp; $(PythonPathX64)\python $(GDbusCodeGenCmd) &amp; cd $(SolutionDir)"
Value="
cd ..\..\..\gtk&#x0D;&#x0A;
$(PythonPath)\python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml&#x0D;&#x0A;
cd $(SolutionDir)&#x0D;&#x0A;
"
/>
<UserMacro
Name="CopyGtkWin32RC"

View File

@@ -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>

View File

@@ -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&#x0D;&#x0A;
mkdir $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
mkdir $(CopyDir)\lib&#x0D;&#x0A;
copy $(ConfigurationName)\$(PlatformName)\bin\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).dll $(CopyDir)\bin&#x0D;&#x0A;
copy $(ConfigurationName)\$(PlatformName)\bin\$(GtkDllPrefix)gdk-3$(GtkDllSuffix).pdb $(CopyDir)\bin&#x0D;&#x0A;
@@ -90,15 +90,11 @@ copy .\Debug\$(PlatformName)\bin\gtk-query-settings.pdb $(CopyDir)\bin&#x0D;&#x0
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.exe $(CopyDir)\bin&#x0D;&#x0A;
copy .\Debug\$(PlatformName)\bin\gtk-builder-tool.pdb $(CopyDir)\bin&#x0D;&#x0A;
:DONE_BIN&#x0D;&#x0A;
copy ..\gdk-3.0.pc $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
copy &quot;..\gtk+-3.0.pc&quot; $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
copy ..\gail-3.0.pc $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
"
/>
<UserMacro
Name="GtkDoInstall"
Value="
"
/>
<UserMacro
Name="GtkDoInstall"
Value="
echo off&#x0D;&#x0A;
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\win32&#x0D;&#x0A;
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\deprecated&#x0D;&#x0A;
@@ -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&#x0D;&#x0A;
copy ..\..\..\gtk\org.gtk.Settings.Debug.gschema.xml $(CopyDir)\share\glib-2.0\schemas&#x0D;&#x0A;
copy ..\..\..\demos\gtk-demo\org.gtk.Demo.gschema.xml $(CopyDir)\share\glib-2.0\schemas&#x0D;&#x0A;
"
/>
<UserMacro
Name="GtkPostInstall"
Value="
echo &quot;Compiling gsettings XML Files...&quot;&#x0D;&#x0A;
$(GlibEtcInstallRoot)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas&#x0D;&#x0A;
echo &quot;Generating icon cache...&quot;&#x0D;&#x0A;
$(CopyDir)\bin\gtk-update-icon-cache.exe --ignore-theme-index --force &quot;$(CopyDir)\share\icons\hicolor&quot;
"
/>
<UserMacro
Name="GtkDoInstallBroadwayHeaders"
Value="
"
/>
<UserMacro
Name="GtkDoInstallBroadwayHeaders"
Value="
copy ..\..\..\gdk\broadway\gdkbroadway.h $(CopyDir)\include\gtk-$(ApiVersion)\gdk&#x0D;&#x0A;
mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\broadway&#x0D;&#x0A;
#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>

View File

@@ -54,8 +54,4 @@
Name="PythonPath"
Value="c:\python27"
/>
<UserMacro
Name="PythonPathX64"
Value="$(PythonPath).x64"
/>
</VisualStudioPropertySheet>

View File

@@ -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 */

View File

@@ -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

View File

@@ -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 \

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

View File

@@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

View File

@@ -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))

View File

@@ -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;

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -1,7 +0,0 @@
attribute vec4 position;
uniform mat4 mvp;
void main() {
gl_Position = mvp * position;
}

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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);

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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>

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -1,3 +1,8 @@
.circular-button {
border-radius: 20px;
-gtk-outline-radius: 20px;
}
.small-button {
padding: 0;
outline-width: 0;

View File

@@ -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>

View File

@@ -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 \

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -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 \

View File

@@ -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;
}

View File

@@ -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>boxshadow</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? &amp;&amp; 〈length〉{2,4}? &amp;&amp; 〈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>

View File

@@ -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:

View File

@@ -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>

View File

@@ -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

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -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>

View File

@@ -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 &lt;Primary&gt; instead of &lt;Control&gt; 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(&lt;color&gt;).
</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>

View File

@@ -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>.

View File

@@ -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)

View File

@@ -8,6 +8,11 @@ struct _ExampleApp
GtkApplication parent;
};
struct _ExampleAppClass
{
GtkApplicationClass parent_class;
};
G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
static void

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View 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

View File

@@ -9,6 +9,11 @@ struct _ExampleApp
GtkApplication parent;
};
struct _ExampleAppClass
{
GtkApplicationClass parent_class;
};
G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
static void

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