Compare commits

...

1057 Commits

Author SHA1 Message Date
Matthias Clasen
84eff45a17 3.20.7 2016-08-04 10:34:08 -04:00
Emmanuele Bassi
9ff9c4932f Update the docs for gtk_window_get_position()
Drop mentions of GnomeClient, and add mentions of different windowing
systems instead of just assuming that we're using X11.
2016-08-04 10:34:08 -04:00
Sébastien Wilmet
b137afe6ba docs: GtkWidget::style-updated vs GtkStyleContext::changed
Explain the difference between those two signals.

Add "Since: 3.0" for GtkStyleContext::changed, since that signal has
been added in commit 9f84e101bf, present
since 2.91.6.

https://bugzilla.gnome.org/show_bug.cgi?id=769047
2016-08-04 10:34:08 -04:00
Sébastien Wilmet
5505bb2f2f docs: add missing info for gtk_widget_get_style_context()
It is important to know whether the returned object can or cannot
change, for a certain widget. For example to connect to the
GtkStyleContext::changed signal.

https://bugzilla.gnome.org/show_bug.cgi?id=769047
2016-08-04 10:34:08 -04:00
Cosimo Cecchi
e43801d295 reftests: override GSETTINGS_SCHEMA_DIR when running tests
The reftest depends on a schema we install ourselves. Instruct GIO to
look in the build directory to avoid a cyclic dep.

https://bugzilla.gnome.org/show_bug.cgi?id=768930
2016-08-04 10:34:08 -04:00
Matthias Clasen
d92d9171e2 Remove a few mentions of GtkVBox in the docs
We only have GtkBox nowadays.
2016-08-04 10:34:07 -04:00
Emmanuele Bassi
6afe00fb46 docs: Attempt a better explanation for gtk_widget_destroy()
Clarify the nature of this function, and the expectations after it's
been called.
2016-08-04 10:34:07 -04:00
Razvan Chitu
1957e71374 placesview: fix open action for locations without a mount or volume
In the "Other Locations" view, locations can be opened from the context menu
based on their mount or volume. However, some locations, like "Computer", do not
have either of those so they cannot be opened from the context menu. In order to
fix this, the file associated with the location can be used as well.

https://bugzilla.gnome.org/show_bug.cgi?id=768657
2016-08-04 10:34:07 -04:00
Emmanuele Bassi
ae5fe1aa21 docs: Improve gdk_window_create_similar_image_surface()
The sizes passed are in device pixels and do not take into account the
scaling factor of the window itself. We cannot change the semantics of
the function, so let's at least add a warning for this trap door.
2016-08-04 10:34:07 -04:00
Matthias Clasen
6304913795 css parser: Improve an error message
Say what property we are dealing with when we complain about the
value.
2016-08-04 10:34:07 -04:00
Matthias Clasen
3fde17b0b6 Fix example Makefiles
Put OBJS before LIBS on the commandline to make things
work better.

https://bugzilla.gnome.org/show_bug.cgi?id=768142
2016-08-04 10:34:07 -04:00
Matthias Clasen
c6f9c45033 print dialog: Apply initial capabilities
I was struggling to understand why calling
gtk_print_unix_dialog_set_manual_capabilities (...,0)
was not having the expected effect of hiding the preview
button. The initial capabilities were not applied at all.
2016-08-04 10:34:06 -04:00
Carlos Garnacho
974b755b4d wayland: Separate selection buffers and other per-selection atom data
This has most notably impact in selection buffers, because those were
shared across all selection atoms. This turned out wrong on 2 situations:
- Because the selection atom was set at SelectionBuffer creation time, the
  GDK_SELECTION_NOTIFY events generated will have unexpected info if the
  buffer is attempted to be reused for another selection.
- Anytime different selections imply different stored content for the same
  target.

This is better separated into per-selection buffers, so it's not possible
to get collisions if a same target is used across different selections.

https://bugzilla.gnome.org/show_bug.cgi?id=768177
2016-08-04 10:34:06 -04:00
Carlos Garnacho
694c1661b8 wayland: Implement gdk_utf8_to_string_target
The sanitize_utf8() function has been copied from X11 so both
backends behave the same. This allows interaction with older clients
(mainly through Xwayland, and the STRING selection target) that
request non-utf8 text.

https://bugzilla.gnome.org/show_bug.cgi?id=768082
2016-08-04 10:34:06 -04:00
Ray Strode
02a5fe87da headerbar: don't allocate both label and custom title
It's only possible to have a label or a custom title, not both.
The size allocate code confusingly treats them as independent.

That is confusing, because, as the code is written, it makes it
look like the space for the custom title isn't getting accounted
for.

This commit else-ifies some parts of the size allocate code for
clarity.
2016-08-04 10:34:06 -04:00
Carlos Garnacho
ba30d1e458 GtkPopover: Honor widget margins when calculating tail position
If there are widget margins set, the whole popover will be displaced.
However the calculation of the tail position doesn't have this into
account, ending up with the tail being detached from the popover if
the margin grew too big.

We should not render the arrows invariably next to the GdkWindow edge,
but optionally displaced inside it depending on the widget margins.
Fixes the gtk3-demo "Popovers" demo case, whose GtkEntry popovers set
widget margins for some reason.

https://bugzilla.gnome.org/show_bug.cgi?id=767851
2016-08-04 10:34:06 -04:00
Christian Hergert
74a8099261 listbox: short-circuit if no sort function is set
do_sort will crash if sort_func is not defined. Instead of adding a check
there in the hot path, just check for sort_func before invalidating the
sort of the underlying GSequence.
2016-08-04 10:34:06 -04:00
Olivier Fourdan
c906dbc9f1 wayland: do not set PRIMARY selection if focus is lost
If keyboard focus is (already) lost, do not advertise PRIMARY selection.

https://bugzilla.gnome.org/show_bug.cgi?id=767848
2016-08-04 10:34:05 -04:00
Carlos Garnacho
86ece29797 treeview: Ensure the treeview has the implicit grab before grabbing focus
The cellrenderer signals might be taking the grab somewhere else, at which
point it's dubious we should attempt to take the keyboard focus into the
treeview.

This concretely breaks popovers triggered from cellrenderer signals on
button press, because the treeview will attempt to grab focus
inconditionally then.

https://bugzilla.gnome.org/show_bug.cgi?id=767468
2016-08-04 10:34:05 -04:00
Matthew Leeds
90d3c9b31a GtkActionHelper: Change a message to a warning
It's almost certainly a programmer error if an action isn't
activatable because its target and parameter type don't match.
This commit changes the existing g_message to a g_warning.

https://bugzilla.gnome.org/show_bug.cgi?id=767705
2016-08-04 10:34:05 -04:00
Matthias Clasen
8fd61c4f5a shortcuts window: Fix handling of significant xml chars
We are using markup in the labels, so we need to escape things
like < and >.

https://bugzilla.gnome.org/show_bug.cgi?id=767795
2016-08-04 10:34:05 -04:00
Ray Strode
0969dc59ef wayland: fall back to shm_open if memfd unavailable
Debian stable currently ships with a 3.16 kernel, so
it doesn't have memfd available.

This commit adds shm_open fall back code for that case
(for now).

https://bugzilla.gnome.org/show_bug.cgi?id=766341
2016-08-04 10:34:05 -04:00
Ray Strode
30e5ddfb63 wayland: fix error handling for memfd_create
We currently use syscall() directly to invoke memfd_create,
since the function isn't available in libc headers yet.

The code, though, mishandles how errors are passed from syscall().
It assumes syscall returns the error code directly (but negative),
when in fact, syscall() uses errno.

Also, the code fails to retry on EINTR.

This commit moves the handling of memfd create to a helper function,
and changes the code to use errno and handle EINTR.

https://bugzilla.gnome.org/show_bug.cgi?id=766341
2016-08-04 10:34:05 -04:00
Matthias Clasen
5f80715ffb Update GtkLabel::angle docs
We can have wrapped or ellipsized labels at an angle nowadays.
Still no selections though.
2016-08-04 10:34:04 -04:00
Matthias Clasen
8d34a176c7 scale, spinbutton: Avoid -0.0
This is a very longstanding bug; time to finally put it to rest.

https://bugzilla.gnome.org/show_bug.cgi?id=118959
2016-08-04 10:34:04 -04:00
Carlos Garnacho
310cd19dc8 searchenginetracker: Fix prefix searches
With the FTS5 query syntax, when using quotes to delimit the search phrase
the '*' token must happen after the quote, or will otherwise be considered
a character to match, go through the tokenizer, and end up ignored in
result.
2016-08-04 10:34:04 -04:00
Matthias Clasen
3b6eb70539 treeview: fix an off-by-one error
gtk_tree_view_get_path_at_pos() mistakenly identifies the first
pixel of all but the first column in a tree view as belonging to
the previous column.

https://bugzilla.gnome.org/show_bug.cgi?id=708148
2016-08-04 10:34:04 -04:00
Matthias Clasen
b89ba25631 Make gtk_tooltip_trigger_tooltip_query work again
This was broken ever since we started looking at the
source device of the event.

https://bugzilla.gnome.org/show_bug.cgi?id=674215
2016-08-04 10:34:04 -04:00
Matthias Clasen
6ca325f6ef inspector: Ellipsize accessible description.
This string can be long, and we don't want to break the ui
2016-08-04 09:45:42 -04:00
Matthias Clasen
1790e7af77 viewport: Free gadgets in finalize
This is the right place for this.
2016-08-04 09:45:35 -04:00
Matthias Clasen
9de63a147c scrolled window: Free gestures and gadgets in finalize
This is the right place for this.
2016-08-04 09:45:28 -04:00
Matthias Clasen
88cd815efc range: Free gadgets in finalize
This is the right place for this.
2016-08-04 09:45:20 -04:00
Matthias Clasen
1a6129d815 notebook: Free gadgets in finalize
This is the right place for this.
2016-08-04 09:45:13 -04:00
Matthias Clasen
76f7e57fb6 menu: Free gadgets in finalize
This is the right place to do this.
2016-08-04 09:45:07 -04:00
Matthias Clasen
4763524052 button: Free gadgets and gestures in finalize
This is the right place to free them.
2016-08-04 09:45:01 -04:00
Timm Bäder
c63dad2c53 entry: Fix undershoot position wrt entry icons
Draw them inside of the icons, which is where the text scrolls.
2016-08-04 09:43:37 -04:00
Matthias Clasen
bf2e267526 Teach gtk-builder-tool to leave GtkDialog::border-width alone
This is one of the properties that need to be explicitly set.
2016-08-04 09:40:08 -04:00
Руслан Ижбулатов
9397158fbc GtkFileChooser: don't override already opened folder
When filechooer is re-used (instead of being created and destroyed
every time it's needed), it might happen that the directory the
application wishes to initially show is the same directory that
was shown last time the filechooser was used. In that case, make sure
filechooser knows that it does not need to do its default "select $pwd
or $home" routine.

https://bugzilla.gnome.org/show_bug.cgi?id=766122
2016-08-04 09:39:57 -04:00
Matthias Clasen
f7e57b5eeb Update migration guide a bit
Resize grips are no more.
2016-08-04 09:39:43 -04:00
Matthias Clasen
98c74b6e5c Fix a duplicate word in the docs 2016-08-04 09:39:32 -04:00
Benjamin Otte
c51e97c15e window: Unfreeze window on unmap
Make sure to keep parity with the number of times we froze the window
when we unmap it.
Otherwise it will permanently stay frozen after being remapped.

https://bugzilla.gnome.org/show_bug.cgi?id=766643
https://bugzilla.mozilla.org/show_bug.cgi?id=1225044
2016-08-04 09:39:22 -04:00
Bastian Ilsø
86b8c796cf gtktextview: document how to get line space
adds a paragraph to gtk_text_view_get_pixels_below_lines(),
describing how it can be used together with
gtk_text_view_get_pixels_above_lines() to get the total
amount of line spacing between two paragraphs.

https://bugzilla.gnome.org/show_bug.cgi?id=747206
2016-08-04 09:39:15 -04:00
Matthias Clasen
2669c207bd Add a deprecation note
Mark GtkWidget:style property as deprecated in the docs.
2016-08-04 09:38:01 -04:00
Emmanuele Bassi
6b2a984892 gdk: Provide safe fallback for creating GL contexts
If the backend does not override GdkWindowClass.create_gl_context()
then we should provide a fallback that gives an error, instead of
crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=766782
2016-08-04 09:37:43 -04:00
Emmanuele Bassi
f5e192583a gl: Add a realize() fallback
Calling gdk_gl_context_realize() should always result in a valid result,
so we need to provide a default implementation, to avoid a call to a
NULL function pointer.
2016-08-04 09:37:34 -04:00
Ondrej Holy
a01ee5a7b0 Improve external drives detection
Use g_drive_is_removable for external drives detection. Current heuristic
fails in some cases (e.g. when removable drive is attached before login),
see Bug 765457.

Bump GLib version accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=765924
2016-08-04 09:36:49 -04:00
Matthias Clasen
de595bd1c3 scale: Avoid a crash
gtk_scale_get_layout was not careful enough, leading to a crash
when opening the inspector on a scale.
2016-08-01 09:28:33 -04:00
Carlos Garnacho
5863a41f37 GtkWindow: Ensure the toplevel is realized before realizing popovers
Otherwise those get a NULL parent window, which is toplevel-y enough
to disembody the popover.

https://bugzilla.gnome.org/show_bug.cgi?id=764060
2016-07-30 11:34:04 +02:00
Lapo Calamandrei
9c4ca4ab15 Adwaita: dim calendar uninteresting days some more
see https://bugzilla.gnome.org/show_bug.cgi?id=769003
2016-07-22 14:15:45 +02:00
Lapo Calamandrei
553b332faa Adwaita: clean calendar styling
remove some non working props and generally simplify and clean up
the code, in the process address:

https://bugzilla.gnome.org/show_bug.cgi?id=769003
2016-07-22 14:15:11 +02:00
Owen W. Taylor
26ca5dbc6b Change the priority of the window-close idle to G_PRIORITY_DEFAULT
If we have an application that never goes idle (or takes a long time to
go idle), the close buttons in CSD decoration don't work properly.
While it's not clear why the usage of an idle was added in the first
place, keep on using it to avoid unexpected reentrancy problems, but
change the priority to G_PRIORITY_DEFAULT.

https://bugzilla.gnome.org/show_bug.cgi?id=768485
2016-07-07 07:54:16 -04:00
Olivier Fourdan
ff99d89f8f wayland: return child only in device_query_state()
On X11, device_query_state() uses XIQueryPointer() which will return a
child window only if the pointer is within an actual child of the given
window.

Wayland backend would return the pointer->focus window independently of
the given window, but that breaks the logic in get_device_state() and
later in gdk_window_get_device_position_double() because the window is
searched based on coordinates from another window without sibling
relationship, breaking gtkmenu sub-menus further down the line.

Fix the Wayland backend to mimic X11's XIQueryPointer() to return a
child only if really a child of the given window.

That's the most sensible thing to do to fix the issue, but the API here
seems to be modeled after the X11 implementation and the description of
gdk_window_get_device_position_double() is not entirely accurate.

https://bugzilla.gnome.org/show_bug.cgi?id=768016

(cherry picked from commit 298221bfba)
2016-07-05 15:55:09 +02:00
Andika Triwidada
23673851b7 Updated Indonesian translation 2016-06-26 22:21:22 +00:00
Lapo Calamandrei
8b7091d43c Adwaita: color the selection of entries with error...
...or warning style class applied.
This particular style bit wasn't converted to the saner 3.20 way
so `entry:selected` used in place of `entry selection`.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=768025
2016-06-25 18:36:01 +02:00
Lapo Calamandrei
fbec4164ca Adwaita: restrict infobar styling to, well, infobars
we used to style infobars by using the .info, .question, .warning
and .error selectors directly, which used to be ok when we had just
styleclasses all over the place, now it needs to be more specific
or it interferes with everything with those styleclasses applied
like entries.
2016-06-25 18:35:40 +02:00
Andika Triwidada
3abb9ffa91 Updated Indonesian translation 2016-06-25 03:18:54 +00:00
Misty De Meo
d7c1a34bfd configure: fix detecting CUPS 2.x
https://bugzilla.gnome.org/show_bug.cgi?id=767766
2016-06-17 14:47:12 +02:00
Matthias Clasen
9a81e714d6 range: Add a queue_resize call
This is a workaround for a regression in updating scrollbars in
some applications; notably eog. We haven't fully tracked down yet
why a queue_allocation is not sufficient here, it should.
2016-06-06 12:31:41 -04:00
Timm Bäder
3659eb65d0 Scale: Set the correct value alignment
We're measuring both the width of the minimal and the maximal value for
the value gadget, but only give the value the minimal width for its
current value, resultnig in an always left-aligned value.

Fix this by assigning the width of the value gadget to the value layout
and letting pango align the text inside the layout.

https://bugzilla.gnome.org/show_bug.cgi?id=766120
2016-06-01 14:27:54 +02:00
Lapo Calamandrei
b1a59daa71 Adwaita: ensure menuitem labels are not overridden
see https://bugzilla.gnome.org/show_bug.cgi?id=767058
2016-05-31 21:01:49 +02:00
Lapo Calamandrei
72ad8b58c5 Adwaita: explicitelly set label caret-color to currentColor
since it doesn't always inherit 'color' color as it should.
2016-05-30 14:23:11 +02:00
Lapo Calamandrei
5c763e97c4 Adwaita: make selection on infobars visible
see https://bugzilla.gnome.org/show_bug.cgi?id=745622
2016-05-30 14:02:36 +02:00
Lapo Calamandrei
6e56aaffe3 Adwaita: remove textview border
see https://bugzilla.gnome.org/show_bug.cgi?id=764203
2016-05-27 11:34:47 +02:00
Kjartan Maraas
ab598631af Updated Norwegian bokmål translation. 2016-05-23 18:56:02 +02:00
Matthias Clasen
bbf775301a 3.20.6 2016-05-23 07:59:21 -04:00
Florian Müllner
458c0b9525 stack: Only map children when necessary
gtk_widget_set_parent() will map the widget if the parent is mapped
and the widget is both visible and child-visible. As we currently
only set the child visibility after adding the child, we immediately
map all children that are added to a mapped stack, even when they
are not actually shown. Avoid this by setting the child visibility
before adding the child, so widgets are only mapped when shown.

https://bugzilla.gnome.org/show_bug.cgi?id=766737
2016-05-23 07:58:42 -04:00
Matthias Clasen
a2d723c133 treeview: Fix a rubberbanding-related crash
When starting a rubberband selection from an empty area, we could run
into crashes if the selection moves over the rows and then back out
to unpopulated area. Handle this case without crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=766336
2016-05-23 07:58:42 -04:00
Carlos Garnacho
3270bdb981 popover: set priv->window before setting doing add_popover() on it
If the popover's relative-to widget is unparented/reparented, we end
up unparenting/reparenting the popover as well. In that case, at the
moment of reparenting, the widget might have been visible (and is
thus mapped again), but priv->window hasn't been set yet.

We must first set priv->window, and then call gtk_window_add_popover(),
that way gtk_popover_map() has its prerequisites straight.

https://bugzilla.gnome.org/show_bug.cgi?id=766323
2016-05-21 20:41:54 +02:00
Khaled Hosny
924c6a679b Update Arabic translation 2016-05-21 15:50:26 +02:00
Lapo Calamandrei
f62505a77f Adwaita: add vertical margins to switches on a headerbar
See https://bugzilla.gnome.org/show_bug.cgi?id=766642
2016-05-20 15:42:22 +02:00
Lapo Calamandrei
375a1282f4 Adwaita: shave 1px from the switch
make the switch height and width 1px smaller.
2016-05-20 15:41:25 +02:00
Matthias Clasen
ca8d51e6d0 Revert "scrolledwindow: Remove child before destroying self"
This reverts commit dcb4b48b29.

This was causing crashes in the filechooser in some applications.

https://bugzilla.gnome.org/show_bug.cgi?id=766694
2016-05-20 09:23:51 -04:00
Ignacio Casal Quinteiro
cdb3271346 gtktextview: fix < public > comment
This was causing problems with the gtk# scanner
2016-05-20 09:09:10 +02:00
Matthias Clasen
1e419a94b5 3.20.5 2016-05-19 12:43:00 -04:00
Matthias Clasen
ff14bb504b Updates 2016-05-19 12:37:54 -04:00
Matthias Clasen
00d1f73204 gtk-demo: Fix revealer demo
This only used by luck before. We are changing a property from the
::notify handler for that property. Now that GtkRevealer is notifying
the property when it stops animations on unmap, we end up in a life
lock situation where we never make it out of the notify queue.

Fix this by not restarting the animation if the widget is unmapped.
2016-05-19 12:37:54 -04:00
Matthias Clasen
9a60a3659f scale css node test: Adapt to changes
The style classes are reflected in the output here.
2016-05-19 12:27:08 -04:00
Matthias Clasen
fcbb6b7fe3 wayland: Survive lack of settings
This can be made to happen eg by setting XDG_DATA_DIRS and
XDG_DATA_HOME to /. Not a useful value, but not a good reason
to crash either.
2016-05-19 12:10:07 -04:00
Matthew Waters
246385a8e7 gdk/wayland: use the multi-thread safe wayland API
This is required for proper integration with any other library/application that
may perform wayland API calls and poll() the wayland fd from multiple threads.
Using wl_display_dispatch{_queue}() is thread-safe if not mixed with custom
poll() usage, which GSource/GMainContext does.

Essentially, the problem is that multiple threads polling and reading
the same fd is extremely racy.  Use the wayland provided API for allowing
concurrent access to the wayland display fd.

See the wayland man pages for wl_display_prepare_read(),
wl_display_cancel_read() and wl_display_read_events() for more details.

https://bugzilla.gnome.org/show_bug.cgi?id=763852
2016-05-19 12:10:07 -04:00
Debarshi Ray
1e2bde6971 scrolledwindow: Fix typo in get_preferred_height calculation
When we are beginning to calculate the height, if the vscrollbar_policy
is not GTK_POLICY_NEVER, and there is no min-content-height, then we
need some small non-zero value to get started. The idea is to always
ask for at least enough to fit the horizontal scrollbar.

Simply put, this should be the mirror image of the corresponding width
calculation code.

Those who got used to the buggy behaviour might notice that their
GtkScrolledWindows are not as tall as they used to be.

Fall out from 55196a705f

https://bugzilla.gnome.org/show_bug.cgi?id=766530
2016-05-19 12:10:07 -04:00
Matthias Clasen
7d2f54f0f3 icon theme: Add a warning
Warn about the situation when we've found a resource or file path,
but gdk-pixbuf fails to give us a pixbuf. This generally means that
either pixbuf loaders are not found or the shared-mime database
is missing.
2016-05-19 12:10:07 -04:00
Timm Bäder
706b3ffc82 stack: Don't underallocate the last_child 2016-05-19 12:10:07 -04:00
Timm Bäder
f5b76a1f56 stack: Remove some code duplication 2016-05-19 12:10:07 -04:00
Matthias Clasen
8601c0eccd places sidebar: Avoid markup confusion in tooltips
At one point, the sidebar was using gtk_treeview_set_tooltip_column,
which expects tooltips to be markup. With the listbox-based sidebar,
we don't do that anymore. So don't escape the tooltip text.

https://bugzilla.gnome.org/show_bug.cgi?id=766175
2016-05-19 12:10:07 -04:00
Matthias Clasen
8e2cf127e6 x11: Trap possible X error
XIGetClientPointer can generate X errors (e.g. when the X server
does not support XI2. Trap them and carry on.

https://bugzilla.gnome.org/show_bug.cgi?id=766233
2016-05-19 12:10:07 -04:00
Timm Bäder
077e1999b3 scale: Remove double nullable annotation
Being both (allow-none) and (nullable) at the same time is a bit much.
Was from 591e7f5ef8.
2016-05-19 12:10:07 -04:00
Timm Bäder
5fb18692e0 widget: Add Since annotation to gtk_widget_queue_allocate 2016-05-19 12:10:07 -04:00
Benjamin Otte
dcb4b48b29 scrolledwindow: Remove child before destroying self
Children tend to call back into the scrolled window while being removed
and that doesn't work too well if the scrolled window is destroyed
already as Christian Hergert found out.
2016-05-19 12:10:07 -04:00
Benjamin Otte
e7e55d13a4 cssimage: Make it possible to shrink builtin check/optionmarks
... below 7px of size.
2016-05-19 12:10:07 -04:00
Matthias Clasen
adcbd8add9 gtk3-demo: Add a close button to the markup window 2016-05-19 12:10:07 -04:00
Matthias Clasen
13a14d071a gtk-demo: Don't duplicate text in markup example
I forgot to clear the buffer before inserting the new markup. Oops.
2016-05-19 12:10:07 -04:00
Matthieu Gautier
2cb24c7975 revealer: emit notify::child-revealed when animation stops
Depending of float rounding during target calculation, the size of the
GtkRevealer can be set to zero will the animation is not finished.
If the GtkRevealer is in a GtkPaned, it will be hidden and so the animation
will be stopped before it is finished.

In this case, force the emission of the child-revealed signal to let
client code know the animation is finished.

https://bugzilla.gnome.org/show_bug.cgi?id=765973
2016-05-19 12:10:07 -04:00
Timm Bäder
0377a8c408 infobar: Fix typo
Style class names are prefixed with a '.'
2016-05-19 12:10:07 -04:00
Lapo Calamandrei
101c06da53 Adwaita: fix scale theming
rely on toplevel styleclass for scale with marks.

See https://bugzilla.gnome.org/show_bug.cgi?id=766440
2016-05-19 17:27:00 +02:00
Lapo Calamandrei
fb3e626400 color scale: Really sync style classes with GtkScale
sync the alpha scale styleclass too.
2016-05-19 17:24:51 +02:00
Matthias Clasen
6170149393 color scale: Sync style classes with GtkScale
We should use the same style classes here, to avoid theme
confusion.
2016-05-19 11:06:51 -04:00
Ignacio Casal Quinteiro
ee841a282b gtkselectionprivate: minor style fix
This seems to make some issue with the gtk# scanner.
2016-05-19 16:57:55 +02:00
Matthias Clasen
1fde631031 scale: Use more succinct names for style classes
Use .marks-before/after to indicate the presence of marks.
As Lapo points out, compatibility with the previous names
is not really that important, since everything else changed
around it.

https://bugzilla.gnome.org/show_bug.cgi?id=766440
2016-05-19 09:50:23 -04:00
Matthias Clasen
e441c17a0a scale: Bring back marks-related style classes
It turns out that it is too hard (and in some cases, impossible)
to get this information from node positioning, so bring back the
.scale-has-marks-above/below style classes on the main node.

This should allow us to fix the 'pointy sliders'.

https://bugzilla.gnome.org/show_bug.cgi?id=766440
2016-05-18 13:02:11 -04:00
Carlos Garnacho
aec4dbfa94 x11/dnd: Ignore grab broken events from other devices than our DnD device.
The GdkDragContext should only listen to GDK_GRAB_BROKEN events sent to
its own pointer device. It turns out that the passive key grabs mistake
GDK into sending a GdkEventGrabBroken on the master keyboard, which the
DnD machinery mistakes as a signal to cancel the operation.

https://bugzilla.gnome.org/show_bug.cgi?id=766442
2016-05-18 13:09:55 +02:00
Baurzhan Muftakhidinov
d1585a7a60 Updated Kazakh translation 2016-05-17 10:18:52 +00:00
Matthias Clasen
b893b62d7a Docs: Clarify life cycle issue
gtk_gesture_get_last_event() wasn't very clear about how long
it is safe to use the returned pointer.

(cherry picked from commit c891ceb31d)
2016-05-17 10:30:56 +02:00
Matthias Clasen
e006f3ca98 DND: Avoid a use-after-free
Cancelling the gesture causes the last_event pointer to become
invalid. Make a copy of the event so we can keep using it
regardless of the gesture state.

(cherry picked from commit 358eec2972)
2016-05-17 10:30:44 +02:00
Tiago Santos
4424bf8135 Updated Portuguese translation 2016-05-15 21:42:16 +00:00
Tiago Santos
818266a805 Updated Portuguese translation 2016-05-15 21:25:26 +00:00
Chun-wei Fan
1994f37481 Visual Studio builds: Refine "installation" process
Split out the part where we generate/update the caches for the GSchemas
and the icons, so that it is easier to ensure that things continue to
function correctly when we have GlibEtcInstallRoot != CopyDir.
2016-05-10 13:33:40 +08:00
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
Matthias Clasen
447325b1e4 3.20.1 2016-03-24 22:43:27 -04:00
Matthias Clasen
24f54d50c4 Update css node test for GtkSwitch changes 2016-03-24 22:43:27 -04:00
Matthias Clasen
1716e0b038 Revert "add a css style test for font: smaller"
This reverts commit a4ed154b03.

The misparsing that is tested here will not be fixed in 3.20,
so keep this test out of the stable branch.
2016-03-24 22:43:27 -04:00
Mario Blättermann
b3ad4af969 Updated German translation 2016-03-25 00:41:41 +00:00
Benjamin Otte
cd78fa15ed menu: Clip children to view window
Don't overdraw the arrow allocations.

https://bugzilla.gnome.org/show_bug.cgi?id=764118
2016-03-24 20:25:49 +01:00
Inaki Larranaga Murgoitio
31a032e042 Updated Basque language 2016-03-24 20:17:19 +01:00
Inaki Larranaga Murgoitio
b08ba9def0 Updated Basque language 2016-03-24 20:15:34 +01:00
Inaki Larranaga Murgoitio
5875101a34 Updated Basque language 2016-03-24 20:14:02 +01:00
Inaki Larranaga Murgoitio
1f16eb4344 Updated Basque language 2016-03-24 19:59:24 +01:00
Jakub Steiner
ac62bc0df9 High Contrast Inverse: switches
- make sure both non active and active states are contrasty

https://bugzilla.gnome.org/show_bug.cgi?id=763802
2016-03-24 16:43:20 +01:00
Jakub Steiner
7ac7b523d8 High Contrast Inverse: set contrasty selected items
- selected bg was set lighter without appropriate fg color

https://bugzilla.gnome.org/show_bug.cgi?id=763804
2016-03-24 16:35:19 +01:00
Jakub Steiner
adb2b5c758 High Contrast Inverse: scale trough fix
- make the trough more visible for HCI

https://bugzilla.gnome.org/show_bug.cgi?id=763805
2016-03-24 16:32:01 +01:00
Piotr Drąg
7e72f42483 Updated POTFILES.skip 2016-03-24 15:35:11 +01:00
Matthias Clasen
a4ed154b03 add a css style test for font: smaller 2016-03-24 08:25:11 -04:00
Lapo Calamandrei
16dc164292 Adwaita: avoid sizing transition on the scale...
... since it ends up jumpy.
2016-03-24 13:15:23 +01:00
Lapo Calamandrei
f5b6ab4557 Adwaita: placesview connect to server label padding
adds some padding to the "connect to server" label
2016-03-24 11:33:33 +01:00
Lapo Calamandrei
aa821429b1 Adwaita: fix menu scroll arrows positioning
adresses the style part of
https://bugzilla.gnome.org/show_bug.cgi?id=764118
2016-03-24 11:25:52 +01:00
Dušan Kazik
dc2e5fdf9c Updated Slovak translation 2016-03-24 06:51:38 +00:00
Benjamin Otte
41195f6300 switch: An active switch is :checked
Fix an oversight that should have happened in the gadget refactoring:
An active switch should be :checked, just like togglebuttons,
checkbuttons, etc.
2016-03-23 18:14:57 +01:00
Christoph Reiter
3f077ec36f quartz: fix pixelated image surfaces in retina/hidpi mode
gtk+ currently depends on the scaling factor and the cairo device scale
of both the backend surfaces and image surfaces to be equal.

Until now we didn't apply a cairo device scale at all and depended on the
automatic scaling of CGContexts. This works when drawing with cairo but
fails in case of image surfaces, which get requested at a too small size.

To make the quartz backend behave more like the X11 one, set the cairo device
scale on the surface in gdk_quartz_ref_cairo_surface(). As this conflicts
with the default scaling done by CGContext (we would get double scaling)
undo the CGContext scaling using CGContextScaleCTM().

This patch is based on the following patches by Brion Vibber:
    https://bugzilla.gnome.org/show_bug.cgi?id=740199#c4
    https://bugs.freedesktop.org/show_bug.cgi?id=69796#c4

https://bugzilla.gnome.org/show_bug.cgi?id=763779
2016-03-23 16:27:10 +01:00
Stas Solovey
3a5848820c Updated Russian translation 2016-03-23 15:23:08 +00:00
Fran Dieguez
1355f00825 Updated Galician translation 2016-03-23 11:20:59 +00:00
Matej Urbančič
0ab7be8d57 Updated Slovenian translation 2016-03-22 22:28:03 +01:00
Stas Solovey
aac8b0120f Updated Russian translation 2016-03-22 20:19:44 +00:00
Matthias Clasen
d6ca66b712 Run a11y tests with csd for make check
I've made this change for installed tests a while ago. It doesn't
make sense for distcheck to do it differently.
2016-03-22 14:55:55 -04:00
Matthias Clasen
65927caf84 inspector: Look for themes in system data dirs
This matches what GTK+ does now.
2016-03-22 08:22:48 -04:00
Matthias Clasen
052e82db04 Fix an accidentally deleted line
Not sure when this went missing, just fix the formatting.
2016-03-22 08:22:48 -04:00
Daniel Mustieles
f46aad3a32 Updated Spanish translation 2016-03-22 11:28:57 +00:00
Dušan Kazik
4173360bb3 Updated Slovak translation 2016-03-22 06:35:00 +00:00
Zahari Yurukov
3e375a6c81 Added Bulgarian translation 2016-03-22 07:19:04 +02:00
Matthias Clasen
7cb36aba40 Load theme settings from the right location
When loading a per-theme settings.ini file, look for it in
the same directory where we found the gtk.css file for the
theme. Previously, we were always looking in
$prefix/share/themes/THEME/gtk-3.0/, even if the css was
loaded from somewhere else.

https://bugzilla.gnome.org/show_bug.cgi?id=641354
2016-03-21 22:19:19 -04:00
Matthias Clasen
475d916eb9 Also look in system data dirs for themes
With this change, we now look in
$XDG_DATA_HOME/themes/THEME/gtk-3.x
$HOME/.themes/THEME/gtk-3.x
$XDG_DATA_DIRS/themes/THEME/gtk-3.x
GTK_DATA_PREFIX/themes/THEME/gtk-3.x

https://bugzilla.gnome.org/show_bug.cgi?id=641354
2016-03-21 22:19:19 -04:00
Christian Hergert
c48bc48dda wayland: avoid dropping surfaces when possible
If the configure-event gives us the same size as we had before,
which is common for animation resizes, then try to keep the
existing buffer around. This saves us a memfd_create() syscall
on every frame.

https://bugzilla.gnome.org/show_bug.cgi?id=763350
2016-03-21 22:03:20 -04:00
Ask Hjorth Larsen
7c2f81bcd9 Updated Danish translation 2016-03-21 22:20:26 +01:00
Lapo Calamandrei
ee94f9ff89 Adwaita: simplify treeview:drop(active) code 2016-03-21 19:42:54 +01:00
Matthias Clasen
73fe852be0 gtk-demo: Improve markup demo
Add squiggly underlines and background, and make the markup editable.

https://bugzilla.gnome.org/show_bug.cgi?id=763741
2016-03-21 13:32:40 -04:00
Benjamin Otte
45dfdbce3f textview: Track differences between ink and logical rects
This way, we can ensure that we queue redraws on the full ink rect. This
is particularly visible for squiggly underlines in spell checking.

https://bugzilla.gnome.org/show_bug.cgi?id=763741
2016-03-21 13:26:57 -04:00
Tom Tryfonidis
031978cb6b Updated Greek translation 2016-03-21 17:21:09 +00:00
Anders Jonsson
ce822c5bd4 Updated Swedish translation 2016-03-21 16:25:41 +00:00
Carlos Garnacho
219eedd7c8 wayland: Rename internal functions with misleading naming
Now that GdkWaylandDeviceData is gone, the functions prefixed
"gdk_wayland_device_" and taking a GdkWaylandSeat as first
parameter feel out of place. Renaming those makes it more obvious
that it's seat functions.

https://bugzilla.gnome.org/show_bug.cgi?id=763859
2016-03-21 17:15:59 +01:00
Carlos Garnacho
1597f31eba wayland: Remove GdkWaylandDataDevice typedef
It's no longer used.

https://bugzilla.gnome.org/show_bug.cgi?id=763859
2016-03-21 17:15:59 +01:00
Carlos Garnacho
81f0d23744 wayland: Replace all remaining uses of GdkWaylandDeviceData
And use GdkWaylandSeat in all of those. The variable names have also
been updated.

https://bugzilla.gnome.org/show_bug.cgi?id=763859
2016-03-21 17:15:59 +01:00
Carlos Garnacho
c9f9163544 wayland: Remove GdkWaylandDeviceData pointer in GdkWaylandDevice
It's the same than gdk_device_get_seat() nowadays. Also, rename the
usages of GdkWaylandDeviceData to GdkWaylandSeat in the functions
affected by the removal.

https://bugzilla.gnome.org/show_bug.cgi?id=763859
2016-03-21 17:15:59 +01:00
Matthias Clasen
08a0257893 Fix the build 2016-03-21 12:10:44 -04:00
Matthias Clasen
26617bb9b4 shortcutswindow: Make the search button square
Add the image-button style class to this button (this doesn't
work automatically here, since this is a toggle button).

https://bugzilla.gnome.org/show_bug.cgi?id=763604
2016-03-21 12:00:02 -04:00
Matthias Clasen
4ae057f07b Adwaita: Update treeview drop target styling
This reinstates the between-the-rows highlight that was lost
at some point.

https://bugzilla.gnome.org/show_bug.cgi?id=763808
2016-03-21 11:56:17 -04:00
Matthias Clasen
12c5ca5c01 treeview: Update drop target highlighting
Stop using the .dnd style class, and instead use the
:drop(active) pseudo state, together with .before and .after
classes.

https://bugzilla.gnome.org/show_bug.cgi?id=763808
2016-03-21 11:56:17 -04:00
Matthias Clasen
a5a51e325d quartz: Fix up dnd code
Copy changes to drag highlight drawing from gtkdnd.c to gtkdnd-quartz.c.

https://bugzilla.gnome.org/show_bug.cgi?id=763808
2016-03-21 11:56:17 -04:00
Christian Hergert
ca63330b19 stack: query preferred size for last_visible_child
When animating, we might be changing the size allocation of the previous
stack child. However, we were not querying the size in the process
meaning you would often see warnings about allocating the size without
knowing what it should be.

This simply adds an innocuous size request, since responding to last_child
sizing requests is not all that critical in the transition.

https://bugzilla.gnome.org/show_bug.cgi?id=763900
2016-03-21 11:50:27 -04:00
Carlos Garcia Campos
5107c4a75f gtk-demo: Rework foreigndrawing to use sizes from the theme
Instead of hardcoding the size of the widgets. This makes the output
closer to real widgets and fixes the blurry icons. I've also added a
scale.

https://bugzilla.gnome.org/show_bug.cgi?id=763758
2016-03-21 11:45:48 -04:00
Matthias Clasen
068d382689 dnd: Hide the drag window when we're done
We were just relying on the drag context finalize() to destroy
the window. But with garbage-collected bindings, that might
not happen as soon as we like, so explicitly hide the window
when the drag ends successfully.

https://bugzilla.gnome.org/show_bug.cgi?id=763659
2016-03-21 11:26:24 -04:00
Debarshi Ray
2407f157c7 print-operation: Be more robust in the error path
This isn't an issue at the moment. Only exporting to a file can fail
by setting by setting an error and it happens to correctly return
GTK_PRINT_OPERATION_RESULT_ERROR regardless of this code.

Still, let's make this block of code more correct to prevent future
changes from introducing broken behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=763731
2016-03-21 16:09:30 +01:00
Ask Hjorth Larsen
f988f1131b Updated Danish translation 2016-03-21 13:10:54 +00:00
Matthias Clasen
06062028e2 3.20.0 2016-03-21 07:54:42 -04:00
Jiri Grönroos
a449cc80de Updated Finnish translation 2016-03-21 11:28:44 +00:00
Marek Černocký
9025ceabde Updated Czech translation 2016-03-21 11:49:01 +01:00
Artur Morais
7a1b82828e Updated Brazilian Portuguese translation 2016-03-21 10:28:50 +00:00
Milo Casagrande
8f5471f1df Updated Italian translation 2016-03-21 08:55:26 +00:00
Balázs Úr
5c6979e520 Updated Hungarian translation 2016-03-21 06:30:55 +00:00
Ask Hjorth Larsen
69cb072cd6 Updated Danish translation 2016-03-21 04:42:41 +01:00
Piotr Drąg
615f55d6d1 Updated Polish translation 2016-03-21 04:04:03 +01:00
Matthias Clasen
de4cb363c2 Document gdk_wayland_seat_get_wl_seat 2016-03-20 22:49:33 -04:00
Matthias Clasen
09ea0c9110 Add gk_gl_context_is_legacy to the docs 2016-03-20 22:47:22 -04:00
Matthias Clasen
e4d3987b17 gdk: Add a missing Since tag
gdk_drag_context_manage_dnd was introduced this cycle.
2016-03-20 22:45:06 -04:00
Matthias Clasen
105f9acfdf Add gdk_drag_context_manage_dnd to the docs 2016-03-20 22:44:29 -04:00
Matthias Clasen
3409ec56ca Clean up gdk docs build a bit
Ignore more headers.
2016-03-20 22:44:03 -04:00
Matthias Clasen
1c692c64fe gdk: Reword some docs 2016-03-20 22:29:37 -04:00
Руслан Ижбулатов
404a7185be Improve window title context popup menu fallback
Add "Minimize", "Maximize", "Restore", "Move", "Resize" and "Always on Top"
items to the menu.
This pertially reverts commit 0ea1a526f9.

https://bugzilla.gnome.org/show_bug.cgi?id=763806
2016-03-20 22:02:23 -04:00
Matthias Clasen
f732fa6883 Reword release notes 2016-03-20 21:48:05 -04:00
Matthias Clasen
bee669ee66 Updates for 3.20.0 2016-03-20 21:40:05 -04:00
Matthias Clasen
5c63ab26da style context: Don't use g_warning for API misuse
We've changed our API here; what these applications are doing
used to be fine. Don't make users suffer for this by spamming their
logs in a stable release. We'll keep the warning in master.

https://bugzilla.gnome.org/show_bug.cgi?id=763796
2016-03-20 20:53:34 -04:00
Lapo Calamandrei
1dcd88961e Adwaita: more evident colorswatch drag hilight 2016-03-21 01:19:12 +01:00
Lapo Calamandrei
4973b55ad9 Adwaita: titlebutton fix
use a better selector and fix the styling on selection-mode.
2016-03-21 01:02:30 +01:00
Lapo Calamandrei
44e225e50b Adwaita: add a transition to the scale slider 2016-03-21 00:46:44 +01:00
Lapo Calamandrei
eacd632e5e Adwaita: add a transition to the switch slider 2016-03-21 00:44:47 +01:00
Lapo Calamandrei
6598dca783 Adwaita: sligthly dim backdrop selected fg color 2016-03-21 00:25:44 +01:00
Lapo Calamandrei
2e2c423c78 Adwaita: clean up 2016-03-21 00:22:24 +01:00
Ask Hjorth Larsen
33247293ee Updated Danish translation 2016-03-20 23:57:57 +01:00
Lapo Calamandrei
de466e7b28 Adwaita: rework places sidebar styling
set colors on rows istead of images.
2016-03-20 23:38:49 +01:00
Lapo Calamandrei
524ca3c2d5 Adwaita: fix treeview spinbutton style 2016-03-20 23:33:51 +01:00
Ask Hjorth Larsen
7da594e7b7 Updated Danish translation 2016-03-20 23:26:10 +01:00
Ask Hjorth Larsen
f64612ca56 Updated Danish translation 2016-03-20 23:25:14 +01:00
Lapo Calamandrei
c867b17cc8 Adwaita: fix treeview entry style
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=763955
2016-03-20 23:18:49 +01:00
Jakub Steiner
7224dd76db High Contrast: sidebar round buttons
https://bugzilla.gnome.org/show_bug.cgi?id=763774
2016-03-20 22:07:03 +01:00
Rūdolfs Mazurs
4e6f9660c0 Update Latvian translation 2016-03-20 21:16:28 +02:00
Paolo Borelli
d457b4f4a5 css: use "disabled" instead of the "insensitivie"
Not only there is a typo, but it is also deprecated.
2016-03-20 17:49:15 +01:00
Benjamin Otte
710285104b styleproperties: Really don't use 'i' in inner loop
I apparently was too tired when doing
8cebc125da and forgot to replace one
instance of 'i' with 'j'.

Thanks Timm for finding that one.
2016-03-20 13:43:46 +01:00
Милош Поповић
e397468964 Updated Serbian Latin translation 2016-03-20 09:00:50 +00:00
Марко Костић
5091bc9d16 Updated Serbian translation 2016-03-20 08:59:39 +00:00
Benjamin Otte
9782a2b729 broadway: Use explicit sizes for payload length
The previous greater than comparisons would never trigger the 2nd case.

http://www.viva64.com/en/b/0383/
2016-03-20 05:51:42 +01:00
Benjamin Otte
318a9c4634 x11: Use g_error_matches()
Fixes accidentally assigning values.

http://www.viva64.com/en/b/0383/
2016-03-20 05:43:02 +01:00
Benjamin Otte
8cebc125da styleproperties: Don't use the same loop variable in nested loops
http://www.viva64.com/en/b/0383/
2016-03-20 05:37:23 +01:00
Benjamin Otte
d42ba8a82a tests: Add missing break statements
http://www.viva64.com/en/b/0383/
2016-03-20 05:36:17 +01:00
Benjamin Otte
07a69b7247 gtk-demo: Fix copy/paste error
http://www.viva64.com/en/b/0383/
2016-03-20 05:32:35 +01:00
Benjamin Otte
471cdee97f broadway: Remove duplicate initialization
http://www.viva64.com/en/b/0383/
2016-03-20 05:31:20 +01:00
Benjamin Otte
5db1c987ee x11: Remove duplicate variable setting
http://www.viva64.com/en/b/0383/
2016-03-20 05:30:51 +01:00
Benjamin Otte
ca3607c219 menubar: Remove duplicate flags value
http://www.viva64.com/en/b/0383/
2016-03-20 05:30:43 +01:00
Benjamin Otte
c76424a842 calendar: Remove duplicate flags value
http://www.viva64.com/en/b/0383/
2016-03-20 05:27:19 +01:00
Benjamin Otte
58b7512b53 cssshadowvalue: Fix copy/paste issue
http://www.viva64.com/en/b/0383/
2016-03-20 05:26:39 +01:00
Benjamin Otte
3308122c32 placesview: Simplify
http://www.viva64.com/en/b/0383/
2016-03-20 05:18:38 +01:00
Benjamin Otte
c6834a002f pathbar: Order button CSS nodes right
The previous code ordered them the wrong way, so the first button (from
a CSS pov) was the last visible one.
2016-03-20 05:18:04 +01:00
Lapo Calamandrei
397bacee6e Adwaita: fix places sidebar icons style
the color wasn't changing in backdrop.
2016-03-19 20:13:06 +01:00
Lapo Calamandrei
0174803149 Adwaita: added a transition to the backdrop state to most widgets 2016-03-19 19:56:15 +01:00
Lapo Calamandrei
38211ff800 Adwaita: clean up checkbutton and radiobutton styling
some superfluous selectors there since generic label styling was
broken.
2016-03-19 18:59:29 +01:00
Lapo Calamandrei
ec50042228 Revert "Adwaita: checkbutton and radiobutton backdrop color fix"
This reverts commit 43937c6aa0.
Which was needed since the label styling was broken.
2016-03-19 18:57:33 +01:00
Lapo Calamandrei
e079b92a55 Adwaita: fix label styling
backdrop wasn't in the mix, added and adjusted other widgets
styling not to be overridden by it when not needed.
Spotted a typo making the backdrop base color white in the process.
2016-03-19 18:56:41 +01:00
Lapo Calamandrei
20a8ac5542 Adwaita: reset entry props on horizontal spinbuttons
the spinbutton node is where the styling is applied, the leftover
properties on the entry node make a backdrop transition bad.
2016-03-19 18:09:22 +01:00
Lapo Calamandrei
8f2213836c Adwaita: remove commented out code 2016-03-19 17:53:36 +01:00
Lapo Calamandrei
43937c6aa0 Adwaita: checkbutton and radiobutton backdrop color fix
this sets the right backdrop color to the label insider the
aformentined widgets.
2016-03-19 17:46:49 +01:00
Lapo Calamandrei
99e2f91dfe Adwaita: simplify headerbar style 2016-03-19 17:23:39 +01:00
Lapo Calamandrei
5a0aeec3f4 Adwaita: correctly order backdrop decoration node shadows
... otherwise setting a transition to the backdrop state will make
the window resize, since the shadows size gets interpolated.
2016-03-19 17:08:17 +01:00
Ask Hjorth Larsen
80732a951c Updated Danish translation by scootergrisen 2016-03-19 03:43:32 +01:00
Lapo Calamandrei
50b5820669 High Contrast: switch style fix 2016-03-18 19:25:09 +01:00
Lapo Calamandrei
48fb37f341 High Contrast: don't hardcode a font-size on the switch 2016-03-18 19:10:36 +01:00
Lapo Calamandrei
a46058451e High Contrast: stronger entry focus indication 2016-03-18 19:05:20 +01:00
Lapo Calamandrei
7d27fd087e High Contrast: fix a typo 2016-03-18 19:03:19 +01:00
Lapo Calamandrei
3b1484f57c Adwaita: fix colorscale shrinking when disabled 2016-03-18 18:38:48 +01:00
Jakub Steiner
ad9865126a High Contrast: fix drop states
https://bugzilla.gnome.org/show_bug.cgi?id=763823
2016-03-18 15:48:52 +01:00
Daniel Korostil
fe31c5f4fd Updated Ukrainian translation 2016-03-18 16:47:10 +02:00
Jakub Steiner
3a529614e5 High Contrast: spinbutton active state
- more contrast for the active state
- osd active state
2016-03-18 15:44:27 +01:00
Jakub Steiner
4fc5832cfd High Contrast: osd spinbutton fixes
- don't jump around for :backdrop
- only shade focused widgets
2016-03-18 15:30:46 +01:00
Jakub Steiner
c94afa01c4 High Contrast: osd spinbuttons
https://bugzilla.gnome.org/show_bug.cgi?id=763846
2016-03-18 15:22:16 +01:00
Jakub Steiner
a076df852b Hight Contrast: scrollbars
https://bugzilla.gnome.org/show_bug.cgi?id=763797
2016-03-18 13:53:30 +01:00
Anders Jonsson
b88020ec92 Updated Swedish translation 2016-03-18 10:14:33 +00:00
Anders Jonsson
71eac292bb Updated Swedish translation 2016-03-18 10:13:42 +00:00
Milo Casagrande
0e171dd45c Updated Italian translation 2016-03-18 08:28:19 +00:00
Руслан Ижбулатов
7d2a7a5626 GDK W32: Don't move iconic windows
Using UpdateLayeredWindow() on iconic windows brings them *back* from
their iconic (minimized) state. That is bad.
As a precaution, also don't use SetWindowPos() on iconic windows.
This means that iconic windows can't be moved. That is fixable
by using SetWindowPlacement(), but there is no pressing need to do so,
as there are very few cases when windows need to be moved while minimized.

https://bugzilla.gnome.org/show_bug.cgi?id=763835
2016-03-18 07:49:39 +00:00
Rafael Fontenelle
54d36efa61 Updated Brazilian Portuguese translation 2016-03-18 05:05:10 +00:00
Christian Hergert
1bd5be6b7c quartz: fix quartz build
More fallout from recent refactoring.

See also b3860e407d.
2016-03-17 21:18:58 -07:00
Olivier Fourdan
3e3d29f7b7 gtkwindow: ignore default size if there is a size request
Some applications set both a default size on their gtk window and a size
request on the corresponding gtk widget.

Until now, the default size was ignored for fixed size windows, so this
had no effect and remained unnoticed, but with the recent change for
client-side decorations, the default size is now used even for fixed size
windows, which can cause the resulting fixed size window to be much
smaller than expected with the size request.

For fixed size windows, if we have both a size request and a default
size set, prefer the size request as before.

https://bugzilla.gnome.org/show_bug.cgi?id=763749
2016-03-17 22:40:42 -04:00
Milo Casagrande
4ddd29d8c0 Updated Italian translation 2016-03-17 20:08:07 +00:00
Milo Casagrande
450704b28a Updated Italian translation 2016-03-17 20:03:44 +00:00
Jakub Steiner
1bf3f40cc5 High Contrast: disabled flat buttons
- disabled flat buttons and backdrop state
2016-03-17 14:57:09 +01:00
Jakub Steiner
09168806a2 High Contrast: fix app-notifications
- get rid of the internal frame

https://bugzilla.gnome.org/show_bug.cgi?id=763781
2016-03-17 13:07:04 +01:00
Jakub Steiner
e942aee13d High Contrast: menubar separator
- set menubar apart form the window content

https://bugzilla.gnome.org/show_bug.cgi?id=763777
2016-03-17 13:00:32 +01:00
Lapo Calamandrei
52c362721c High Contrast: fix titlebuttons sizing
... simplifying the scss in the process.
2016-03-17 12:54:10 +01:00
Lapo Calamandrei
b0a25b3aa9 High Contrast: add undecorated button mixin
... which is used in _common.scss, this fixes flat button not
being, well, flat.
2016-03-17 12:54:10 +01:00
Lapo Calamandrei
981985ee50 High Contrast: remove an adwaita leftover
... a missing mixin which makes no sense in HC actually.
2016-03-17 12:54:10 +01:00
Lapo Calamandrei
4a58e751fb Adwaita: fix wide separators 2016-03-17 10:32:35 +01:00
Baurzhan Muftakhidinov
4455ef1c90 Updated Kazakh translation 2016-03-17 03:33:59 +00:00
Baurzhan Muftakhidinov
9b4eff6ed9 Updated Kazakh translation 2016-03-17 03:33:32 +00:00
Matthias Clasen
e9de5f1083 HighContrast: Fix actionbar borders
Make the selector more specific so that it doesn't affect contained
boxes. Copied from Adwaita.

https://bugzilla.gnome.org/show_bug.cgi?id=763775
2016-03-16 21:57:49 -04:00
Changwoo Ryu
51f34f4b90 Updated Korean translation 2016-03-16 19:49:50 +00:00
Changwoo Ryu
b0b06ffbf2 Updated Korean translation 2016-03-16 19:49:22 +00:00
Lapo Calamandrei
1ae5643f59 Adwaita: shrink back big standalone osd buttons 2016-03-16 18:06:56 +01:00
Jakub Steiner
3e6eca537b High Contrast: button metrics
- sync with Adwaita for button definitions

https://bugzilla.gnome.org/show_bug.cgi?id=763706
2016-03-16 15:25:28 +01:00
Jakub Steiner
5e629bc26b High Contrast: spinbuttons
- sync with Adwaita

https://bugzilla.gnome.org/show_bug.cgi?id=763696
2016-03-16 15:15:20 +01:00
Jakub Steiner
b73f428a86 High Contrast: circular buttons
- make sure they are visible on selected rows

https://bugzilla.gnome.org/show_bug.cgi?id=763612
2016-03-16 14:53:47 +01:00
Jakub Steiner
e4f6c76cf8 High Contrast: fix entry and button metrics
- sync with Adwaita

https://bugzilla.gnome.org/show_bug.cgi?id=763610
2016-03-16 14:32:14 +01:00
Lapo Calamandrei
6228233a9e Adwaita: remove a nonsensical comment 2016-03-16 13:42:38 +01:00
Lapo Calamandrei
6ccaa8e3ca High Contrast: keycap styling
sync with Adwaita with some styling tweaks.
2016-03-16 13:34:00 +01:00
Lapo Calamandrei
ef8ef299c4 Adwaita: simplify treeview check and radio scss 2016-03-16 13:11:46 +01:00
Jakub Steiner
286437000b High Contrast: fix metrics for popover menus
- ripped the appropriate bits from Adwaita.

https://bugzilla.gnome.org/show_bug.cgi?id=763609
2016-03-16 12:57:14 +01:00
Jakub Steiner
e5e8ffa3f7 High Contrast: reimplement check and radio
Use a similar structure as Adwaita - using buttons for
radios and checkboxes.

https://bugzilla.gnome.org/show_bug.cgi?id=763707
2016-03-16 12:30:12 +01:00
Timm Bäder
985121813e scale: Fix value height calculation
if (orientation) doesn't make a lot of sense but C doesn't complain and
instead evaluates orientation to TRUE for GTK_ORIENTATION_VERTICAL
(since that's 1), thus inverting the value sizes.
2016-03-16 10:20:17 +01:00
Lapo Calamandrei
6f3a3ea7f3 Adwaita: notebook better header spacing
added some padding to the header and margins to the tabs node when
it's not the only child.
2016-03-15 19:04:21 +01:00
Jakub Steiner
3e567b4900 High Contrast: disabled scales more subtle
Make even the tough border subtle to make it distinct from
normal state.

https://bugzilla.gnome.org/show_bug.cgi?id=763613
2016-03-15 18:28:40 +01:00
Lapo Calamandrei
abfdad3c3d Adwaita: fix progressbar in treeviews styling 2016-03-15 17:02:01 +01:00
Lapo Calamandrei
c6dcc6ee62 Adwaita: add some comments in the GtkScale related scss 2016-03-15 16:13:49 +01:00
Jakub Steiner
87c410d420 High Contrast: checkboxes and radios inside treeviews
- fixes hover state of checkboxes and radios inside treeviews
2016-03-15 15:49:25 +01:00
Jakub Steiner
e44617b351 High Contrast: reimplement gtk scale
- sync with Adwaita to the new box model

https://bugzilla.gnome.org/show_bug.cgi?id=763613
2016-03-15 14:23:56 +01:00
Matthias Clasen
7018a41ce9 Correct a deprecation note
The CSS equivalent for focus-padding is outline-offset.
2016-03-15 09:22:23 -04:00
Jakub Steiner
186ecdf0fa High Contrast: distinct insensitive button
Tone down insensitive buttons.

https://bugzilla.gnome.org/show_bug.cgi?id=746490
2016-03-15 13:25:11 +01:00
Matthias Clasen
873f6ae36d 3.19.12 2016-03-14 19:14:31 -04:00
Cosimo Cecchi
d61c2b4cce window: stop stomping on resize-mode set by external API
commit c3dc0d80f1 fixed the behavior of
GtkContainer widgets requesting an IMMEDIATE resize-mode.

However, GtkWindow has been stomping on resize-mode during realize()
since commit addcc64b9c. The combination
of factors that led to this not being a visible problem during all this
while is uncertain, but this now causes the Shell to continuously try to
relayout its ShellEmbeddedWindow (a GtkWindow subclass).

This commit separates the resize-mode as set internally by GtkWindow
from the one set with the external API, so that GtkWindow only changes
it when it had not been set before by the subclass.

https://bugzilla.gnome.org/show_bug.cgi?id=763650
2016-03-14 16:10:15 -07:00
Tom Tryfonidis
4f2cbd1856 Updated Greek translation 2016-03-14 21:03:53 +00:00
Matthias Clasen
aec0ffebcc Updates 2016-03-14 15:55:30 -04:00
Lapo Calamandrei
183276aa65 Adwaita: fix vertical linked spinbuttons
which I broke in a previous commit...
2016-03-14 19:36:12 +01:00
Lapo Calamandrei
32b410c77b Adwaita: more drag hilight fixes 2016-03-14 19:20:15 +01:00
Carlos Garnacho
0b840a04a2 GtkScrolledWindow: Do not hover one scrollbar if grabbing on the other
Makes no sense since we're not going to interact with it. It'll be
hovered eventually if the button is released.
2016-03-14 19:18:14 +01:00
Carlos Garnacho
2173b6d483 GtkScrolledWindow: Check proximity on both indicators on grab-end leave events
The implicit grab may be finished so the pointer lies on top of the other
scrollbar, in this case one scrollbar should lose the hovering state, and
the other should gain it. So we must check for proximity in both indicators.
2016-03-14 19:18:14 +01:00
Lapo Calamandrei
baab1ebcc1 Adwaita: use a green (Tango Chameleon 3) for drag hilight 2016-03-14 18:46:56 +01:00
Lapo Calamandrei
8b505d570e Adwaita: placessidebar dnd fixes 2016-03-14 18:40:31 +01:00
Руслан Ижбулатов
5ac848d229 GDK W32: Fix shown window position calculation for dialogs and splashes
Two errors here:
1) A typo in splashscreen rectangle calculation - sets right twice
   instead of setting top
2) Centering for dialogs is off because it doesn't convert
   GDK virtual desktop coordinates to Windows WM virtual desktop
   coordinates by adding _gdk_offset_*

https://bugzilla.gnome.org/show_bug.cgi?id=763628
2016-03-14 16:31:14 +00:00
Lapo Calamandrei
bbced9a0cf Adwaita: places sidebar selected button fix and refactor 2016-03-14 17:23:35 +01:00
Carlos Garnacho
2923f69d3c gdkdnd: Add private means to commit the drag status
The way gdk_drag_status() may be called multiple times during the
processing of drag and drop events throughout the widget hierarchy
brings some superfluous messaging going in, esp. when it's the last
request the one we want to honor, yet we emit messaging requests on
all.

This is barely appreciable in the X11 backend, but due to the design
of the wayland protocol, quick series of changes like this it have
some self-amplificating consequences which may end up flooding the
connection.

We can delegate this to a late "commit" call, performed within GDK
event management. This way gdk_drag_status() calls may be cached
and only result in windowing messaging once per ::drag-motion or
::drag-data-received event. Emitting the final status will also
avoid spurious action changes on the compositor and the other peer.

https://bugzilla.gnome.org/show_bug.cgi?id=763298
2016-03-14 16:50:36 +01:00
Carlos Garnacho
160a4fe5ac GtkNotebook: Make tab DnD use application/x-rootwindow-drop again
Besides the ::drag-failed handling in order to trigger the window creation
hook, add some handling of the application/x-rootwindow-drop mimetype, so
the same effect is achieved if the tab could be dropped in a destination
accepting this mimetype.

https://bugzilla.gnome.org/show_bug.cgi?id=763387
2016-03-14 16:16:32 +01:00
Carlos Garnacho
83cc7f76d7 GtkWindow: Make it an application/x-rootwindow-drop destination
This makes toplevels pseudo-transparent wrt this mimetype, so if
the drag source offers this mimetype and not another that was
managed by the destination-side widget hierarchy, the window will
be an acceptable target for this mimetype, allowing it to trigger
whatever is meant to in the source side.

https://bugzilla.gnome.org/show_bug.cgi?id=763387
2016-03-14 16:16:32 +01:00
Руслан Ижбулатов
ab16b19a0a GDK W32: Fix pointer-under-window code for custom resize
This code:
>  gdk_window_get_root_origin (window, &x, &y);
>  x -= root_x;
>  y -= root_y;
>  pointer_window = gdk_device_get_window_at_position (device, &x, &y);
was meant to find the child gdk window at coordinates root_x and root_y.

These 4 lines had 2 bugs:
1) x = x - root_x (same for y) is wrong, it should be x = root_x - x
2) gdk_device_get_window_at_position() does not give you the window
   at position x and y. It gives you the window under the device
   (mouse pointer) and the returns the device coordinates in x and y.

https://bugzilla.gnome.org/show_bug.cgi?id=763533
2016-03-14 15:06:51 +00:00
Jiro Matsuzawa
ade1ac16a8 Updated Japanese translation 2016-03-14 14:42:48 +00:00
Carlos Garnacho
6fd05dfe53 gtk-demo: Handle GDK_TOUCH_CANCEL in event-axes demo
It is a thing in wayland, which means we leave traces from older
touches when the compositor takes over touch sequences in order
to handle a gesture.
2016-03-14 15:30:27 +01:00
Stas Solovey
c5a8be8fc6 Updated Russian translation 2016-03-14 12:24:40 +00:00
Lapo Calamandrei
2e39df7713 Adwaita: more scss refactoring 2016-03-14 11:26:32 +01:00
Lapo Calamandrei
0696c848ba Adwaita: refactor entry scss 2016-03-14 10:19:05 +01:00
Balázs Meskó
4525f8628f Updated Hungarian translation 2016-03-14 07:57:26 +00:00
Matthias Clasen
4f45353a19 pathbar: Style slider buttons
Set a style class on the pathbar slider buttons, and have the
theme handle the separately from other image buttons.
2016-03-13 23:09:47 -04:00
Matthias Clasen
8a3c25ca66 path bar: Stop mishandling slider buttons
We must call get_preferred_width/height on the slider buttons
before allocating them, otherwise the layout machinery spews
warnings.
2016-03-13 23:09:41 -04:00
Stas Solovey
302b830649 Updated Russian translation 2016-03-13 21:04:56 +00:00
Aurimas Černius
140f51c590 Updated Lithuanian translation 2016-03-13 21:15:07 +02:00
Piotr Drąg
d9a6d2ca80 Updated POTFILES.skip 2016-03-13 19:51:57 +01:00
Jiri Grönroos
b7ae717465 Updated Finnish translation 2016-03-13 14:47:41 +00:00
Matthias Clasen
9a21ff3cd2 stack switcher: Support switching during DND
GtkNotebook will switch pages if you hover over a tab
during DND. The same makes sense in GtkStackSwitcher,
so implement it here.
2016-03-13 00:11:52 -05:00
Matej Urbančič
fff323df09 Updated Slovenian translation 2016-03-12 22:06:02 +01:00
Lapo Calamandrei
d00e19a3cd Adwaita: some more selector housekeeping 2016-03-12 19:35:56 +01:00
Lapo Calamandrei
ff05ccf18e Adwaita: smarter scss extentions for titlebuttons 2016-03-12 19:32:42 +01:00
Lapo Calamandrei
dfc41b34f7 Adwaita: smarter scss extentions on the notebook
avoiding spawning unneeded selectors.
2016-03-12 19:26:52 +01:00
Lapo Calamandrei
2885f1b3a2 Adwaita: fix notebook overflow arrows styling
which correctly go :active now, istead of :checked as in the past.
2016-03-12 19:02:48 +01:00
Lapo Calamandrei
e44ea315d5 Adwaita: set back drag hilight color to black
...I erroneusly pushed a test green there, this will probably
change again, but that green wasn't right.
2016-03-12 15:27:53 +01:00
Lapo Calamandrei
8003937a68 Adwaita: textview drag hilight 2016-03-12 15:22:35 +01:00
Lapo Calamandrei
b46f7223ac Adwaita: scss cosmetic fixed 2016-03-12 15:03:07 +01:00
Lapo Calamandrei
39c8ad53b5 Adwaita: reset filechooserbutton:drop(active) 2016-03-12 14:21:21 +01:00
Fran Dieguez
634abd1476 Updated Galician translation 2016-03-12 12:57:00 +00:00
Fran Dieguez
2ee7d103a3 Updated Galician translation 2016-03-12 12:55:28 +00:00
Marek Černocký
0e124c19af Updated Czech translation 2016-03-12 13:33:35 +01:00
Руслан Ижбулатов
a97e8fd078 GDK W32: Fix a typo 2016-03-12 12:14:04 +00:00
Matthias Clasen
d345a7a60e color editor: Improve popup positioning
Don't make the popup follow the slider while it is open; that
makes interaction with it unnecessarily hard. Also move all the
popups inwards a little bit, so they are not flush with the
scales, which looks untidy.

https://bugzilla.gnome.org/show_bug.cgi?id=763380
2016-03-11 22:44:17 -05:00
Matthias Clasen
5f00a9b4ec scrolled window: Fix scrollbar size allocation
We were not taking the scrollable borders into account when
requesting size for the scrolled window, which could lead
to underallocating the scrollbars at size allocation time
when we *did* take the borders into account.

This is most notable with treeviews, where we have the
headers as borders, and was causing the treeview-crash-too-wide
reftest to fail.
2016-03-11 21:42:33 -05:00
Matthias Clasen
07e6eae3e5 file chooser button: Set a CSS name
This lets us differentiate the main node from regular boxes.
2016-03-11 21:42:33 -05:00
Matthias Clasen
4d84e7a8f7 Trivial formatting fix 2016-03-11 21:42:33 -05:00
Marek Černocký
4f3af94e57 Updated Czech translation 2016-03-11 23:08:07 +01:00
Matthias Clasen
e44a87fe94 Fix the textview-margins reftest
This test has a word that wouldn't fit in the room we have with
a window width of 100, and then we get clipped in the one case
but not the other. Make the window a little wider, so it fits.
2016-03-11 16:46:52 -05:00
Matthias Clasen
2f4f164078 Fix a typo
We don't want to get the padding twice.
2016-03-11 16:38:41 -05:00
Matthias Clasen
5e68c4e62d inspector: Reset the treewalk when required
The tree walk holds a tree iter, which will become invalid
when we either remove the row that it points to or remove
all rows.

Reset the tree walk in those cases to avoid a crash that
was pointed out by Bastien Nocera.
2016-03-11 13:53:57 -05:00
Matthias Clasen
2e34ce8f7c inspector: Add api to get the current tree walk position
This will be used in the next commit.
2016-03-11 13:53:57 -05:00
Matthias Clasen
a6d575ed61 typo fix 2016-03-11 13:53:57 -05:00
Jordi Mas
30217908d8 Update Catalan translation 2016-03-11 19:44:06 +01:00
Timm Bäder
4b0abc13e3 range: Fix a few typos
Depreacated -> Deprecated
through -> trough
2016-03-11 19:18:07 +01:00
Sebastien Lafargue
09b837183e textview: Fix drag highlight problems 2016-03-11 19:14:16 +01:00
Piotr Drąg
a84926f03a Updated Polish translation 2016-03-11 18:30:18 +01:00
Matthias Clasen
63b03ce836 Better debug messages for actions
Unify the debug messages between actionhelper and menutracker,
and add some more context to some of them.
2016-03-11 12:20:33 -05:00
Dušan Kazik
baaa0637bf Updated Slovak translation 2016-03-11 17:09:01 +00:00
Lapo Calamandrei
3c89c11328 Adwaita: set a min-width on horizontal spinbutton entry
to accomodate at least 3 chars, before overflowing.
2016-03-11 18:02:37 +01:00
Lapo Calamandrei
5085e1c70d Adwaita: rounded corners for colorscale popup 2016-03-11 18:01:36 +01:00
Benjamin Otte
eeb945e4c1 inspector: Widgets update automatically when CSS changes
There's no need to force-invalidate their CSS.
2016-03-11 17:00:41 +01:00
Benjamin Otte
b7285592f9 cssanimation: Compute progress correctly
We were computing the wrong progress, in particular when the iteration
count was non-integer.

Test included.
2016-03-11 16:39:34 +01:00
Benjamin Otte
fc7335bdb4 colorscale: Draw a trough
Make sure the color info is actually drawn inside the trough.
2016-03-11 16:39:34 +01:00
Lapo Calamandrei
8351a6e4d6 Adwaita: .osd check|radio style 2016-03-11 16:35:16 +01:00
Daniel Mustieles
f81635ed81 Updated Spanish translation 2016-03-11 15:31:32 +00:00
Friedrich Beckmann
8879052887 added NSEventTypeMagnify and NSEventTypeRotate for ZOOM and ROTATE gestures
MacOS provides the NSEventTypeMagnify which is very similar to the
Gtk ZOOM gesture and NSEventTypeRotate which is very similar to the
Gtk Rotate gesture. Those two event sequences are translated to a
sequence of GDK_TOUCHPAD_PINCH events. This sequence is then detected
in the upper gtk layers as Gtk Zoom/Rotate Gestures.

https://bugzilla.gnome.org/show_bug.cgi?id=760276
2016-03-11 09:59:01 -05:00
Lapo Calamandrei
b37e4ff805 Adwaita: simplify vertically linked entries scss code 2016-03-11 14:57:03 +01:00
Matthias Clasen
4c3e4d3ea1 filechooserbutton: Fix drag highlight problems
This widget is a bit unusual in that it is a box that acts as
the drop target, while the visible content is a child of the box.
Propagate :drop(active) to the child to make the highlight visible.
2016-03-11 08:51:50 -05:00
Lapo Calamandrei
e8c5db0425 Adwaita: drop active style fixes
taking care of:
* entries
* buttons (misses some linking logic still)
* comboboxes (untested)
* spinbuttons
2016-03-11 14:44:58 +01:00
Matthias Clasen
ab5ebf6199 calendar: Fix drag highlight problems
Don't propagate :drop(active) to components.
2016-03-11 08:34:01 -05:00
Matthias Clasen
3064e4e406 spinbutton: Fix drag highlight problems
Don't propagate :drop(active) to the buttons.
2016-03-11 08:07:30 -05:00
Matthias Clasen
2fee5fbda7 entry: Fix drag highlight problems
We don't want drag highlights around icons or progress, so don't
propagate the :drop(active) state to them.
2016-03-11 08:02:10 -05:00
Yosef Or Boczko
b7577b2f3b Updated Hebrew translation 2016-03-11 14:48:25 +02:00
Jonas Ådahl
f8bbbbf684 gdk: Don't leak discarded window state event
When compressing window state events, we didn't free the discarded
event after removing it from the queue, causing us to leak it. This
commit makes sure to free the discarded event after unqueuing it.

https://bugzilla.gnome.org/show_bug.cgi?id=762468
2016-03-11 07:11:34 -05:00
Matthias Clasen
1d19065979 range: Fix trough clickability
We previously considered any click inside the trough if it
hit an area that the slider might cover. Bring this behavior
back; the trough of scales is otherwise just too narrow to
hit easily with a click.
2016-03-11 01:27:21 -05:00
Matthias Clasen
1a5cb41bd9 Use per-display debug flags for visual debugging 2016-03-11 00:22:36 -05:00
Matthias Clasen
02742d5332 Make debug flags per-display
Tihs lets us toggle debug flags in the inspector without affecting
the inspector itself.
2016-03-11 00:22:36 -05:00
Matthias Clasen
f82e4ff362 Trivial formatting fix 2016-03-11 00:22:36 -05:00
Matthias Clasen
97250ea5e6 inspector: Add a switch for the layout debug flag 2016-03-11 00:22:36 -05:00
Matthias Clasen
ad54697594 gadget: Show layout
When the layout debug key is set, overlay boxes for the content
and border area of each gadget.
2016-03-10 23:21:22 -05:00
Matthias Clasen
33d7196dc8 Add a layout debug option
This will be used to show box model borders.
2016-03-10 23:21:22 -05:00
Matthias Clasen
04e59719b5 Docs: Trivial consistency fix 2016-03-10 23:21:22 -05:00
Matthias Clasen
804d330195 Typo fixes
Fix s/occurence/occurrence in many places.
2016-03-10 22:46:02 -05:00
Мирослав Николић
f87da278ad Updated Serbian translation 2016-03-11 03:42:36 +01:00
Piotr Drąg
41ee906764 Updated Polish translation 2016-03-11 02:17:05 +01:00
Federico Mena Quintero
edacd5d6ee GtkFileChooserEntry: move the cursor after the user chooses a completion from the list
https://bugzilla.gnome.org/show_bug.cgi?id=756450
2016-03-10 16:03:52 -06:00
Federico Mena Quintero
81059c35d5 GtkFileChooserEntry: regenerate the completions if the dir_part changes
Consider this bug:

1. Open a file chooser; switch it to $HOME

2. Start typing "~/Dow" with some file that *does* exist in your $HOME

3. Delete the inline-completion selection (e.g. the "nloads" after "~/Down").

4. While you are at "~/Dow_" hit Tab.  No completion will occur.

This happens because of the following.

Say the GtkFileChooserEntry is in the process of loading $HOME,
because _set_base_folder() was called.  If the entry contains no text,
then the FULL_PATH_COLUMN of the file system model will be set to
unprefixed filenames from $HOME, like

  .ssh/
  Documents/
  Downloads/
  somefile.txt

Later we avoid reloading the folder if g_file_equal(old_folder, new_folder).

However, the FULL_PATH_COLUMN gets populated in completion_store_set()
out of the actual filenames that GIO returned, plus the chooser_entry->dir_part.

If the user starts typing "~/Dow" then dir_part changes to "~/", *but*
the folder won't be reloaded since it is also $HOME.  However, the completion
machinery assumes that FULL_PATH_COLUMN will contain prefixed entries like

  ~/.ssh/
  ~/Documents/
  ~/Downloads/
  ~/somefile.txt

So, we add an invariant that chooser_entry->dir_part and
chooser_entry->current_folder_file must change at the same time, and
must not get out of sync:  If any of them changes, then the
completions are regenerated.
2016-03-10 15:37:00 -06:00
Matthias Clasen
2b773e07e3 inspector: Show the frame clock in misc
There is no convenient way to get a handle on the frame clock,
otherwise, and the frame clock object is where we show the frame
rate...
2016-03-10 16:21:35 -05:00
Mario Blättermann
ec0111ce05 Updated German translation 2016-03-10 19:58:33 +01:00
Daniel Mustieles
c87eb5854a Updated Spanish translation 2016-03-10 17:23:24 +00:00
Piotr Drąg
556940c3c6 Updated Polish translation 2016-03-10 17:30:11 +01:00
Carlos Soriano
25b036ae93 configure.ac: bump version
So nautilus and other consumers of the sidebar can use the non
API-broken API of the sidebar.
2016-03-10 16:30:16 +01:00
Artur Morais
8038139067 Updated Brazilian Portuguese translation 2016-03-10 14:33:41 +00:00
Balázs Meskó
3c26fecef9 Updated Hungarian translation 2016-03-10 13:59:55 +00:00
Руслан Ижбулатов
65ea6f8736 GDK W32: Partially rollback the custom resize for GL windows
If a window is being drawn by OpenGL, we need to apply any
pending resizes to it *before* we paint.

https://bugzilla.gnome.org/show_bug.cgi?id=763287
2016-03-10 13:09:32 +00:00
Lapo Calamandrei
85d0220800 Adwaita: gtkcolorscale styling. 2016-03-10 13:35:46 +01:00
Мирослав Николић
40a2d7f14a Updated Serbian translation 2016-03-10 11:54:39 +01:00
Мирослав Николић
b9e3d2033c Updated Serbian translation 2016-03-10 11:39:44 +01:00
Marek Černocký
a09d552f33 Updated Czech translation 2016-03-10 10:47:04 +01:00
Philip Chimento
b3860e407d quartz: Get core pointer from device manager
Some spots missed in the earlier refactor removing core_pointer from
the GdkDisplay struct.

https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-03-09 22:11:07 -08:00
Jonas Ådahl
8fb7f50028 wayland: Add request focus support via gtk_shell
A gtk_surface.present request was added to gtk_surface which takes
timestamp from some input event, and uses that timestamp to figure out
whether the window can be presented or not. If we don't have a
timestamp, we should just give up instead of making up our own,
otherwise we might steal someones focus.

https://bugzilla.gnome.org/show_bug.cgi?id=763037
2016-03-10 12:31:15 +08:00
Jonas Ådahl
ed430dc00a wayland: Add system bell support via gtk_shell
Invoke the system bell by calling the request added to the gtk_shell
protocol.

https://bugzilla.gnome.org/show_bug.cgi?id=763001
2016-03-10 12:31:15 +08:00
Jonas Ådahl
f68cf698fc wayland: Don't invent our own unstable protocol semantics
The gtk_shell protocol used some half baked unstable protocol semantics
that worked by only allowing binding the exact version of the
interface. This hack is a bit too confusing and it makes it impossible
to do any compatible changes without breaking things.

So, instead rename it to include a number in the interface names. This
way we can add requests and events without causing compatibility issues,
and we can later remove requests and events by bumping the number in
the interface names.

https://bugzilla.gnome.org/show_bug.cgi?id=763001
2016-03-10 12:31:15 +08:00
Matthias Clasen
30faa9a2a9 inspector: Refine strv editor
Put some spacing between the rows, and link the buttons to
the entries they belong to.
2016-03-09 21:59:43 -05:00
Matthias Clasen
6e9fd6832a inspector: Do a better job with readonly properties
Say if they are non-writable or construct-only, and also
gray out construct-only properties in the list.
2016-03-09 21:59:43 -05:00
Matthias Clasen
a28e76f09c GtkActionable: Improve property names
These names show up as title in the property editor
in the inspector, so we want them to look consistent
with the rest.
2016-03-09 21:59:43 -05:00
Matthias Clasen
c24cc63523 inspector: Minor refactoring
Break out some functions in prop-editor.c
2016-03-09 21:59:43 -05:00
Matthias Clasen
c1c8a861aa inspector: Redo property lists a bit
Break out value types as a separate column, to make the
value column more readable.
2016-03-09 21:59:43 -05:00
Matthias Clasen
0c929b7124 inspector: Avoid overflow when editing doubles
The adjustment double properties allow values from -G_MAXDOUBLE
to G_MAXDOUBLE, which leads to overflow when calculating
max - min / 10. To avoid that, simply use a fixed page_size of 1.0.
2016-03-09 21:59:43 -05:00
Piotr Drąg
747962ece2 Updated Polish translation 2016-03-10 03:43:27 +01:00
Matthias Clasen
6af8e9f3cc inspector: Wording changes
Align the property nicks of GtkCssNode with the column names
in the inspector node tree.
2016-03-09 19:29:58 -05:00
Matthias Clasen
f23c77b14b inspector: Some more cleanup
The last commit left some unused functions behind.
2016-03-09 19:29:58 -05:00
Matthias Clasen
e5a5f0a59a inspector: Remove an unncessary context menu
Now that we have the style properties on the same page again,
we don't need the context menu anymore.
2016-03-09 19:29:58 -05:00
Claude Paroz
0479969f3f Updated French translation 2016-03-09 23:09:12 +01:00
Matthias Clasen
fa48dbf1a5 range: Fix gadget state propagation
The contents node was not getting state updates at all, and the
trough node was missing some state updates as well, because we
were not calling update_trough_state() in all the places where
it is needed.
2016-03-09 14:15:40 -05:00
Carlos Garnacho
aaa467679d wayland: Make data_source_target() an empty stub
This request actually means nothing to the upper GDK layers,
we used to preempt a GDK_SELECTION_REQUEST event, but this is too
eager, and not like things work in X11.

Originally in wayland, this event may be used for feedback purposes.
We however don't perform any mimetype-based feedback, so we can
safely ignored.

This makes data_source_send() the only place where we actually
trigger GDK_SELECTION_REQUEST, this one is conceptually the same
than the X11 selection request event.
2016-03-09 18:39:16 +01:00
Carlos Garnacho
f61965233b wayland: Allow 0-size writes in selection/dnd
It's not something we should be forbidding explicitly, definitely
no-op is not the best option.
2016-03-09 18:39:15 +01:00
Carlos Garnacho
3da4b81427 wayland: Clear more thoroughly the source-side data on dnd_finished
The targets should also be unset.
2016-03-09 18:39:15 +01:00
Carlos Garnacho
ec2257e53c wayland: Unset the source-side DnD fd after passing it to the stream
The ownership is given to the stream, so unset it here.
2016-03-09 18:39:15 +01:00
Lapo Calamandrei
1879de1f17 Adwaita: radiobutton and checkbutton style fixes
padding and margins tweaks and treat the hover when placed in
popovers.
2016-03-09 17:29:46 +01:00
Timm Bäder
25b67af340 textview: Ensure the borders fit into the allocation
https://bugzilla.gnome.org/show_bug.cgi?id=763216
2016-03-09 16:46:00 +01:00
Lapo Calamandrei
473e346203 Adwaita: added a border to sidebars...
...hopefully when needed.
By default I assume a left hand side placement on ltr languages
and the opposite in rtl, for other placements left/right style
classes can be used.
2016-03-09 15:38:03 +01:00
Matthias Clasen
ed5468e81c window: Avoid excessive resizing with popovers
Under Wayland, popovers use subsurfaces, and we end up getting
configure events for these delivered to the toplevel they're in.
To avoid triggering resize loops, ignore configure events that
are not for the toplevel window itself.

https://bugzilla.gnome.org/show_bug.cgi?id=763351
2016-03-09 08:58:23 -05:00
Lapo Calamandrei
9ab920164a Adwaita: regenerate css
since a bit was missing from the previous commit
2016-03-08 20:39:24 +01:00
Lapo Calamandrei
8508ea1554 Adwaita: add a top border to actionbars 2016-03-08 20:09:18 +01:00
Lapo Calamandrei
5923b73fc1 Adwaita: make links on infobars visible 2016-03-08 19:56:33 +01:00
Marek Černocký
c62862f552 Updated Czech translation 2016-03-08 18:58:13 +01:00
Marek Černocký
c0ac2b849d Updated Czech translation 2016-03-08 18:46:11 +01:00
Stas Solovey
bd581bebed Updated Russian translation 2016-03-08 17:39:22 +00:00
Takao Fujiwara
7822f59a86 Set VirtualBox USB Tablet to GDK_SOURCE_MOUSE
The virtual host assigns the name of the mouse device to
"VirtualBox USB Tablet" in VirtualBox and we'd use that device as mouse.
If not, GtkTooltip is not enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=763017
2016-03-08 11:11:51 -05:00
Lapo Calamandrei
6fdf1e4462 Adwaita: path-bar style fixes
what we used to do here doesn't really work anymore, so this adapt
to gtk+ and theme changes.
2016-03-08 16:08:24 +01:00
Matthias Clasen
b7fd0147f7 gtk-demo: Fix a typo 2016-03-08 08:55:59 -05:00
Matthias Clasen
4357c22a89 gtk-demo: Update foreigndrawing example some more
The scrollbar changes need to take the theme's negative margins
into account.
2016-03-08 08:55:59 -05:00
Lapo Calamandrei
01ad22df1f Adwaita: vertical paddings on menu
mostly to fix combobox menu positioning, looks nice anyway.
2016-03-08 14:27:24 +01:00
Matthias Clasen
fdd3c912a0 gtk-demo: Try to fix foreigndrawing scrollbars
The node hierarchy and sizing has changed with the gadgetization
of range widgets.
2016-03-08 08:14:36 -05:00
Lapo Calamandrei
1f3c93583a Adwaita: fix a typo 2016-03-08 14:00:01 +01:00
Мирослав Николић
db485305e4 Updated Serbian translation 2016-03-08 09:50:33 +01:00
Мирослав Николић
6e17ed2dca Updated Serbian translation 2016-03-08 09:48:24 +01:00
Мирослав Николић
450287fc9f Updated Serbian translation 2016-03-08 09:46:13 +01:00
Balázs Úr
24535e2484 Updated Hungarian translation 2016-03-08 07:42:18 +00:00
Chun-wei Fan
15c9b3e692 GDK-Win32: Make update_stye_bits() available within the backend
Other portions of the GDK-Win32 backend make use of this function as
layered windows need to be disabled for GL windows and possibly other
parts, so make this function a private function that is available within
the backend.

https://bugzilla.gnome.org/show_bug.cgi?id=763285
2016-03-08 13:26:59 +08:00
Chun-wei Fan
3f190e0fa6 Win32: Disable layered windows for GL
Layered windows and GL do not work well together, so disable layered
windows when initiating a GdkGLContext, so that GtkGLArea programs can run
properly.

Also based on patch by LRN to address the issue.

https://bugzilla.gnome.org/show_bug.cgi?id=763080
2016-03-08 12:16:37 +08:00
Dušan Kazik
18f81d5da8 Updated Slovak translation 2016-03-07 20:32:48 +00:00
Piotr Drąg
d173b69740 Updated Polish translation 2016-03-07 19:54:44 +01:00
Piotr Drąg
717e88282b Updated POTFILES.in 2016-03-07 19:35:35 +01:00
Matthias Clasen
3015f46170 Fix another installed test typo
This one was causing us to install invalid .test files and thereby
breaking all continuous tests :-(
2016-03-07 10:50:43 -05:00
Matthias Clasen
13a94b66b6 Sync default double-click time with GNOME
The default value for the double-click key in the
org.gnome.settings-daemon.peripherals.mouse schema is 400.
Use the same value as the declared default for the
gtk-double-click-time GTK+ setting, to avoid pointless
differences in corner cases.

https://bugzilla.gnome.org/show_bug.cgi?id=720950
2016-03-07 07:50:29 -05:00
Matthias Clasen
1388b111a8 wayland: Implement gtk-keynav-use-caret setting
This is anticipating the gsetting that will be introduced in
https://bugzilla.gnome.org/show_bug.cgi?id=763123
2016-03-07 07:35:36 -05:00
Matthias Clasen
8a1da56393 Fix a typo
This was causing the tools tests to not be installed and,
consequently, never run on continuous.
2016-03-07 07:30:00 -05:00
Daniel Mustieles
f4551bddf5 Updated Spanish translation 2016-03-07 10:55:19 +00:00
Daniel Mustieles
0f5a95e712 Updated Spanish translation 2016-03-07 10:54:56 +00:00
Марко М. Костић
2589e50898 Updated Serbian translation 2016-03-07 11:43:07 +01:00
Rafael Fontenelle
02dd97fcd0 Updated Brazilian Portuguese translation 2016-03-07 05:43:39 +00:00
Matthias Clasen
aa193ce4a4 inspector: UI refresh
The sidebar in the object page was using up more space than it deserves.
Replace it with a combo box in the subheader. Now that we have more space,
put the CSS node tree and the style properties in the same page again.
2016-03-07 00:24:15 -05:00
Matthias Clasen
4b5bcdeaa5 inspector: Drop the per-object CSS editor
The global editor is good enough for all uses.
2016-03-06 21:41:46 -05:00
Cosimo Cecchi
9509bbb4a1 range: remove unneeded gtk_widget_queue_draw() 2016-03-06 11:10:44 -08:00
Cosimo Cecchi
c4615eff7b range: rename function
The function queues an allocation now, not a draw.
2016-03-06 11:10:44 -08:00
Cosimo Cecchi
de1c4bad6f range: remove duplicated code
This is already called by range_grab_add().
2016-03-06 11:10:44 -08:00
Cosimo Cecchi
d9db329496 scale: trivial code cleanup 2016-03-06 11:10:44 -08:00
Cosimo Cecchi
f294bdc803 scale: deprecate value-spacing style property
Nothing uses it now.
2016-03-06 11:10:44 -08:00
Cosimo Cecchi
a9b50b6f69 scale: port scale values to gadgets
And add a default color like it was before.
This also fixes other issues with scale values interacting with scale
mark labels, which were buggy at least since 3.18.
2016-03-06 11:09:46 -08:00
Balázs Úr
27b53b58c3 Updated Hungarian translation 2016-03-06 18:27:26 +00:00
Matthias Clasen
94f0cef6fc Minor documentation improvement
https://bugzilla.gnome.org/show_bug.cgi?id=583780
2016-03-06 10:23:49 -05:00
Matthias Clasen
4ab91f09cf spin button: Limit the entry width to reasonable values
When opening the value editor for any GtkAdjustment properties
in the inspector, the popover stretches out for miles, since
it reserves enough space to draw MAXDOUBLE. This is not useful.
Limit the space we reserve to 8 digits.
2016-03-05 23:45:35 -05:00
Matthias Clasen
6d1cdaff7e gtk-demo: Use <accelerator>
Add an example of <accelerator> use in the builder example.
2016-03-05 23:44:03 -05:00
Matthias Clasen
9c0e4c174a builder: Allow 'primary' as a modifier value
Support aliases for flags values in GtkBuilder, and use this
to support the special value 'primary' for GdkModifierType
values.

https://bugzilla.gnome.org/show_bug.cgi?id=699891
2016-03-05 23:44:03 -05:00
Cosimo Cecchi
27a6183b98 range: simplify calculation 2016-03-05 19:09:18 -08:00
Cosimo Cecchi
8242182404 range: move declarations to inner block
Where they're needed.
2016-03-05 19:09:18 -08:00
Cosimo Cecchi
990bd03c35 range: use a fixed offset for mark "snap" size
Instead of making it dependent on the slider size.
2016-03-05 19:09:18 -08:00
Cosimo Cecchi
6efe1f411a Revert "range: use border box for slider area"
Since it causes problems with event coordinates.

This reverts commit 0883ff5eed.
2016-03-05 19:09:18 -08:00
Anders Jonsson
d866f364d1 Updated Swedish translation 2016-03-05 23:03:05 +00:00
Matej Urbančič
6338c5ee7c Updated Slovenian translation 2016-03-05 22:37:17 +01:00
Matej Urbančič
4f76a89de0 Updated Slovenian translation 2016-03-05 22:33:50 +01:00
Matthias Clasen
5c248bbd79 Make the settings test fail
Small thinko: We only get to see the test artifacts in
continuous if the test fails. So make it fail, temporarily.
2016-03-05 15:49:34 -05:00
Cosimo Cecchi
31fd41e547 Adwaita: fix glitch in fine-tune scrollbar theming
The fine-tune mode should not change the overall dimensions of the
scrollbar.
2016-03-05 12:05:26 -08:00
Stas Solovey
3608d042e0 Updated Russian translation 2016-03-05 19:56:37 +00:00
Matej Urbančič
bdeff73bec Updated Slovenian translation 2016-03-05 20:56:06 +01:00
Matej Urbančič
f77407e19a Updated Slovenian translation 2016-03-05 20:49:05 +01:00
Aurimas Černius
c1b8aee5c2 Updated Lithuanian translation 2016-03-05 21:37:17 +02:00
Paolo Borelli
8f25481406 win32: use a struct for the event source
This removes the event_poll_fd global variable and the (ab)use of
get_default_display. It is also more consistent with other backends.

Also store display
2016-03-05 20:31:10 +01:00
Paolo Borelli
58a49c1a4b win32: fix "unused variable" warning 2016-03-05 20:31:10 +01:00
Rafael Fontenelle
6066519e73 Updated Brazilian Portuguese translation 2016-03-05 19:05:56 +00:00
Matthias Clasen
d69100547c testsuite: Remove a test that isn't valid with csd
With csd, the allocation of the window will be larger than the
default size, since it includes borders and decorations. Just
remove this check.
2016-03-05 13:47:41 -05:00
Matthias Clasen
b2e6ad640d Add a test that dumps settings
This is not much of a test, tbh. But it will give us a convenient
dump of all GTK+ settings in continuous, which helps with tracking
down test failures that might depend on settings.
2016-03-05 13:41:47 -05:00
Matthias Clasen
434b08fe24 status icon: Prevent size dithering
We're seeing loops where the size of some status icons constantly
dithers between 24 and 25. Since I couldn't track down exactly
where the one extra pixel comes from, just stop reacting
to single-pixel size changes.

https://bugzilla.gnome.org/show_bug.cgi?id=758893
2016-03-05 12:15:42 -05:00
Matthias Clasen
213108b64f Minor cleanup
The GtkStatusIcon::size-changed signal expects a boolean return.
2016-03-05 12:11:05 -05:00
Matthias Clasen
8a62a36d2e Update a11y test output
These tests can now assume that the csd header bar will be there.
2016-03-05 10:40:06 -05:00
Matthias Clasen
6ce3c78b7a Run accessibility tests always with CSD
This avoids differences in the output that are caused
by the presence or absence of the header bar.
2016-03-05 10:40:06 -05:00
Piotr Drąg
499c20d85f Updated Polish translation 2016-03-05 14:47:17 +01:00
Rūdolfs Mazurs
154d48ef1a Update Latvian translation 2016-03-05 12:36:09 +02:00
Matthias Clasen
251810ff40 inspector: Avoid pointless selections
The CSS selector and the class hierarchy are purely
informative, no need to select anything here.
2016-03-05 00:35:08 -05:00
Matthias Clasen
e69c1c5a9b inspector: More grid lines
I had forgotten the css property list.
2016-03-05 00:34:39 -05:00
Matthias Clasen
360bad6865 inspector: Some ui refinements
Remove pointless expanders from lists, add grid lines and,
in some places, tree lines.
2016-03-05 00:29:06 -05:00
Matthias Clasen
fa36f34fcf Update expected output of a11y tests
The window type attribute shows up here now.
The caret mode changes also affect some tests.
2016-03-04 23:51:39 -05:00
Matthias Clasen
2b1fc6166c a11y: Expose window type hint as attribute
This was an old request, maybe still useful.

https://bugzilla.gnome.org/show_bug.cgi?id=468122
2016-03-04 23:50:50 -05:00
Matthias Clasen
92662828ba messagedialog: Respect the gtk-keynav-use-caret setting
We used to always make the labels in message dialogs selectable,
which is a bit problematic wrt. to keynav - the label can
unexpectedly 'turn blue', which irritates some people.

With the new gtk-keynav-use-caret setting, we can now only
make the labels selectable when it is required for accessibilty
reasons.
2016-03-04 22:44:30 -05:00
Matthias Clasen
d8dee2952a gdk: Add an X setting for gtk-keynav-use-caret
This will let us toggle the use-caret setting session-wide.
2016-03-04 22:44:29 -05:00
Matthias Clasen
5c0b589acd text view: Respect gtk-keynav-use-caret
When the gtk-keynav-use-caret setting is TRUE, make the cursor
visible regardless of the cursor-visible property.
2016-03-04 22:44:29 -05:00
Matthias Clasen
c9371f6a18 Add a gtk-keynav-use-caret mode setting
For accessibility reasons, it is useful to have a global setting
that makes carets visible in all text.

https://bugzilla.gnome.org/show_bug.cgi?id=602526
https://bugzilla.gnome.org/show_bug.cgi?id=762799
2016-03-04 22:43:24 -05:00
Cosimo Cecchi
f3e068bb31 range: avoid setting slider coordinates to negative numbers
This can happen if the theme sets a negative margin, but the coordinate
should never be negative.
2016-03-04 18:13:53 -08:00
Cosimo Cecchi
fce344d31f range: factor out a function
We're going to modify this in the next commit.
2016-03-04 18:13:53 -08:00
Matthias Clasen
7f9223b0c8 gtk-demo: Fix up the inline-toolbar example
The inline toolbar in the style classes demo should use
the icons toolbar-style to ensure that the buttons are square.
2016-03-04 20:50:21 -05:00
Matthias Clasen
b84cf5f349 tool button: Update style classes
When changing tool button contents according to the toolbar-style
property, we need to update the style classes to ensure that the
visual style matches.

https://bugzilla.gnome.org/show_bug.cgi?id=760560
2016-03-04 20:50:21 -05:00
Cosimo Cecchi
5a42c2e478 range: fix warning for gadget slider
The slider is not HFW/WFH - just pass -1 to get rid of the warnings.
2016-03-04 17:28:53 -08:00
Olivier Fourdan
cdc580463e gtkwindow: default size with fixed size windows
Allow fixed size windows with a default size to grow or shrink as the
content requires, but not smaller than the given default size.

https://bugzilla.gnome.org/show_bug.cgi?id=762974
2016-03-04 20:17:50 -05:00
Ray Strode
046a4a6e0f gtkapplication-dbus: use application id instead of prgname for SM
gnome-session takes an "app id" for client and inhibitor registration,
This app id is supposed to be a desktop file id (complete with the
.desktop extension), but gtk+ currently uses g_get_prgname ().

This commit changes gtkapplication to use the application id instead,
which is a much more natural fit.  gnome-session is going to be updated
to stop using the .desktop extension, too, so everything is consistent.

https://bugzilla.gnome.org/show_bug.cgi?id=763106
2016-03-04 20:17:26 -05:00
Carlos Soriano
fdde27ea9c gtkplacessidebar: add new other locations with flags signal
We weren't using the open flags on the other locations signal, which
makes impossible for applications like nautilus to act in the same
way that for any other location where the user can choose between
opening in the current view, in a new window or in a new tab.

Add a new signal with an open flags parameter and deprecate
the other-location signal.

https://bugzilla.gnome.org/show_bug.cgi?id=754743
2016-03-04 20:15:52 -05:00
Carlos Soriano
fec0c4c201 Revert "gtkplacessidebar: add open flags to other locations"
This reverts commit 63a204e1c5 since it broke the API.
We will add a new signal instead in an upcomming patch.

https://bugzilla.gnome.org/show_bug.cgi?id=754743
2016-03-04 20:15:52 -05:00
Lapo Calamandrei
303fdfbe8b Adwaita: treeview column header scrollbar top border
add a top border in vertical scrollbars in treeviews.
2016-03-05 02:10:24 +01:00
Matthias Clasen
aadbabf998 wayland: Don't crash with offscreen windows
Use gdk_window_get_effective_toplevel when looking for
a suitable transient parent, to skip over offscreen windows
that we might encounter in the window tree. This fixes
a crash in glade.

https://bugzilla.gnome.org/show_bug.cgi?id=763110
2016-03-04 20:04:43 -05:00
Lapo Calamandrei
eef3153265 Adwaita: shrink scroolbars
erroneusly pushed 15px scrollbars with the previous commit, back
to 13px now.
2016-03-05 02:01:16 +01:00
Lapo Calamandrei
035ce8f18d Adwaita: fix a typo 2016-03-05 01:50:18 +01:00
Lapo Calamandrei
0c987f94c8 Adwaita: scrollbar style rewrite
works correctly with the new gadgettified GtkRange Cosimo nicelly
delivered, as a bonus steppers are styled for overlay indicator
usage as well.
2016-03-05 01:39:13 +01:00
Stas Solovey
756ca38442 Updated Russian translation 2016-03-04 21:41:52 +00:00
Cosimo Cecchi
7ff2f451ce range: add positional style classes to fill/highlight
Requested by Lapo.
2016-03-04 11:57:31 -08:00
Matthias Clasen
832742e1f3 x11: Trap errors around an XRandr call
Apparently, we can get X errors here. Ignore them.
https://bugzilla.gnome.org/show_bug.cgi?id=762907
2016-03-04 14:35:23 -05:00
Olivier Fourdan
adcd1ce2d3 gtkwindow: windows with a fixed size can shrink
One important aspect of non-resizable windows that we need to preserve
is that they shrink when their content requires less size.

Previous changes to allow the default size to be applied to fixed size
windows would have prevented all fixed size windows from shrinking when
their content requires less size.

Allow shrinking for fixed-size windows unless a default size was
specified.

https://bugzilla.gnome.org/show_bug.cgi?id=762974
2016-03-04 14:35:23 -05:00
Balázs Úr
f24ac2f5ab Updated Hungarian translation 2016-03-04 19:15:05 +00:00
Lapo Calamandrei
59badc320e Adwaita: shrink back scale trough
like it was before the GtkRange gadgettification.
2016-03-04 20:09:16 +01:00
Matthias Clasen
69479ceaef wayland: Clean up key repeat timeout
When returning G_SOURCE_REMOVE from a callback, we need
to reset the source id as well.
2016-03-04 13:56:26 -05:00
Matthias Clasen
4d2e7a0314 gadget: Add more details to warning
All the other warnings in this file include the css node name
and the gadget owners type. Be consistent about this.
2016-03-04 13:56:26 -05:00
Matthias Clasen
51b83c4389 gadget: Warn if for_size is too small
It does not make sense to pass a for_size into the size allocation
machinery that is smaller than the min-size in that direction.
Warn if it happens, so we can track it down when it occurs.
2016-03-04 13:43:19 -05:00
Lapo Calamandrei
54858574a3 Adwaita: really fix scale with marks
added a min-height/width compensation too when in fine-tune mode,
so scale with marks and no labels doesn't make the scale node grow
when in fine-tune.
2016-03-04 19:18:43 +01:00
Ray Strode
50598ee08f gtk-launch: add hack to close up dbus-daemon race
If gtk-launch exits before the program it starts fully activates,
then the dbus-daemon may avoid doing the activating method call.

This commit works around the problem by pinging the activated
application, and waiting for a reply.

This is similar to the gvfs-open bug here:

    https://bugzilla.gnome.org/show_bug.cgi?id=746534

https://bugzilla.gnome.org/show_bug.cgi?id=763103
2016-03-04 12:42:37 -05:00
Lapo Calamandrei
88d51a8604 Adwaita: fix a thinko wrt fine-tune scales
added a scale node padding compensation for the trough growth in
fine-tune mode, so now the scale node doesn't grow anymore when
mark labels are present.
2016-03-04 18:36:36 +01:00
Matthias Clasen
7382f3c347 icon helper: Properly update on style change
A GtkCssChange of NULL means 'everything changed!'.
2016-03-04 08:50:52 -05:00
Matthias Clasen
6b2cde94b4 entry: Make progress node invisible when appropriate
We were failing to do that, leading to progress not disappearing
anymore after it was initially shown, in the gtk3-widget-factory
entry progress example.
2016-03-04 08:04:45 -05:00
Cosimo Cecchi
7ccd91c9eb testscale: change example to use upwards labels
There's no example of that in testscale.
2016-03-03 22:06:16 -08:00
Cosimo Cecchi
757b74bed9 Adwaita: fix thinko in fine-tune scale selector
Marks always get class top/bottom, regardless of the scale orientation.
2016-03-03 22:06:16 -08:00
Baurzhan Muftakhidinov
bc49954b3e Updated Kazakh translation 2016-03-04 04:48:34 +00:00
Baurzhan Muftakhidinov
f03efbe2c9 Updated Kazakh translation 2016-03-04 04:09:51 +00:00
fiddlerwoaroof
f3f998efd7 Check if XRRGetOutputInfo returned a null pointer.
Fixes bug 763023: in certain circumstances, XRRGetOutputInfo will return
a null pointer.  This commit adds a check to detect and handle this
return value.
2016-03-03 21:31:26 -05:00
Matthias Clasen
763daf4420 expander: Reinstate rtl allocation behavior
In rtl mode, we must not just reverse the children,
but also allocate from the right. Use the newly introduced
box gadget api to achieve this.

https://bugzilla.gnome.org/show_bug.cgi?id=762945
2016-03-03 21:28:51 -05:00
Matthias Clasen
c48f0d6f8b check button: Reinstate rtl allocation behavior
In rtl mode, we must not just reverse the children,
but also allocate from the right. Use the newly introduced
box gadget api to achieve this.

https://bugzilla.gnome.org/show_bug.cgi?id=762945
2016-03-03 21:28:51 -05:00
Matthias Clasen
c581259e06 box gadget: Add a way to allocate in reverse
This is needed to preserve expected allocation behavior
in rtl mode.
2016-03-03 21:28:51 -05:00
Piotr Drąg
d34161145f Updated POTFILES.skip 2016-03-04 01:52:47 +01:00
Matt Watson
d46d50b761 reftests: add a test for animated box shadow updating clip
This was just fixed by 3e06942847
2016-03-03 16:14:39 -08:00
Matt Watson
35d9702173 reftests: rename util file frame-inhibitor
We'll use the label-text-shadow-changes-modify-clip utils
more generically, lets name the file after its function.
2016-03-03 16:09:13 -08:00
Timm Bäder
8b70115d5e revealer-size: Fix animation setting
Turn animations off before testing, for all test functions containing
"no_animations".
2016-03-03 21:05:37 +01:00
Evangelos Skarmoutsos
00069e2997 Updated Greek translation 2016-03-03 19:02:18 +00:00
Руслан Ижбулатов
a55f1113f5 Remove unused variable 2016-03-03 18:00:44 +00:00
Руслан Ижбулатов
95fe3ec0c9 GDK W32: Fix redrawing during drag-move with no composition 2016-03-03 18:00:43 +00:00
Timm Bäder
e2e330db1a revealer: Don't use TRANSITION_NONE for disabled animations
If animations are disabled, the only difference we need to make is that
we don't have to start the transition. Size requests should remain the
same.

https://bugzilla.gnome.org/show_bug.cgi?id=762996
2016-03-03 18:54:09 +01:00
Timm Bäder
1c544e4237 Add GtkRevealer sizing tests
https://bugzilla.gnome.org/show_bug.cgi?id=762996
2016-03-03 18:54:08 +01:00
Lapo Calamandrei
8b6603bbd6 Adwaita: fix a thinko about toolbar items spacing with margins 2016-03-03 18:02:43 +01:00
Olivier Fourdan
4a729dc233 gtkwindow: Fix regression with fixed size windows
Previous commit to address the default size introduced a regression
with fixed size windows if no default size was given, the resulting
window would end up much smaller than its actual content.
2016-03-03 17:50:19 +01:00
Changwoo Ryu
a37ea5dafd Updated Korean translation 2016-03-03 16:32:06 +00:00
Changwoo Ryu
ae2bf880a9 Updated Korean translation 2016-03-03 16:12:06 +00:00
Lapo Calamandrei
08613dce92 Adwaita: uniform paddings on image-buttons
fixes https://bugzilla.gnome.org/show_bug.cgi?id=762811
2016-03-03 16:12:20 +01:00
Lapo Calamandrei
3549490aa8 Adwaita: use margin for spacing widgets on toolbars
kind of a workaround, this approach is pretty unmaintainable, I
hope we'll get a CSS property for spacing directly on the parent
container (a toolbar in this particular case).
See https://bugzilla.gnome.org/show_bug.cgi?id=762397
2016-03-03 16:01:46 +01:00
Olivier Fourdan
0f95472581 gtkwindow: Use default size even if not resizable
If a window is not resizable (with gtk_window_set_resizable ()),
the size given with gtk_window_set_default_size() is ignored.

The solution to this would be to use gtk_widget_set_size_request() but
that's a GtkWidget API and therefore does not take into account the
client side decorations when in use with GtkWindow.

Refactor the code so that gtk_window_set_default_size() (which is a
GtkWindow API) gives the expected result on non-resizable windows as
well.

bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=762974
2016-03-03 09:13:32 +01:00
Руслан Ижбулатов
7eb9f5f8ef W32: Prefer CSD by default
Will make GTK+ more willing to use CSD for all normal windows without
being asked to. Lack of desktop composition will, of course, prevent
it from using CSD (in theory).

GTK_CSD=0 will force CSD to NOT to be used whenever
possible (i.e. in cases where CSD is not specifically requested
by a window, by design).

https://bugzilla.gnome.org/show_bug.cgi?id=759899
2016-03-03 07:41:06 +00:00
Руслан Ижбулатов
ba89fbd72d GDK W32: Set default cursor from our own theme right away
Otherwise WM-dependent default cursor is used, which does not
match our theme. Worse, later GDK will realize that we have
our own left_ptr cursor and will apply it after all, making
the discrepancy even more noticeable.

https://bugzilla.gnome.org/show_bug.cgi?id=762902
2016-03-03 07:20:02 +00:00
Руслан Ижбулатов
84ddc6aab1 GDK W32: Force correct mouse cursor for custom resize/move
* Explicitly grab the device, setting appropriate cursor on it.
* Fix gdk_device_virtual_set_window_cursor() to just set the
  cursor, without trying to check that mouse is over the given
  window. Also prevent it from immediately resetting cursor.
* Alse take into account things that happen in other parts of
  GDK - don't look for replacement cursor, GDK already did that,
  and don't create a default arrow cursor instead of NULL,
  GDK-W32 already did that up the stack as well.
  Warn about inappropriate cursor == NULL argument instead.

https://bugzilla.gnome.org/show_bug.cgi?id=762711
2016-03-03 07:17:46 +00:00
Cosimo Cecchi
8ebc03a1d1 range: use border allocation for gadget hit test
The border is typically part of the reactive part of the widget. This
matches the pre-gadget behavior.
2016-03-02 22:23:11 -08:00
Руслан Ижбулатов
f9ed3fdd7b GDK W32: Implement gdk_win32_screen_get_monitor_workarea()
https://bugzilla.gnome.org/show_bug.cgi?id=763012
2016-03-03 05:29:12 +00:00
Matthias Clasen
0b156ea096 Document the .circular style class 2016-03-02 19:12:10 -05:00
Cosimo Cecchi
1395f3a838 scrolledwindow: fix left/right thinko for scrollbar style classes
"left" and "right" were inverted, preumably because the position type
parameter refers to the scrolled window position, and not the scrollbar
itself.
2016-03-02 16:08:19 -08:00
Benjamin Otte
3e06942847 widget: Add brute force method to propagate clip
When a gtk_widget_queue_allocate() on some widget increases the clip,
widget->parent's clip was not updated. This appraoch naively just
unions widget's new clip with widget->parent's clip.

This of course only works if widget and parent share the same GDK
window. In the cases where they don't we can't do anything and need a
better fix.

Fixes label-text-shadow-changes-modify-clip.ui reftest.
2016-03-03 00:43:59 +01:00
Stas Solovey
05d1437e62 Updated Russian translation 2016-03-02 23:21:51 +00:00
Lapo Calamandrei
76ea3a15cb Adwaita: more scale style fixes 2016-03-02 23:10:26 +01:00
Руслан Ижбулатов
c05f254a6e GDK W32: Use layered windows
Toplevels are now true layered windows that are moved,
resized and repainted via UpdateLayeredWindow() API call.
This achieves transparency without any extra effort,
and prevents window size and window contents desychronization
(bug 761629).

This also changes the way CSD windows are detected. We now
use window decorations to detect CSDiness of a window,
and to decide whether a window should be layered (CSD windows should
be) or not.

Decorations are now stored in the window implementation,
not as a quark-based property of the window-as-gobject.

https://bugzilla.gnome.org/show_bug.cgi?id=748872
2016-03-02 21:42:50 +00:00
Руслан Ижбулатов
e03946bd28 GDK W32: custom (non-WM) drag-move and drag-resize code
Normally works only on CSD windows, non-CSD windows continue
to use WM modal loop for drag-resizing and drag-moving. However,
if it is activated on non-CSD windows, it does work.

Has the advantage of being completely immune to AeroSnap.
AeroSnap only worked partially on CSD windows, with the only part
that worked being "don't let users drag window titlebar outside of
the desktop". Now AeroSnap doesn't work on windows moved by
this code at all, which is good, since they currently don't work
well with it due to the way shadows are drawn.

It's possible to also re-implement AeroSnap (or something similar),
but that is a story for another commit.

This code was originally intended to fix the problem of window
size and window contents desynchronization, but failed to achieve
that result in the end. Nevertheless, it serves as a foundation for
other changes to the way window resizing works.

https://bugzilla.gnome.org/show_bug.cgi?id=761629
2016-03-02 21:39:32 +00:00
Lapo Calamandrei
597151c736 Adwaita: fix scale with marks size 2016-03-02 21:54:19 +01:00
Daniel Mustieles
d4cda10830 Updated Spanish translation 2016-03-02 21:36:59 +01:00
Lapo Calamandrei
fde1aac57a Adwaita: scale with marks style fixes
after GtkRange gadgettification the theme needs some adjustments
for the new widget structure.
2016-03-02 21:35:38 +01:00
Matthias Clasen
4a5801b902 combobox: Correct the CSS node docs
The box was somehow overlooked in the diagrams.
2016-03-02 15:20:47 -05:00
Matthias Clasen
8205a304e8 Add a css node test for comboboxes 2016-03-02 15:20:31 -05:00
Lapo Calamandrei
d3ca8aaf83 Adwaita: fix combos styling
since now the combobox childrens are in a box.
2016-03-02 20:55:19 +01:00
Cosimo Cecchi
b1144a73de scale: don't add scale label for empty markup
This is a regression from the gadget port.
2016-03-02 11:17:08 -08:00
Aurimas Černius
a87e18ca6f Updated Lithuanian translation 2016-03-02 20:42:40 +02:00
Ray Strode
b5281837d6 wayland: synchronize key repeat with server
key repeat is handled client side, which means stalls in the compositor
dispatching key release events can lead to fictious repeat events.

This commit ties key repeat to a server roundtrip to ensure the client
and server are in sync.

https://bugzilla.gnome.org/show_bug.cgi?id=757942
2016-03-02 13:07:12 -05:00
Ray Strode
551f1742f5 wayland: handle key up events earlier in deliver_key_event
We don't need the key repeat rate or anything like that when
handling key up events, so do key up events first before querying
for that information.

https://bugzilla.gnome.org/show_bug.cgi?id=757942
2016-03-02 13:07:12 -05:00
Ray Strode
619799ba3b wayland: make deliver_key_event return void
deliver_key_event is sometimes called from a timeout handler and
sometimes called directly.  We currently erroneously return TRUE
(G_SOURCE_CONTINUE) in the case where it's called directly, but to
no ill effect, since we ignore that return value. In the future,
we're going to need to call it directly in other parts of the code
where the return value would be relevant and handling TRUE, would
require adding redundant code.

Instead, this commit just changes the code to always reset the timer
manually, and never rely on glib's ability to automatically reset
the timer by returning TRUE.  This makes the code smaller, too, since
there's less special casing required.

https://bugzilla.gnome.org/show_bug.cgi?id=757942
2016-03-02 13:07:12 -05:00
Benjamin Otte
89121e058a win32 theme: Add a naive switch implementation
I couldn't come up with anything better than a button on a button.
But the Windows theme sucks...
2016-03-02 14:49:37 +01:00
Benjamin Otte
8e3bc96d78 win32 theme: Implement horizontal spinbuttons 2016-03-02 14:49:37 +01:00
Benjamin Otte
222c43fc60 combobox: Put child into box
Put the combobox child into the box we added for this purpose. That way,
we don't have to maintain the child's position ourselves anymore.
2016-03-02 13:54:39 +01:00
Benjamin Otte
a380533336 container: Remove check
The check is not working for many containers anymore as they are not the
direct parents of their children. We want to allow this behavior in more
places.
2016-03-02 13:54:39 +01:00
Benjamin Otte
c3d3bf61e4 combobox: Put the button in a box
This is so we can put the entry into the box in the next commit.
2016-03-02 13:54:39 +01:00
Benjamin Otte
04d9577cb7 combobox: Make sure the cellview expands
Windows theme needs the expansion for correct drawing of the focus
outline.
2016-03-02 13:54:39 +01:00
Benjamin Otte
13b320ecb2 combobox: Ensure an entry gets created for has_entry combos
Previously add/remove on the combobox would result in a cellview being
created.
2016-03-02 13:54:39 +01:00
Fran Dieguez
77d624a8f7 Updated Galician translation 2016-03-02 09:46:21 +00:00
Rico Tzschichholz
1e27fe83ea mir: display->list_devices vfunc was dropped
See 4a6f8a065a

https://bugzilla.gnome.org/show_bug.cgi?id=762891
2016-03-02 10:24:44 +01:00
Chun-wei Fan
5e00f5fdce Fix last commit
We need to drop the reference to it in configure.ac as well...
2016-03-02 16:53:27 +08:00
Chun-wei Fan
ea8873da55 MSVC build: Drop crypt implementation for MSVC
We are actually not using the crypt() in GDK-Broadway for quite a while,
so the code implementation for MSVC is actually not used.  So, it's time
to get rid of this.
2016-03-02 16:52:30 +08:00
Yosef Or Boczko
5d8fd8ab3c Updated Hebrew translation 2016-03-02 09:39:24 +02:00
Yosef Or Boczko
72d766445d Updated Hebrew translation 2016-03-02 09:37:20 +02:00
Chun-wei Fan
e15ab84e35 MSVC builds: Re-arrange include paths
Search also for the headers in include/gio-win32-2.0, as gio.h will
include those headers at some point, and arrange the include paths in a
dependency hierarchy style, top-to-down.
2016-03-02 13:02:30 +08:00
Matthias Clasen
2a8355f679 3.19.11 2016-03-01 23:25:56 -05:00
Matthias Clasen
444703f2bb css node tests: Update notebook results
This is fallout from changing the tab states.
2016-03-01 23:25:56 -05:00
Olivier Fourdan
de383809f6 wayland: Check actual impl type in transient loop
If the parent of a transient is not a native Wayland window (e.g.
offscreen window), the transient loop check will crash.

Check for the actual type in the transient loop check and do not assume
the parent is necessarily Wayland native.

bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=761156

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2016-03-01 22:18:32 -05:00
Jonas Ådahl
9e2207b2b0 gdk: Compress window state events
If there are already a window state event for a given window queued
when the window state is changed, drop that event and queue a new event
with a changed_mask based on the state before last event that was queue
without compression.

https://bugzilla.gnome.org/show_bug.cgi?id=762468
2016-03-02 10:22:17 +08:00
Matthias Clasen
956b2ff998 progressbar: Don't leave css nodes behind
We create and destroy gadgets inside the hierarchy here,
and if we don't explicitly remove their CSS nodes from the parent,
they stick around.
2016-03-01 16:00:54 -05:00
Matthias Clasen
577783a19d scale: Don't leave css nodes behind
We create and destroy gadgets inside the scale hierarchy here,
and if we don't explicitly remove their CSS nodes from the parent,
they stick around.
2016-03-01 15:58:21 -05:00
Cosimo Cecchi
5889d2520f Adwaita: fix outline for scale trough 2016-03-01 12:54:01 -08:00
Matthias Clasen
cb614cc838 range: Don't leave css nodes behind
We create and destroy gadgets inside the range hierarchy here,
and if we don't explicitly remove their CSS nodes from the parent,
they stick around.
2016-03-01 15:48:01 -05:00
Matthias Clasen
37007c47a5 level bar: Don't leave css nodes behind
We create and destroy gadgets inside the levelbar hierarchy here,
and if we don't explicitly remove their CSS nodes from the parent,
they stick around.
2016-03-01 15:35:32 -05:00
Matthias Clasen
87e71afd50 cell renderer: Strip out :drop(active) state
It does not make sense to render every cell in a treeview as
drop target, even when the treeview itself is set as a drop destination.

https://bugzilla.gnome.org/show_bug.cgi?id=761686
2016-03-01 15:18:34 -05:00
Matthias Clasen
6230319dba Updates 2016-03-01 15:09:10 -05:00
Matthias Clasen
eff97fd55f Take a reference on the im context for async ops
This might fix the crash in yelp that some people continue
to see.

https://bugzilla.gnome.org/show_bug.cgi?id=762887
2016-03-01 07:59:15 -05:00
Olivier Fourdan
3607b9aa2e wayland: Restore size when configure size is 0x0
According to xdg_shell, an xdg_surface.configure with size 0x0 should
be interpreted as that it is up to the client to set a size.

When transitioning from maximize or fullscreen state, this means the
client should configure its size back to what it was before being
maximize or fullscreen.

This problem currently only occurs on weston because weston sends a
configure with size 0x0 when transitioning back from maximize or
fullscreen.

bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=762713
2016-03-01 13:15:02 +01:00
Anders Jonsson
9f08029966 Updated Swedish translation 2016-03-01 09:13:42 +00:00
Benjamin Otte
61f5562f9f notebook: Tell everyone we reordered stuff
Fixes keybindings for reordering actually emitting signals and properly
updating CSS/the screen.
2016-02-29 23:17:00 +01:00
Benjamin Otte
a74bb0dec4 notebook: Reallocate tab gadgets when we reorder them
Otherwise they stay in their position and don't cause a redraw. Which
really confuses Epiphany users apparently.

https://bugzilla.gnome.org/show_bug.cgi?id=762720
2016-02-29 22:00:03 +01:00
Paolo Borelli
fa43edd244 gdk: implement gdk_display_list_devices using GdkSeat
Now that the function is factored out in a single place, we can
refactor it to not use deprecated API.
2016-02-29 21:54:01 +01:00
Paolo Borelli
4a6f8a065a gdk: remove the display->list_devices vfunc
gdk_display_list_devices is deprecated and all the backends
implement the same fallback by delegating to the device manager
and caching the list (caching it is needed since the method does
not transfer ownership of the container).
The compat code can be shared among all backends and we can
initialize the list lazily only in the case someone calls the
deprecated method.

https://bugzilla.gnome.org/show_bug.cgi?id=762891
2016-02-29 21:53:58 +01:00
Cosimo Cecchi
d000b212c6 range: fix fill level for vertical inverted scales 2016-02-29 12:53:08 -08:00
Cosimo Cecchi
5a83787dc0 Update CSS nodes documentation 2016-02-29 10:45:14 -08:00
Cosimo Cecchi
bb55a1a958 scale: add gadgets for indicator/label in scale marks
This will allow us to theme them indepdendently, and specify a size for
the indicator from the theme.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
7bd3d87eeb scale: add a gadget for every mark
We want to add another gadget for the mark indicator. This will allow us
to do so.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
74a8bbfd38 Adwaita: add minimum size for marks
It's still suboptimal, because there's no way to control the size of the
indicator alone, but this does the job for now.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
0fb50dc9a8 gadget: improve debug message 2016-02-29 10:45:14 -08:00
Cosimo Cecchi
0c8dbf07ce range: draw slider on top of all contents
This is so that e.g. the focus ring is drawn under the slider.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
cdd7a7bdcd scale: implement rendering for marks gadgets
This completes the conversion of scale marks to gadgets.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
1a8eb9fefa scale: implement size allocate for mark gadgets
This allows to move the mark sections around with e.g. margins.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
562a501f3b scale: port marks size request to gadgets 2016-02-29 10:45:14 -08:00
Cosimo Cecchi
2f420d0e14 scale: use gadgets instead of nodes for mark containers
The gadget is not yet allocated though.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
b73d274d55 scale: rename function arguments
To make them clearer. No functional change here.
2016-02-29 10:45:14 -08:00
Cosimo Cecchi
8d5d16ae56 scale: remove unused argument
It's always GTK_POS_TOP.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
bc41ff8af4 range: better hack for GtkColorScale
Just draw the slider, since that is the only thing GtkColorScale cares
about.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
887b6d65a1 range: deprecate gtk_range_get/set_min_slider_size()
Nothing uses these functions inside GTK anymore.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
424f17c0fb range: don't use gtk_range_set_min_slider_size()
The way this method is used from the GtkRange subclasses doesn't really
work well when the slider properties change as a consequence of e.g. a
style class being applied (e.g. the fine-tune style class).

In fact, there's no need to read the minimum slider size out of band,
and we can obtain the same result in a way that always work by setting a
private property on GtkRange.
2016-02-29 10:45:13 -08:00
Lapo Calamandrei
0468ff1545 Adwaita: some more WIP theme work for the new scale 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
3ff66edb6b gadget: simplify code 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
0883ff5eed range: use border box for slider area
Since we can use negative margins, we should not use the margin box
for the slider area. Use the border box instead, since that's what is
typically mapped to the visible area.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
6ecab5ee6b range: use new GtkCssGadget API instead of rolling our own 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
44178c0541 gadget: add API to get various area boxes
Compared to the function returning the allocation, these will return the
box in gadget coordinates.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
2d2a81682d range: simplify code
Instead of directly accessing the widget allocation, we can use the
gadget API to test whether the coordinates are in the main gadget.
2016-02-29 10:45:13 -08:00
Lapo Calamandrei
622f5aef4e Adwaita: WIP for new range theme 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
d1433c25f3 range: add a gadget for the whole widget area
This commit introduces another node, called "contents", that holds the
main contents of the range. This allows for the main gadget itself to
span across the whole surface of the widget now.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
a9ea544f3d scale: always add marks at the beginning or the end
Marks are always either the first or the last child of the scale.
2016-02-29 10:45:13 -08:00
Cosimo Cecchi
1d047f0097 range: use new GtkBoxGadget API instead of counting children 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
6370d6cb27 boxgadget: add APIs to insert gadgets next to siblings 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
6401e2405e range: use new GtkBoxGadget API instead of removing/inserting 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
06776d3d2f boxgadget: add API to set expand/align flags for gadget child 2016-02-29 10:45:13 -08:00
Cosimo Cecchi
6827bd5e04 range: move slider drawing where it belongs
The slider gadget is a child of the trough gadget, so draw it from
there.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
f0d9afd300 scrollbar: deprecate min-slider-length style property
In favor of min-height/min-width, like we did for other similar
properties.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
0974b0d843 range: whitespace fix 2016-02-29 10:45:12 -08:00
Cosimo Cecchi
fb11cc1baf range: remove border allocation hack
We can achieve the same result with a negative margin.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
1a116b9a95 colorscale: don't use style properties to determine slider size 2016-02-29 10:45:12 -08:00
Cosimo Cecchi
8b87eca11e Revert "range: move GtkColorScale special case to GtkColorScale"
This reverts commit d93d266ed9e3e26e382a4f6d4b5d4ea19eff3bcf.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
b927fc0874 Revert "range: simplify code"
This reverts commit a74f7dcaf8a02c96c6bfecab6969e1d33ecb9332.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
a7099d1468 range: simplify code
Now that everything is in the main gadget, we can just let it propagate
drawing to its children.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
b6f0b6be87 range: move GtkColorScale special case to GtkColorScale
Now we can just tweak the node visibility for it.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
cbbe237c18 range: remove special case that's not needed
We already set the gadget not to be visible in that case.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
ddb863e523 range: move slider inside the trough
This will require a rewrite of most of the theme, but it's the right
thing to do.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
d1c5ecfaef scale: deprecate slider-length style property
This can be achieved using min-height/min-width CSS properties now.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
c1eff2cce5 range: deprecate more style properties
These are never read now.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
413b9d5b3c range: continue porting to GtkGadgets
This commit rewrites a lot of the GtkRange internals to make full use
of the gadget structure.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
e9fe46ea5f gadget: add hit test functions
These will be useful in later commits.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
8c43b3ee60 range: remove unused code 2016-02-29 10:45:12 -08:00
Cosimo Cecchi
6c19947859 range: remove call that is not needed
gtk_range_calc_slider() already calls the same function when needed.
2016-02-29 10:45:12 -08:00
Cosimo Cecchi
83a6471c4e range: simplify code a bit 2016-02-29 10:45:11 -08:00
Cosimo Cecchi
d19215015e range: don't call gtk_range_calc_layout() in realize()
This should not be needed, and we want to get rid of
gtk_range_calc_layout().
2016-02-29 10:45:11 -08:00
Cosimo Cecchi
1f9de3cfec range: deprecate arrow-scaling style property
This can be done with CSS now.
2016-02-29 10:45:11 -08:00
Cosimo Cecchi
3b37f2a42a range: use newer GtkCssGadget API 2016-02-29 10:45:11 -08:00
Cosimo Cecchi
d0c671ddfe range: deprecate trough-under-steppers
It's not clear what this would do in a CSS world, and all the themes set
it to TRUE anyway...
2016-02-29 10:45:11 -08:00
Cosimo Cecchi
4bb0a8db47 range: first pass at porting to gadgets
There's still a lot to be done, but this is functional and we'll improve
the loose ends in the next commits.
2016-02-29 10:45:11 -08:00
Matthias Clasen
10e24b8e19 Move the level bar release note to the right section 2016-02-29 13:17:39 -05:00
Paolo Borelli
33ac51ea72 win32: init wintab when the device manager is constructed
No need to call a method explicitely after creating the object
2016-02-29 18:25:01 +01:00
Paolo Borelli
e9d2a622e2 win32: actually call _gdk_win32_screen_on_displaychange_event
41a371c435 factored out a method
but I forgot to actually amend the commit to call the new function
2016-02-29 18:25:01 +01:00
Ray Strode
316fe1dbbd wayland: deal with staging buffer getting allocated prematurely
The staging buffer gets allocated any time begin_paint is called
on the window. This can happen even with an empty paint region,
so we should cope with that situation. At the moment we crash
trying to post a runtime warning.

https://bugzilla.gnome.org/show_bug.cgi?id=762755
2016-02-29 10:52:00 -05:00
Jordi Mas
6ad67451f4 Fixes to Catalan translation 2016-02-29 16:34:30 +01:00
Timm Bäder
41119057dd frame: Fix horizontal size request
We were adding the border gadget size and the label widget size in any
case, but when calculating the width, we want the maximum of those two,
not the sum.

https://bugzilla.gnome.org/show_bug.cgi?id=760482
2016-02-29 14:19:38 +01:00
Paolo Borelli
38ad57948c gdk: remove the core_pointer field from GdkDisplay
It is not used anymore, so no need to set it

https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-02-29 14:15:04 +01:00
Paolo Borelli
502744be85 quartz: get the core pointer from the device manager
https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-02-29 14:15:04 +01:00
Paolo Borelli
539b1083de broadway: get the core pointer from the device manager
https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-02-29 14:15:04 +01:00
Paolo Borelli
363f9c9571 gdkdisplay: get the pointer device from the default seat
https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-02-29 14:05:00 +01:00
Paolo Borelli
807c0c0a56 gdkwindow: get the pointer device from the default seat
https://bugzilla.gnome.org/show_bug.cgi?id=762820
2016-02-29 14:05:00 +01:00
Matthias Clasen
ee217dc823 Add and use GDK_CHECK_DEBUG macro
This is following what we've already done in GTK+. It avoids
direct access to _gdk_debug_flags all over the place.
2016-02-28 21:40:30 -05:00
Matthias Clasen
2ad19c70ce x11: Don't use g_print for debug output
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
2016-02-28 21:40:24 -05:00
Matthias Clasen
29c1263c4b wayland: Don't use g_print for debug output
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
2016-02-28 21:40:23 -05:00
Matthias Clasen
2a2d254a8b quartz: Don't use g_print for debug output
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
2016-02-28 21:40:23 -05:00
Matthias Clasen
2801f3c843 gdk: Don't use g_print for debug output
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
2016-02-28 21:40:23 -05:00
Matthias Clasen
b1d691dbfd testsuite: Fix up icontheme test
This test was relying on GtkIconTheme using g_print for
debug spew. Adapt it to use g_logv instead.
2016-02-28 21:40:23 -05:00
Matthias Clasen
2ee7fb1818 Don't use g_print for debug output
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
2016-02-28 21:40:23 -05:00
Matthias Clasen
0ac71e81cf Drop some unused debug printfs
Remove some debug spew that has been ifdef'ed out for years
and does not look useful enough to keep.
2016-02-28 21:40:23 -05:00
Cosimo Cecchi
8e1368e6de widget: make sure to check all children for allocation needs
GtkWidget uses gtk_container_foreach() to iterate over children and
check whether they need their allocation reset.
However, that leaves out internal children, such as scrollbars of a
GtkScrolledWindow. Use gtk_container_forall() instead.
2016-02-28 12:30:16 -08:00
Paolo Borelli
187027942c gdk: remove _gdk_event_queue_prepend
It is never used
2016-02-28 19:05:53 +01:00
Matthias Clasen
e0caafbcdf display: Don't change default seat in flight
gdk_display_add_seat was prepending new seats to the list, which
was effectively making the added seat the new default. Since that
is probably not intended, append to the list.
2016-02-28 12:31:20 -05:00
Matthias Clasen
9dad9a4b59 testsuite: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
7bd1012e51 tests: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
664b166838 wayland: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
4f422d1f5b quartz: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
1c887b2287 gdk: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
697efcd4bc x11: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
94342300a8 broadway: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
492ea59698 examples: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
435c8c9f0d gtk-demo: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Matthias Clasen
bbd94b5a9f gtk: Strip newlines from g_warning and g_error
g_logv adds one for us already.
2016-02-28 12:23:12 -05:00
Paolo Borelli
72b40266bd gdkwindow: cleanup, avoid direct access to display members 2016-02-28 18:22:42 +01:00
Piotr Drąg
450b39f4e4 Updated POTFILES.skip 2016-02-28 17:11:05 +01:00
Paolo Borelli
aaed73671c win32: close the screen when disposing the display 2016-02-28 15:53:52 +01:00
Matthias Clasen
54ebe5d3c5 Add a release note about subclassing
This is showing up in bug reports like
https://bugzilla.gnome.org/show_bug.cgi?id=762754
so better add a note that gives a hint at the solution.
2016-02-28 09:38:31 -05:00
Timm Bäder
870a5b424f frame: Don't move border gadget and child down
Setting label-yalign should affect the border gadget, but we need to
compensate for its position by moving the child down or up, depending on
the border gadget's position, so the child never moves.

https://bugzilla.gnome.org/show_bug.cgi?id=762123
2016-02-28 09:24:21 -05:00
Emmanuele Bassi
d59c796a9d Fix builddir != srcdir
The gdkprivate-wayland.h header file is included from the top-level gdk
directory; this means that all included files referenced in the header
must be relative to the `gdk` directory, otherwise the build will fail
when the build directory is not equal to the source directory.

This commit fixes a build failure under continuous:

In file included from ../../gdk/gdkdisplaymanager.c:60:0:
../../gdk/wayland/gdkprivate-wayland.h:40:51: fatal error:
gtk-primary-selection-client-protocol.h: No such file or directory
 #include "gtk-primary-selection-client-protocol.h"
                                                   ^
compilation terminated.
Makefile:1155: recipe for target 'libgdk_3_la-gdkdisplaymanager.lo' failed
make[4]: *** [libgdk_3_la-gdkdisplaymanager.lo] Error 1
2016-02-28 12:21:26 +00:00
Paolo Borelli
41a371c435 win32: factor out on_displaychange_event method for the screen
This allows us to make more initialization methods private to the
screen object.
2016-02-28 12:19:08 +01:00
Paolo Borelli
48d693ea80 win32: make init_root_window private to the screen object
It can be called during the screen object initilization
2016-02-28 12:18:58 +01:00
Paolo Borelli
b20f80e65a win32: move function
Just reorder code in preparation to calling functions defined
before this one
2016-02-28 11:53:10 +01:00
Paolo Borelli
00f396dea9 win32: rename initialization function for clarity 2016-02-28 11:50:07 +01:00
Paolo Borelli
58e169c04c win32: do not confuse gtk-doc 2016-02-28 11:37:38 +01:00
Paolo Borelli
e48bd2e00b win32: move gdkvisual code in gdkscreen
Except for the init function, all the visual related code is made
of gdkscreen vfuncs, so let's move it to gdkscreen-win32. This way
we avoid keeping other static variables and instead store the info
inside the screen struct.
2016-02-28 11:37:38 +01:00
Matthias Clasen
0f3a211d35 gtk-demo: Simplify ui files a bit
Strip unneeded IDs.
2016-02-28 00:00:03 -05:00
Matthias Clasen
492fec6294 gtk-demo: Put hte app menu in a separate file
No need to cram it in the same file as the main window.
2016-02-27 23:43:06 -05:00
Matthias Clasen
9d5ad67c91 gtk-demo: Add some padding in sidebar
Add some padding on the right, to avoid the scrollbar and make
the sidebar appear balanced.
2016-02-27 23:35:33 -05:00
Matthias Clasen
213f74fe82 tutorial: Drop excessive margin from headerbar
It is no longer necessary to add extra margins around the
center child in a headerbar.
2016-02-27 23:28:17 -05:00
Matthias Clasen
87554eb57a widget-factory: Make the sliding opt-in
The sliding is a little disorienting, so turn it off by default
and add a checkbutton for it in the gear menu.
2016-02-27 23:12:15 -05:00
Matthias Clasen
98a36955fe file chooser: Don't ellipsize "Other Locations"
It just looks wrong if the file chooser comes up with
"Other Locations" ellipsized. Treat it like the other
fixed entries. We only want to ellipsize bookmarks, because
their length is unpredictable.
2016-02-27 23:03:55 -05:00
Matthias Clasen
a7a934a60c gtk3-demo: Update css
Clean up any deprecation warnings from the css examples in
gtk3-demo.
2016-02-27 22:39:09 -05:00
Jordi Mas
9b71a9b4ae Update Catalan translation 2016-02-27 20:22:55 +01:00
Benjamin Otte
3463031929 win32 theme: Implement GtkFrame 2016-02-27 17:23:44 +01:00
Benjamin Otte
39bfac0876 win32 theme: Remove special case for notebooks
The special case is coded into Wine, but it makes notebooks
disappear wrong. So remove it.
2016-02-27 17:03:49 +01:00
Benjamin Otte
5d34ee729d win32: Implement fallback code for tabs
This is naive code in that it doesn't do the rounded edges for the
tab items yet. We can fix that later I guess.
2016-02-27 14:34:33 +01:00
Benjamin Otte
b18e64e6c6 win32: Add fallback drawing code for window frames 2016-02-27 14:34:33 +01:00
Benjamin Otte
879333d226 win32: Finish button drawing code
We now draw real Windows 95 buttons.

Also split out a draw_edge() function that is supposed to emulate
Windows' DrawEdge() function. I guess we'll need it in other places,
too.
2016-02-27 14:34:33 +01:00
Paolo Borelli
70d689cddd gdk: calculate pixel color shift and precision lazily
This gets rid of the decompose_mask utility entirely and simplifies
backend code.
2016-02-27 12:27:54 +01:00
Paolo Borelli
f73e7680ed gdk: factor out utility shared among backends
Removes duplicated code and makes sure we use the version which
is safe against infinite loops
2016-02-27 10:46:59 +01:00
Benjamin Otte
053e549dbc notebook: Redo notebook implementation
So far, this only reworks the tabs at top implementation.
Windows doesn't have support for theming tabs at left/right/bottom
so we need to figure out what to do there. Wine falls back to
unthemed code.
2016-02-27 05:15:57 +01:00
Benjamin Otte
245d217e06 boxgadget: Add ability to draw children in reverse
This is necessary for GtkNotebook so that the stack is always drawn
before the header.
And that is necessary so that the active tab can use negative
margins to overdraw the border of the stack to create a gap and
simulate old GTK2-style visuals for notebooks.
2016-02-27 03:59:20 +01:00
Benjamin Otte
a2fa647199 cssimagewin32: IMplement printing
Caveat: over() and margins() arent' printed, but they are soon gonna
be removed anyway.
2016-02-27 03:59:20 +01:00
Benjamin Otte
e45cb3340c window: Include decoration border and padding in resize area
This is relevant for the Windows theme, which is the only theme that
uses padding on decorations. All other themes are unaffected.
2016-02-27 03:59:20 +01:00
Benjamin Otte
cdb1cda68b notebook: The active tab is now :checked
:active is reserved for "mouse button down on node", so we have to use
something else. And stack switcher and radio buttons use :checked for
the active widget, so it makes sense to use :checked for the active tab,
too.

Themes have been adapted.

TODO: Implement :active for tabs.
2016-02-27 03:48:46 +01:00
Benjamin Otte
6b4788c3ea textview: Support borders in text node 2016-02-27 03:39:51 +01:00
Benjamin Otte
d7bc0fd24c textview: Fix coordinates when background drawing of text node
Fixes black areas in source view of gtk-demo.
2016-02-27 03:27:39 +01:00
Matthias Clasen
914f7bd6e4 wayland: Survive without primary selection
I am testing GTK+ master against mutter 3.19.90, so I'd
like GTK+ to survive even when the compositor does not
support the primary selection interface.
2016-02-26 19:48:05 -05:00
Cédric Valmary
b72996cde4 Updated Occitan translation 2016-02-26 20:56:32 +00:00
Matthias Clasen
ca3d87ce70 Avoid an out-of-bounds access
When the offset gets smaller than min_offset, we can't
access the array at that position.
2016-02-26 15:52:19 -05:00
Matthias Clasen
8ff40b5d14 Plug a small memory leak 2016-02-26 15:52:19 -05:00
Matthias Clasen
88e372cd09 infobar: Avoid a memory leak in an error case
Parsing <action-widgets> could sometimes fail to free
some of the data, if a nonexisting widget is referenced.
Found by gcc's leak sanitizer.
2016-02-26 15:52:19 -05:00
Matthias Clasen
c784d5d700 levelbar: Avoid a use-after-free
We were freeing the old offset before using its name to
recreate a new one. Don't do that.
Found by gcc's undefined behavior sanitizer.
2016-02-26 15:52:19 -05:00
Matthias Clasen
5ca860dcaf dialog: Avoid a memory leak in an error case
Parsing <action-widgets> could sometimes fail to free
some of the data, if a nonexisting widget is referenced.
Found by gcc's leak sanitizer.
2016-02-26 15:52:19 -05:00
Matthias Clasen
6108c646c5 cssselector: Don't invoke undefined behavior
Avoid undefined behavior in the calculation of some
hash values. Found by gcc's undefined behavior sanitizer.
2016-02-26 15:52:19 -05:00
Matthias Clasen
2cabfcc801 Avoid an a crash with GTK_DEBUG=builder
We might cast objects to GtkBuildable even if they aren't,
to print their names. Don't do that.

Found by gcc's address sanitizer.
2016-02-26 15:52:19 -05:00
Matthias Clasen
9f37557ffc Fix an memory overrun
This was detected by gccs address sanitizer.
2016-02-26 15:52:19 -05:00
Cédric Valmary
3084eca14b Updated Occitan translation 2016-02-26 20:35:37 +00:00
Carlos Garnacho
a2c575e34e wayland: Use the page size as the selection buffer size
And ensure we don't attempt to read EOF twice, once is enough.
2016-02-26 19:59:17 +01:00
Carlos Garnacho
ed3c87df7a wayland: Implement the (so far internal) primary selection protocol
Implement it using the internal copy of the protocol. Otherwise,
we just deal with it the same than clipboard selection, just mapping
it to the PRIMARY atom instead of the CLIPBOARD one.

https://bugzilla.gnome.org/show_bug.cgi?id=762561
2016-02-26 19:59:17 +01:00
Carlos Garnacho
f9f5586714 wayland: Make the function to get the last serial a seat one
This will be useful for primary selection.

https://bugzilla.gnome.org/show_bug.cgi?id=762561
2016-02-26 19:59:17 +01:00
Carlos Garnacho
787e1d7113 wayland: Add gtk-primary-selection protocol
This protocol is an internal mirror of the primary selection drafts
being proposed for wayland-protocols. No changes besides prefix/suffix
changes.

https://bugzilla.gnome.org/show_bug.cgi?id=762561
2016-02-26 19:59:17 +01:00
Lapo Calamandrei
4fd5ad2f07 Adwaita: notebook tab sizing fix 2016-02-26 19:01:55 +01:00
Fredy Paquet
0a6ee5e2cf W32: Fix for commit 1f74f12d9, re-enabling decimal separator key
1f74f12d9 rendered entry of keypad decimal mark unuseable for
several national keyboard layouts, this commit amends that, at
least for W32, and makes GTK+ behave more or less the same way
W32 behaves.

The patch works like this:
- When typing the first character at the keyboard or when switching
  keyboard layouts, the decimal mark character will be cached in the
  static variable "decimal_mark" within gdkkeys-win32.c

- in case of WIN32, gdk_keyval_to_unicode() asks gdkkeys-win32.c for the
  current decimal_mark when converting GDK_KEY_KP_Decimal.

https://bugzilla.gnome.org/show_bug.cgi?id=756751
2016-02-26 17:24:32 +00:00
Lapo Calamandrei
9f606b8270 Adwaita: stricter selector for split headerbar separator
with a descendant select was erroneusly catching normal headerbar
separators in paned split headerabar case, see gedit. Using a child
selector fixes.
2016-02-26 13:15:37 +01:00
Lapo Calamandrei
296a7c24f9 Adwaita: simplify mixed buttons styling 2016-02-26 13:07:09 +01:00
Lapo Calamandrei
1a0b6568fa Adwaita: fix separator in non paned using split headerbar
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=762593
2016-02-26 12:53:02 +01:00
Carlos Soriano
ea9e8221b1 gtkplacessidebar: use gpointers in trash row
It's the right casting. Forgot to push it with the previous patch.
2016-02-26 11:55:05 +01:00
Carlos Soriano
377ac909b7 gtkplacessidebar: clean up trash row on destroy
Track with a weak ref the trash row, so we can clean up the data in the
private struct.

Spotted and reviewed by Christian Hergert.
2016-02-26 11:52:50 +01:00
Gábor Kelemen
c3e56d3d83 Updated Hungarian translation 2016-02-26 09:14:53 +00:00
Руслан Ижбулатов
c61764b0f9 GDK W32: Fix the filling of MINMAXINFO
1) MSDN says that the coordinates of the maximized window
   must be specified as if the window was on the primary display,
   even if nearest display where it ends up is not the primary display.
   So instead of using nearest display work area verbatim,
   use it only to account for taskbar size, while using
   primary display top-left corner (0:0) as the reference point.
2) MSDN says that max tracking size is a system property, we
   should just call GetSystemMetrics() and use that.

https://bugzilla.gnome.org/show_bug.cgi?id=762629
2016-02-26 08:02:03 +00:00
Matthias Clasen
d3f713529a Document CSS win32 size support 2016-02-26 00:13:34 -05:00
Benjamin Otte
34e204952e win32 theme: Make titlebuttons look like they're the right size
This is a hack because we can't really rtesize the buttons.

Instead, we draw the background only over the area that they would
be drawn if they were drawn by Windows. The button is still selectable
outside of this area, but what can you do...
2016-02-26 03:20:42 +01:00
Benjamin Otte
ad204c88ca win32 theme: Fix decorations
... and draw them properly.
2016-02-26 03:20:42 +01:00
Matthias Clasen
5522ce9649 xi2: Add some more debug spew
Log the valuators we use or ignore.
2016-02-25 21:19:31 -05:00
Matthias Clasen
8b93c013c3 inspector: Simplify general tab setup
Factor out the code to create a listbox row with two labels,
and use it throughout.
2016-02-25 20:49:09 -05:00
Matthias Clasen
4f5f299266 inspector: React to device changes
Recreate the device section in the general tab when
devices come or go.
2016-02-25 20:28:23 -05:00
Matthias Clasen
5b2e883161 Remove redundant words from docs
An either without an or doesn't add anything.
2016-02-25 20:16:21 -05:00
Matthias Clasen
f749152efe Fix a copy-paste error 2016-02-25 20:12:53 -05:00
Matt Watson
a051e5677e widget-factory: transition pages
https://bugzilla.gnome.org/show_bug.cgi?id=762642
2016-02-25 19:49:45 -05:00
Benjamin Otte
5df1e98b2a window: Draw decorations in the right place
When we draw our own shadows, we need to offset the calls to render the
background to the border rectangle.
2016-02-25 23:21:29 +01:00
Matthias Clasen
09b1571093 Better baseline adjustment
The way we were adjusting baselines if min-height forces
a size increase was not quite working as intended. Redo
it in a simpler way: just split up the excess and count
half of it for above the baseline and half below.

This fixes button labels in dialogs appearing too low.
2016-02-25 16:36:13 -05:00
Matthias Clasen
a975e733dc fix a typo 2016-02-25 16:17:55 -05:00
Timm Bäder
0213815d2f Move .keycap docs from GtkFrame to GtkLabel
That's where .keycap is used nowadays.
2016-02-25 20:45:33 +01:00
Timm Bäder
77594be976 frame: Measure border gadget separately
https://bugzilla.gnome.org/show_bug.cgi?id=760482
2016-02-25 20:45:33 +01:00
Timm Bäder
3431451463 frame: Let GtkContainer handle border-width
https://bugzilla.gnome.org/show_bug.cgi?id=760482
2016-02-25 20:45:33 +01:00
Matthias Clasen
abd781a2c9 icon helper: Don't set baseline to 0
It is clearly not the intention that the baseline of icons is at
the very top. The visible effect of this was that spin buttons were
higher than expeted, because the box gadget was trying to line up
the baseline of the text with the top of the buttons, forcing extra
height to be requested.

Just don't set a baseline at all for now.
2016-02-25 13:18:02 -05:00
Artur de Aquino Morais
8920b6a650 Updated Brazilian Portuguese translation 2016-02-25 16:30:11 +00:00
Piotr Drąg
40269f4e5d Updated Polish translation 2016-02-25 17:26:45 +01:00
Benjamin Otte
3a9ceffe12 win32 theme: Make entries and textview work 2016-02-25 16:53:22 +01:00
Benjamin Otte
4e8fb33f56 pixelcache: Don't have a style context argument
That would imply the pixelcache monitors the style context for changes
and it doesn't do that.

Its only use case was opacity checks, so add
gtk_pixel_cache_se_is_opaque() instead.
2016-02-25 16:52:58 +01:00
Benjamin Otte
71a9fd9d83 stylecontext: Move background_is_opaque() function
The new way, it no longer depends on the style context, but on the
CssStyle. This will become relevant in the next commit.
2016-02-25 16:52:58 +01:00
Fran Dieguez
374494b928 Updated Galician translation 2016-02-25 15:34:16 +00:00
Ignacio Casal Quinteiro
53fe9c2b0c inspector: use guint to fix the windows build 2016-02-25 15:25:19 +01:00
Carlos Soriano
20cf42c9ea gtkplacessidebar: avoid unresponsive UI while trashing
We were updating the whole places sidebar when the trash changed.
This effectively removes all rows and create new ones for every trash
state change.

Although when using GtkTreeView it was somehow ok, with the new
implementation with GtkListBox this effectively locks the UI while the
trash operations are being performed.

When performing operations for i.e. 100 files, the UI can be locked
for more than 1 minute since gvfs-trash usually takes time.

To fix this just update the icon of the trash when the state of the
trash change instead of the whole sidebar.

https://bugzilla.gnome.org/show_bug.cgi?id=762677
2016-02-25 14:44:40 +01:00
Matthias Clasen
fe4602acc5 inspector: Show ::num-touches for touch devices
This can be useful information.
2016-02-25 08:27:08 -05:00
Matthias Clasen
a4a7740b2f xi2: Set ::num-touches for touch devices
XI2 has this information, so pass it on.
2016-02-25 08:27:08 -05:00
Matthias Clasen
f468f0fbb2 device: Add a num-touches property
Some backends can provide this information for touch devices,
and it can be useful to have, so add this property.
2016-02-25 08:27:08 -05:00
Carlos Soriano
1977994128 gtkplacesview: clean up mount server callback
And fix a warning of unused variable.

Reviewed by Nacho on IRC
2016-02-25 13:45:20 +01:00
Matthias Clasen
e12663378c x11: Update seat capabilities
The default seat implementation was never returning capabilities,
which is broken. It is visible too, since the inspector shows seat
information now.
2016-02-25 06:18:41 -05:00
Matthias Clasen
84ba01d713 inspector: Update for screen config changes
Repopulate the display section whenever the monitor configuration
changes.
2016-02-25 01:22:01 -05:00
Matthias Clasen
15ccdcd25b inspector: Don't show numeric ids
The vendor and product ids for input devices aren't useful
as-is; need to figure out how to translate them to names.
2016-02-25 01:10:23 -05:00
Matthias Clasen
455935a06a inspector: Show more device information
This adds vendor and product id and axes. This reveals that
the GDK backends have quite different quality when it comes
to returning meaningful information here.
2016-02-25 00:49:50 -05:00
Matthias Clasen
03db14c2d6 inspector: Show some basic device information
Add information about seats and their associated devices
in the General tab.
2016-02-25 00:17:09 -05:00
Matthias Clasen
dde33623ca gadget: Warn about missing size allocation
When size_allocate is overridden in widgets, but draw is not,
we can end up drawing a gadget that has not been given a size.

Warn about this, and limp along by drawing the gadget over the
full allocation of its owner widget.

https://bugzilla.gnome.org/show_bug.cgi?id=762614
2016-02-24 22:22:11 -05:00
Matthias Clasen
c75a833633 x11: More fake tablet blacklisting
Sigh.

Now that we've neutered the QEMU USB tablet, I'm finding that
spice is doing just the same nonsense. It has a fake "spice vdagent
tablet". Blacklist that as well.
2016-02-24 22:22:11 -05:00
Benjamin Otte
760b540c8c treeview: Don't make things way too high
If the size-request is larger than the dedicated size, don't increase
the dedicated size by the size request, only increase it to the
size request.
2016-02-25 04:03:41 +01:00
Benjamin Otte
8ed804f1b4 textview: Draw the background properly
The background is *not* drawn relative to the clipping area.
2016-02-25 04:03:41 +01:00
Benjamin Otte
9016a00edd treeview: Fix positioning of editing widgets
This looks like a thinko.
2016-02-25 04:03:41 +01:00
Claude Paroz
18abf86510 Updated French translation 2016-02-24 20:56:49 +01:00
Ben Iofel
e390e3b8e3 GtkIMContext: remove broken anchors in documentation 2016-02-24 14:37:35 -05:00
William Hua
acbb0c4bdd mir: fix warnings 2016-02-24 13:24:14 -05:00
William Hua
594ba3071b mir: fix GdkSeat-related deprecations 2016-02-24 13:23:18 -05:00
Carlos Garnacho
60d7f4376e GtkTextHandle: Look up for the first child of a scrolled window found
Text handles use to connect to the first GtkScrollable up the hierarchy
so they can be repositioned when scrolling. It makes more sense to look
up the first child of a GtkScrolledWindow, it must be an scrollable too,
and will be the scrollable that can actually change the position of the
text handles.

https://bugzilla.gnome.org/show_bug.cgi?id=761676
2016-02-24 17:58:19 +01:00
Fabrício Godoy
ffea7a267d Updated Brazilian Portuguese translation 2016-02-24 15:32:33 +00:00
Jordi Mas
bf0ef08e50 Update Catalan translation 2016-02-24 16:32:23 +01:00
Matthias Clasen
97c1803c74 3.19.10 2016-02-24 07:26:45 -05:00
Matthias Clasen
b8183fb334 Add a release note about theme changes 2016-02-24 07:26:45 -05:00
Fran Dieguez
3cff1efea5 Update Galician translations 2016-02-24 11:07:33 +01:00
Anders Jonsson
fad0c275b9 Updated Swedish translation 2016-02-24 09:21:02 +00:00
Fabrício Godoy
d7fc1ea921 Updated Brazilian Portuguese translation 2016-02-24 06:58:33 +00:00
Jean-François Fortin Tam
cf6c0b09a5 spin button: Use the Ctrl modifier for Home and End key bindings
https://bugzilla.gnome.org/show_bug.cgi?id=309300
2016-02-23 21:20:00 -05:00
Matthias Clasen
566010e91d Add a testcase for revealer size allocation
This was taken from https://bugzilla.gnome.org/show_bug.cgi?id=761760
2016-02-23 20:53:23 -05:00
Timm Bäder
0c25c5d43d revealer: Don't report >0 preferred width...
... if the child is concealed and the transition type is set to NONE.
In this case, both preferred width and preferred height should be 0, but
we still can't use that to allocate a size for the child, so care about
the minimum size of the child in gtk_revealer_get_child_allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=761760
2016-02-23 20:45:45 -05:00
Carlos Soriano
17a4bd51bb gtkplacesview: use location instead of the enclosing one
We were using the enclosing location when connecting to a server, so
for instance if  we were connecting to ftp://test/test it would actually
open ftp://test/ instead of the full path.

To fix it, use the full location when emitting the open location signal.

https://bugzilla.gnome.org/show_bug.cgi?id=756659
2016-02-23 20:42:01 -05:00
Carlos Garnacho
4ff3d5b7a6 gdk: Avoid 2/3BUTTON event generation if the source device changes
Remember the last source device we're generating multiple clicks for,
just so we can bail out if the device changed. That will just reset
the counting.

https://bugzilla.gnome.org/show_bug.cgi?id=723659
2016-02-23 20:35:01 -05:00
Carlos Garnacho
3d700515e1 GtkGestureMultiPress: reset multi-press sequence if the source device changes
This prevents multipress sequences to possibly come from different mice.
Now the accumulated number of presses will be reset if the device changes
in the mean time.

https://bugzilla.gnome.org/show_bug.cgi?id=723659
2016-02-23 20:35:01 -05:00
Carlos Soriano
63a204e1c5 gtkplacessidebar: add open flags to other locations
We weren't using the open flags on the other locations signal, which
makes impossible for applications like nautilus to act in the same
way that for any other location where the user can choose between
opening in the current view, in a new window or in a new tab.

Add the signal missing parameter in order to allow it.

https://bugzilla.gnome.org/show_bug.cgi?id=754743
2016-02-23 20:29:03 -05:00
Fran Dieguez
98fb6f6988 Updated Galician translations 2016-02-23 20:50:22 +01:00
Мирослав Николић
5ee0a7105b Updated Serbian translation 2016-02-23 10:17:24 +01:00
Мирослав Николић
cab307f3d2 Updated Serbian translation 2016-02-23 10:16:47 +01:00
Мирослав Николић
a2b4acb3b6 Updated Serbian translation 2016-02-23 09:37:19 +01:00
Theppitak Karoonboonyanan
2b03bbb359 Updated Thai translation 2016-02-23 14:47:03 +07:00
Benjamin Otte
cf71d98b05 entry: Make the get_text_area() vfunc relative to top left of entry
This fixes GdTaggedEntry. I hope.
2016-02-23 04:22:19 +01:00
Benjamin Otte
3056d793a4 cssparser: Make _gtk_css_parser_has_number() a bit smarter
Previously we just checked the first character. And if that was a "-" as
in "-gtk-some-special-value", we assumed it was a number. Which it
clearly wasn't.

Test included
2016-02-23 04:22:19 +01:00
Benjamin Otte
437dec6295 csscolorvalue: Print a comma for win32 values 2016-02-23 04:22:19 +01:00
Benjamin Otte
c3dc0d80f1 container: Request layout again depending on layout mode
Containers with RESIZE_MODE_PARENT should never request layout and those
with RESIZE_MODE_IMMEDIATE should only request it for updating CSS.

Fixes clutter embeds (like the tray icon embed in gnome-shell)
continuously requesting relayout when all they want to do is relegate
relayout to Clutter.

https://bugzilla.gnome.org/show_bug.cgi?id=758893
2016-02-23 04:22:19 +01:00
Chao-Hsiung Liao
70b9ea2c4b Updated Chinese (Taiwan) translation 2016-02-23 02:51:35 +00:00
Paolo Borelli
c643d8b402 Win32: fix warning 2016-02-22 21:45:08 +01:00
Paolo Borelli
bc3c855e35 wip _gdk_display 2016-02-22 21:45:08 +01:00
Paolo Borelli
7047099fd8 Win32: fold the gdkinput.c file in gdkdisplay-win32.c
This is similar to what is done in the X11 and wayland backends.
It also gets rid of the _gdk_input_devices global variable
2016-02-22 21:45:08 +01:00
Paolo Borelli
b3a80180c7 Win32: remove leftover function
gdk_devices_list was removed from the API in 3.0 and it is not
in the headers. The win32 implementation lingered on by mistake.
2016-02-22 21:45:08 +01:00
Jordi Mas
ff9e73d71e Update Catalan translation 2016-02-22 20:43:27 +01:00
Piotr Drąg
ca050e10c1 Updated POTFILES.skip 2016-02-22 20:36:28 +01:00
Chun-wei Fan
07d32687d8 MSVC 2008 builds: Fix previous commit
The previous commit had the MSVC 2008 property sheet in the wrong place.
Fix that.
2016-02-22 22:23:26 +08:00
Lapo Calamandrei
5906b15c5e Adwaita: avoids up pointing scale slider to jump down on hover
and comment back sass debugging stuff in the process...
2016-02-22 11:29:43 +01:00
Lapo Calamandrei
9fb9d208fd Adwaita: fix scale with marks sliders
looks like sass was confused by the way I structured the loops,
this works that around.
2016-02-22 11:16:32 +01:00
Lapo Calamandrei
7f89856b29 Adwaita: color scale slider fixes
use the pointy slider on colorscales, this way it picks the
correct slider on rtl.
2016-02-22 10:55:58 +01:00
Chun-wei Fan
5962daef4f Windows: Update how gtk-win32.rc is generated
On Visual Studio, unlike MinGW, manifest files are embedded via
including the manifest file as a resource file in the projects, not
via the .rc file.  This means that the line in the .rc file that
specifies the manifest file would cause trouble, so that line gets
removed when the full gtk3-win32.rc is generated on Visual Studio builds,
otherwise 2010+ Visual Studio will complain when compiling the .rc file.
Also, the inclusion of winuser.h will cause warnings during the
compilation of the .rc file.

Fix this by isolating the Win32 resource portions of gtk-win32.rc.in to
gtk-win32.rc.body.in and:
-On MinGW, construct the full gtk-win32.rc by doing the winver.h and
 winuser.h inclusion first, then append the contents of gtk-win32.rc.body,
 and then appending the line to embed the manifest file.
-On Visual Studio, simply copy the gtk-win32.rc.body to gtk-win32.rc,
 and generate the full libgtk3.manifest file.

https://bugzilla.gnome.org/show_bug.cgi?id=762311
2016-02-22 17:40:17 +08:00
Benjamin Otte
6c0270bbcb win32 theme: Make tooltips look right
Includes adding fallback support
2016-02-22 04:37:57 +01:00
Benjamin Otte
808017d1d0 win32 theme: Size titlebar icons correctly.
Sizing according to
http://web.archive.org/web/20070301202835/http://shellrevealed.com/photos/blog_images/images/4538/original.aspx
2016-02-22 04:37:57 +01:00
Benjamin Otte
414657100f win32draw: Use the right checks
The first check was the wrong way around.

The second check made the function look wrong. Invalid ID is actually
the special case that should be handled first, so write the function
like that.
2016-02-22 04:37:57 +01:00
Benjamin Otte
cdb12fec9e win32 theme: Replace metric ids with metric names
Makes it more obvious what's actually happening.
2016-02-22 04:37:57 +01:00
Benjamin Otte
dc1e191df5 csssizevalue: Allow using the name for a win32 metric
... instead of just the ID.
2016-02-22 04:37:56 +01:00
Benjamin Otte
98216867d1 win32: Allow querying names for metrics 2016-02-22 04:37:56 +01:00
Benjamin Otte
63934ba36c win32 theme: Replace color ids with color names
Makes it more obvious what's actually happening.
2016-02-22 02:36:11 +01:00
Benjamin Otte
37a4e1cda9 csscolor: Allow using the name for a win32 color
... instead of just the ID.
2016-02-22 02:36:11 +01:00
Benjamin Otte
ecaca073f1 win32: Allow querying names for colors 2016-02-22 02:36:11 +01:00
Allin Cottrell
46d3611052 Fix Quartz Full Screen Crash. 2016-02-21 16:22:27 -08:00
John Ralls
3cf98a4353 Fix typo. 2016-02-21 16:17:46 -08:00
Benjamin Otte
e935993d96 win32 fallback: Draw window title button images
Taken from Wine's Marlett font.
2016-02-21 20:44:37 +01:00
Benjamin Otte
828f2e1801 win32 theme: Sanitize a few colors 2016-02-21 20:44:36 +01:00
Benjamin Otte
2e709fde82 win32 fallback: Add code to draw titlebars 2016-02-21 20:44:36 +01:00
Benjamin Otte
3c5c748cd4 win32 fallback: Warn if we don't know how to draw a part 2016-02-21 20:44:36 +01:00
Benjamin Otte
c73db50aed win32: Implement GetSystemMetric() fallbacks
Default values taken from Wine.
2016-02-21 20:44:36 +01:00
Benjamin Otte
c2dd3c0d89 win32: Move variable definition to not cause gcc warning
It's only used on win32, so only define it there.
2016-02-21 20:44:36 +01:00
A S Alam
00559e1b86 updated Punjabi Translation 2016-02-21 09:31:14 -06:00
A S Alam
908bcf3c15 updated Punjabi Translation 2016-02-21 09:31:06 -06:00
Matthias Clasen
0c91584532 Adwaita: Drop decoration.ssd selector
We've settled on window.ssd decoration instead.

https://bugzilla.gnome.org/show_bug.cgi?id=760714
2016-02-21 00:55:41 -05:00
Matthias Clasen
cee39bfd46 Add a release note about drawingarea background 2016-02-21 00:48:56 -05:00
Matthias Clasen
5a80a35757 drawingarea: Update docs around background handling
The behavior changed this cycle. Update the docs to recommend
an explicit gtk_render_background call.
2016-02-21 00:46:54 -05:00
Matthias Clasen
52e0ab53dc print dialog: More baseline alignment
Some places were missing the right valign setting to make
baselines line up properly.
2016-02-21 00:09:32 -05:00
Matthias Clasen
e9300e2f79 dnd: Avoid a crash
gtk_image_definition_new_icon_name ("") returns NULL. Bail
out early in this case to avoid unreffing NULL later.

https://bugzilla.gnome.org/show_bug.cgi?id=762392
2016-02-20 22:43:43 -05:00
Matthias Clasen
a754579e44 css gadget: Adjust baselines for min-height
We were forcing the size to be at least min-height, but we left the
baselines as they were, which had the effect of making text e.g
in entries 'stick to the top'.

With this change, we adjust the baseline to keep the ratio of
baseline to height unchanged.
2016-02-20 22:31:39 -05:00
Benjamin Otte
f3d67cc2ac win32 theme: Add rudimentary titlebar support 2016-02-21 03:02:36 +01:00
Benjamin Otte
eda348d2b5 win32: Handle size queries for all values
Fall back to GetSystemMetrics() whenever GetThemeSysSize() didn't work.
2016-02-21 03:02:36 +01:00
Benjamin Otte
63eb15b730 win32: Add missing break in switch statement
Oops.
2016-02-21 03:02:36 +01:00
Benjamin Otte
1548b680fc css: Make outline-offset animatable
CSS claims it should be, so we make it.
2016-02-21 01:02:51 +01:00
Benjamin Otte
e4a485dca2 renderborder: Add API to query the outline clip
And use it in implementation of gadgets.
2016-02-21 01:02:51 +01:00
Benjamin Otte
23b3774e6b css: Mark outline properties as affecting clip when they do 2016-02-21 01:02:51 +01:00
Matthias Clasen
966dd56e45 entry: Fix baseline allocation
Position the text on the baseline again.
2016-02-20 18:55:17 -05:00
Matthias Clasen
6b53138a01 box: Fix rtl allocation with center widget
The code for adjusting the center widget allocation in case
of uneven sides never worked right in RTL. This was finally
noticed for tabs with close button, which commonly use a
centered label.
2016-02-20 16:45:26 -05:00
Lapo Calamandrei
7698ac447a Adwaita: remove unused selector in _common.scss 2016-02-20 19:52:46 +01:00
Lapo Calamandrei
effee1f35e Revert "Adwaita: resurrect scale-has-marks-above/below classes"
This reverts commit edcc0c2783.
Since the colorscale styling is wrong in rtl, need to do things
differntly.
2016-02-20 19:50:49 +01:00
Lapo Calamandrei
44f6fcfbd3 Adwaita: move 1px up the check asset 2016-02-20 19:37:21 +01:00
Lapo Calamandrei
b23300c89d Adwaita: fix entry progressbar
it now moves using the whole entry lenght, in the process the
style was tweaked to not need a special case for focused entries.
2016-02-20 19:31:58 +01:00
Matthias Clasen
7c577ddf4f assistant: Add margin to action area
We are no longer setting a margin on the content area, so put
one on the action area itself to prevent the buttons from touching
the edge.

https://bugzilla.gnome.org/show_bug.cgi?id=762315
2016-02-20 11:27:56 -05:00
Lapo Calamandrei
edcc0c2783 Adwaita: resurrect scale-has-marks-above/below classes
the colorscales use said classes.
2016-02-20 17:25:51 +01:00
Matthias Clasen
d2454000f6 expander: Draw focus again
This was lost when GtkExpander was ported to use box gadgets.
2016-02-20 11:17:12 -05:00
Matthias Clasen
7ed1225296 check button: Draw focus again
The box gadget now has API for this; use it.
2016-02-20 10:54:48 -05:00
Matthias Clasen
ebff86d6f6 box gadget: Make it possible to draw focus
There are widgets which use a box gadget and take focus,
like GtkCheckButton.
2016-02-20 10:54:48 -05:00
Matthias Clasen
e837aa69b6 x11: Some cleanups to the multihead initialization
The significant change here is a memory leak fix in init_xrandr15.
The rest of the changes makes init_xrandr13 and init_xrandr15 more
parallel, and simplifies init_multihead.
2016-02-20 10:54:48 -05:00
Marco Trevisan (Treviño)
1dda932109 X11, GdkScreen: properly implement init_randr15 including output name
https://bugzilla.gnome.org/show_bug.cgi?id=762319
2016-02-20 10:45:44 -05:00
Lapo Calamandrei
079e90b780 Adwaita: scale slider assets refresh
...and update the theme accordingly.
2016-02-20 16:07:00 +01:00
Benjamin Otte
d2fb069426 entry: Make get_text_area_size() vfunc work again
GdTaggedEntry needs that. Though there's probably a bunch of work left
inside GdTaggedEntry to make it look cute again (like storing the area
it reserves for itself to allocate tags in).
2016-02-20 03:25:39 +01:00
Lapo Calamandrei
a979cff748 Adwaita: check/radio/slider gradient tweaks 2016-02-19 18:03:38 +01:00
Carlos Garnacho
ebb175021e wayland: Implement gtk_shell.set_startup_id
Fetch the DESKTOP_STARTUP_ID envvar at the same point it's done
for the X11 backend, and notify the startup ID gotten on
notify_startup_complete().
2016-02-19 17:45:42 +01:00
Carlos Garnacho
ce62f0513d wayland: Update gtk-shell protocol to v3
Add a gtk_shell.set_startup_id request, so the application can communicate
to the compositor the startup id that it received through the
DESKTOP_STARTUP_ID envvar, or other means.
2016-02-19 17:45:42 +01:00
Paolo Borelli
7505d49741 Win32: free the monitors array 2016-02-19 15:49:29 +01:00
Paolo Borelli
3aec838313 Win32: chain up screen finalize
Add the proper chain up (in preparation to actually freeing stuff) and
remove the empty dispose implementation
2016-02-19 15:49:29 +01:00
Paolo Borelli
577016126e Win32: remove the _gdk_monitors global variable
Make it a field of GdkWin32Screen since that is the object exposing
all the the getters.
2016-02-19 15:28:38 +01:00
Paolo Borelli
2e7f98a683 Win32: remove the _is_win8_or_above global variable 2016-02-19 15:28:38 +01:00
Lapo Calamandrei
09cd17a001 Revert "Adwaita: restrict button transition"
Shouldn't be needed with recent Benjamin work.
This reverts commit 79ca3f03a8.
2016-02-19 14:39:47 +01:00
Lapo Calamandrei
826913135b Revert "Adwaita: only needed properties on entry transition"
Shouldn't be needed with recent Benjamin work.
This reverts commit d57f4a781c.
2016-02-19 14:38:22 +01:00
Matthias Clasen
9c2110122b gdk: Add a way to show included backends
Set GDK_BACKEND=help to see a list of all inluded GDK backends.
2016-02-18 22:03:12 -05:00
Benjamin Otte
a3ba7f0a20 css: Don't start transitions when the value didn't change
This stops us from starting a lot of useless transitions. And it's even
conformant with the CSS spec!
2016-02-18 23:57:39 +01:00
Carlos Soriano
11b3efbdda gtkcsscalcvalue: avoid unitialized boolean
Since we do an OR afterwards, initializing to FALSE is correct.
2016-02-18 15:32:54 +01:00
Carlos Soriano
40c0a6aa87 gtkplacessidebar: remove unneeded condition
We check for it before anyway, and in this case make sense to show the
eject button in both cases.
2016-02-18 15:32:54 +01:00
Olivier Fourdan
5a253c546a wayland: check for support of xdg_shell interface
When running with a Wayland compositor which doesn't support the
xdg_shell interface, gtk+ will segfault while trying to access the
corresponding wl proxy.

Check for xdg_shell support and do not use Wayland if not present, so
that it can fallback to X11, hoping that Xwayland is usable.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=762258
2016-02-18 15:29:01 +01:00
Daniel Mustieles
d1cf970d7a Updated Spanish translation 2016-02-18 14:15:57 +00:00
Phillip Wood
934b3f6865 Document that GtkApplication loads gtk/menus-common.ui
Add a comment about the resource gtk/menus-common.ui to the
documentation of the other resources loaded by GtkApplication.

https://bugzilla.gnome.org/show_bug.cgi?id=761432
2016-02-18 14:11:14 +00:00
Phillip Wood
c38c3361ca Document help overlay action name in GtkApplication
This means all the information needed to automatically load a
shortcuts window and create a menu item to show it is in one place.

https://bugzilla.gnome.org/show_bug.cgi?id=761431
2016-02-18 14:11:14 +00:00
Lapo Calamandrei
d57f4a781c Adwaita: only needed properties on entry transition
made things properly in the process creating a sass function to
handle transition properties stacking.
2016-02-18 14:30:23 +01:00
Lapo Calamandrei
79ca3f03a8 Adwaita: restrict button transition
we use to animate "all" in the transition, this seems to trigger
some weird gtk sizing issue, restricting the transition to just
the needed properties fixes.
2016-02-18 13:24:42 +01:00
Lapo Calamandrei
a93fdd8201 Adwaita: housekeeping
cleaned up unneded selectors and leftovers from previous versions.
2016-02-18 12:26:19 +01:00
Mario Blättermann
71c36bb875 Updated German translation 2016-02-18 10:08:00 +01:00
Piotr Drąg
0298d500d2 Updated Polish translation 2016-02-17 22:02:32 +01:00
Dušan Kazik
d976bbd7cb Updated Slovak translation 2016-02-17 20:56:02 +00:00
Lapo Calamandrei
56c54a20d1 Adwaita: reset the shadow on disabled scales 2016-02-17 20:00:57 +01:00
Lapo Calamandrei
9bb139c6aa Adwaita: unused assets cleanup 2016-02-17 15:22:36 +01:00
Lapo Calamandrei
d3c247ed21 Adwaita: added a new mixin for check/radio/sliders
some clean up in the process. The gradient still need some love.
2016-02-17 15:18:59 +01:00
Lapo Calamandrei
6bf33ac30c Adwaita: _drawing cleanup 2016-02-17 14:36:10 +01:00
Benjamin Otte
2782a14fc4 win32 theme: Add checkbutton spacing
The number is taken right from Wine source code.
2016-02-17 04:49:27 +01:00
Benjamin Otte
01bcda8a8c win32 theme: Query theme borders when rendering buttons
If someone figures out where the remaining pixel comes from: Tell me!
2016-02-17 04:49:27 +01:00
Benjamin Otte
67b893c5f8 win32 theme: Add a way to query border of theme parts 2016-02-17 04:49:26 +01:00
Benjamin Otte
a3998bce9d win32 theme: Add a hack that selects the right font on Windows 8
Someone needs to figure out why the default font is wrong.
2016-02-17 04:36:30 +01:00
Benjamin Otte
c98007f9fd win32: Add fallback code to draw theme parts 2016-02-17 04:36:18 +01:00
Benjamin Otte
37e3ccb2f6 win32: Split out fallback code into separate file
(1) Actual Windows users don't care about it
(2) It's easier to get rid of
2016-02-17 04:36:18 +01:00
Benjamin Otte
3e5be58991 win32 theme: Require comma between part and state ID 2016-02-17 04:36:18 +01:00
918 changed files with 131691 additions and 103305 deletions

439
NEWS
View File

@@ -1,3 +1,439 @@
Overview of Changes in GTK+ 3.20.7
==================================
* Bugs fixed:
118959 GtkScale value '-0'
674215 regression with updating tooltips
708148 gtk_tree_view_get_path_at_pos mistakenly identifies column of ini...
745622 Selected text not highlighted in GtkInfoBar
747206 gtktextview: note on how to get line spacing between two paragraphs
764060 opening a second nautilus while a delete operation is in progress...
764203 Default background color for the 'textview border' node
765924 Improve external drives detection
766120 Scale draw_value() align changed from centre/right (H/V) to lefti...
766122 Re-used filechooser displays $pwd half of the time when shown
766341 Do not rely on memfd as it requires a fairly recent kernel
766643 Frozen windows when unmapped with pending configure event
766782 OpenGL in broadway leads to segmentation fault
767058 GtkInfoBar: right-click/context menu all white
767468 Popover over a treeview cellrenderer is hidden immediately after ...
767705 GtkActionHelper: Change a message to a warning
767766 CUPS 2.X detected incorrectly by configure
767795 Warning when the "accelerator" property of GtkShortcutsShortcut ...
767848 crash in the window test
767851 Adwaita: popover arrows broken in some orientations
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...
768177 CLIPBOARD target request after PRIMARY request times out. GDK_SEL...
768485 Change the priority of the window-close idle to G_PRIORITY_DEFAULT
768657 places-view: fix open action for locations without a mount or volume
768930 reftests: override GSETTINGS_SCHEMA_DIR when running tests
769003 Adwaita: GtkCalendar uses a confusing style for week of year
769047 GtkWidget <-> GtkStyleContext API not clear
* Translation updates:
Indonesian
Norwegian bokmål
Overview of Changes in GTK+ 3.20.6
==================================
* Bugs fixed:
766694 crash on save as in any gtk3 application starting 3.20.5...
766323 GTKPopover gives warnings if visible when reparented
766336 Crash when selecting rows with rubberbanding
766737 stack: Only map children when necessary
* Translation updates:
Arabic
Overview of Changes in GTK+ 3.20.5
==================================
* Bugs fixed:
763852 gdk/wayland: event source is not multi-thread aware
765973 GtkRevealer need to always send "child-revealed" signal...
766175 Translation of quotes may misinterpreted by GTK sidebar
766233 Crash when server does not support XI2
766440 Scale slider button has stopped discerning & rendering...
766442 Broken drag & drop between windows
* Translation updates:
Kazakh
Portuguese
Overview of Changes in GTK+ 3.20.4
==================================
* Bugs fixed:
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
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
764395 nautilus crashed on double clicking 'other locations'
764424 `Super` keybindings trigger without Super, on Wayland
764585 Fix "format not a string literal" errors
764825 [WAYLAND] Fn key resets scrolling
764846 Code improvements in GtkApplication
765038 Adwaita & decorations
765065 Wayland: Hover state stuck after mouse leaving the toplevel
765066 GtkColorChooser looks like it can select multiple colors
765122 Duplicate/missing string in gtkprintbackendcups
765213 info bars nearly unreadable in backdrop state because of gray font ...
765238 gtktexthandle should avoid connecting to GtkWidget::draw
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
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
765565 Wayland: Inspector GtkLabel drag'n'drop crashes client
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
Esperanto
Greek
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
Serbian
Thai
Overview of Changes in GTK+ 3.20.1
==================================
* Active GtkSwitch widgets now use the :checked state, to match GtkToggleButton
* Bugs fixed:
641354 Look for themes in XDG folders
763350 drawing performance worse than X
763604 The search button of a GtkShortcutsWindow should have the image-button...
763659 DND Drop on root with Pixbuf leaves image behind
763731 Return GTK_PRINT_OPERATION_RESULT_ERROR even if error == NULL
763741 Wavy/squiggly underline not properly removed
763758 Do not use fixed values for widgets size in foreign drawing demo
763779 [PATCH] quartz: fix pixelated image surfaces in retina/hidpi mode
763802 [HighContrastInverse] the “ON” text of a GtkSwitch should be black (on...
763804 [HighContrastInverse] menuitem:hover colors
763808 .dnd styleclass still used
763859 gdkdevice-wayland.c cleanups
763900 stack: fix warnings during GtkStack size_allocate
764118 Glitches in menu scroll arrow rendering
* Translation updates:
Basque
Bulgarian
Danish
Galician
Greek
Russian
Slovak
Slovenian
Spanish
Swedish
Overview of Changes in GTK+ 3.20.0
==================================
* Themes:
- The HighContrast theme has been brought back up to par with Adwaita
- Adwaita has received detail fixes for many widgets
- Adwaita now transitions to backdrop
* Some recently publicized static analysis findings have been fixed
* Bugs fixed:
746490 [HighContrast] insensitive ToggleButtons are rendered similarly ac...
763609 [HighContrast] model-generated menu-like popovers are unthemed
763610 [HighContrast] GtkSearchEntrys “search” icon needs left&right pad...
763612 [HighContrast] “:selected .circular” should be visible
763613 [HighContrast] GtkScale is unreadable
763696 [HighContrast] spinbuttons broken
763706 [HighContrast] linked horizontal dropboxes broken
763707 [HighContrast] active and hover states for radios and checkboxes b...
763774 [HighContrast] GtkPlacesSidebar row need more top&bottom padding
763775 [HighContrast] the “enter server adress” entry in GtkPlacesView ha...
763777 [HighContrast] GtkMenuBar needs a bottom box-shadow
763781 [HighContrast] .app-notification border { border:none; }
763797 [HighContrast] scrollbars invisible (whity on white)
763823 [HighContrast] dnd on a vertical spinbutton does a weird resizing
763846 [HighContrast] spinbuttons in osd look bad
763955 treeview: inline editing shows old text as background
763796 excessive Gtk-WARNING **: State 0 for EMailShellSidebar doesn't ma...
763835 W32: Layered windows don't become minimized
763749 Nautilus desktop window is too small with gtk 3.19
* Translation updates
Brazilian Portuguese
Czech
Danish
Finnish
Hungarian
Italian
Kazakh
Korean
Latvian
Serbian
Serbian Latin
Swedish
Ukrainian
Overview of Changes in GTK+ 3.19.12
===================================
* GTK+ now respects default size even for windows that are not resizable
* GtkScale and GtkScrollbar have received multiple fixes for fallout from
the gadget port
* GtkStackSwitcher will now switch pages when hovered during drag-and-drop
* Inspector:
- The per-object CSS editor has been dropped; the global one is sufficient
- The sidebar has been replaced by a combo box
- Add a Show Layout option to the Visual tab
- CSS node tree and style properties are now on the same page
- The frame clock is shown in the Miscellaneous page
- Isolate the inspector from visual debugging effects
- Numerous smaller UI improvements
* Themes:
- Windows theme: handle spin buttons and switches
- Adwaita: Fixes for scales, combo boxes, info bars, action bars, radio and
check buttons, side bars, etc
- Adwaita has gained a new style of drop target highlighting
* Wayland:
- Synchronize key repeat with server
- Add a bell request to gtk_shell and use it to implement gdk_window_beep
- Add a focus request to gtk_shell and use it to implement gtk_window_present
- Dropping tabs to create new windows is now supported
* Windows:
- Use a custom drag-resize implementation
- Use layered windows
- Provide workarea information
* OS X:
- Native zoom and rotate gestures are now supported
* Bug fixes:
583780 gtk_toggle_button_set_mode() documentation should suggest when it is...
699891 Support for Primary keybinding in builder XML
720950 Default double-click interval should be increased
748872 W32: Use layered windows
756450 GTK file chooser completion dropdown sets cursor in wrong position
757942 Input event (e. g. typing on keyboard) is sent repeatedly during hig...
759899 W32: CSD is not enabled by default
760276 Quartz does not support GtkGesture Zoom and Rotate (NSEventTypeMagni...
761629 W32: WM window drag-resizing code does not work well with GTK
762397 GtkToolButton needs left & right padding and margin
762811 Adwaita: nonsquare image buttons
762820 Remove "core_pointer" from the GdkDisplay struct
762891 gdk: remove the display->list_devices vfunc
762902 GDK W32: Newly-opened windows (such as popups) have unthemed cursor
762907 gnome-shell crashes after undocking
762945 Wrong allignemet in some places
762974 GtkWindow: gtk_window_set_default_size() does not work with fixed si...
762996 Revealer doesn't reveal the entire width of a ListBox that has Revea...
763001 implement beeping
763012 GDK W32: No gdk_win32_screen_get_monitor_workarea()
763017 tooltip text is not shown
763023 Segfault in init_randr15()
763080 Layered Window crashes GDKGLWin32
763103 gtk-launch: add hack to close up dbus-daemon race
763216 GtkTextView's top-margin/bottom-margin don't work with non-scrolling...
763285 gdkwindow/Win32: Make update_style_bits() available across the GDK-W...
763287 GDK-Win32: GL area does not redraw on resize
763298 wayland: connection flooded when dragging
763351 [wayland] high cpu usage on open popover
763380 colorscale input popup difficult to use with a pointer
763387 Make window creation hooks in tab DnD work on wayland
763628 W32: Shortcuts window is gtk3-demo misplaced on multidisplay desktop
763650 window: stop stomping on resize-mode set by external API
* Translation updates:
Brazilian Portuguese
Catalan
Czech
Finnish
French
Galician
German
Greek
Hebrew
Hungarian
Japanese
Kazakh
Korean
Lithuanian
Polish
Russian
Serbian
Slovak
Slovenian
Spanish
Swedish
Overview of Changes in GTK+ 3.19.11
===================================
* GtkRange, GtkScale and GtkScrollbar have been ported to use gadgets
* Themes:
- Windows theme improvements
* Inspector:
- Show input device information
- Update monitor information when it changes
* Wayland:
- Implement primary selection (using a private protocol
with mutter for now)
* Bugs fixed:
756751 Keypad decimal point patch prevents entry of comma in german keypad...
760482 GtkFrame cuts off bottom 2 pixels of child
761767 gcc6: Don't return bool from a const gchar* function
762123 Frame Layouting issue in Quadrapassel
762561 Implement primary selection protocol
762593 Solid separator in gnome-tweak-tool header bar
762614 Commit 51af704 gadget: Be careful in geometry calculations breaks v...
762629 GDK W32: Wrong MINMAXINFO calculation
762677 gtkplacessidebar: avoid irresponsible UI while trashing
762713 [Wayland] GDK doesn't remember unmaximized or unfullscreen size
762720 Moving Epiphany tabs with keyboard shortcuts visually broken
762755 Epiphany, Eye of GNOME crash when run in gdkwindow-wayland.c buffer...
762820 Remove "core_pointer" from the GdkDisplay struct
762887 yelp crashes most of the time on startup with gtk+ 3.19.10
762891 gdk: remove the display->list_devices vfunc
761156 Setting a popover 'relative_to' a widget on an offscreen window cra...
761686 GtkTreeView theming problems
762468 wayland: Switching between fullscreen and unfullscreen too fast may...
* Translation updates:
Brazilian Portuguese
Catalan
French
Galician
Hungarian
Occitan
Polish
Swedish
Overview of Changes in GTK+ 3.19.10
===================================
* GTK+ will now list included backends when seeing the
environment variable GDK_BACKEND=help
* Themes
- Windows theme improvements
- Adwaita cleanups
* Wayland
- Implement startup notification
* Bugs fixed:
309300 Adjust the key binding for setting the spin box's value to the min...
723659 touchpad: please do not interpret tap and click as double-click
754743 Middle click on "Other Locations" doesn't open a new tab
756659 Nautilus's Connect to server wont honor remote path
760714 GtkWindow: CSS node documentation is not clear
761431 Document overlay help action name
761432 Document that GtkApplication loads menus from gtk/menus-common.ui
761760 Welcome graphic and heading is misaligned
762258 wayland: gtk3 apps segfault with plasma-wayland/kwin_wayland
762315 Assistant pages have no padding which looks weird
762319 issues with randr 1.5
762392 gtk_drag_source_set_icon_name with empty string puts widget in bad...
* Translation updates:
Brazilian Portuguese
Catalan
Chinese (Taiwan)
Galician
German
Polish
Punjabi
Serbian
Slovak
Spanish
Swedish
Thai
Overview of Changes in GTK+ 3.19.9
==================================
@@ -417,7 +853,8 @@ Overview of Changes in GTK+ 3.19.3
758407 Could not send the search request \ GDBus.Error:org.freedesktop.Tr...
758442 gtk_style_context_save() destroys style information
* Translation updates:
Overview of Changes in GTK+ 3.19.2
==================================
* Most widgets have been ported to CSS nodes. The element names and

View File

@@ -53,7 +53,7 @@ In the bug report please include:
of software that can be downloaded.
* If the bug was a crash, the exact text that was printed out
when the crash occured.
when the crash occurred.
* Further information such as stack traces may be useful, but
is not necessary.
@@ -72,23 +72,53 @@ and attach the patch to that bug report.
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 for 3.20
======================
* The GtkFileChooser interface pre-requisite changed from GtkWidget
to GObject, allowing non-widget implementations of this interface.
This is a minor change in ABI, as apps are no longer guaranteed
that a GtkFileChooser interface also supports all GtkWidget methods.
However, all previously existing objects still derive from GtkWidget,
so no existing code should break.
* 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.
* Several fixes for window sizing and 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
and gtk_window_set_default_size() to restore the window size. See
https://wiki.gnome.org/HowDoI/SaveWindowState for a detailed example.
* 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
======================
@@ -102,11 +132,6 @@ Release notes for 3.18
GtkCellRendererText is no longer ignored. If you don't want your
text to be translucent, use opaque colors.
* 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.16
======================

View File

@@ -1,13 +1,12 @@
include $(top_srcdir)/Makefile.decl
SUBDIRS = \
crypt \
vs9 \
vs10 \
vs11 \
vs12 \
vs14
EXTRA_DIST += process-in-win32.py
EXTRA_DIST += replace.py
-include $(top_srcdir)/git.mk

View File

@@ -1,7 +0,0 @@
include $(top_srcdir)/Makefile.decl
EXTRA_DIST += \
crypt.h \
crypt3.c
-include $(top_srcdir)/git.mk

View File

@@ -1,32 +0,0 @@
/**************************************************************************
* Unix-like crypt(3) Algorithm for Password Encryption
*
* File : crypt3.h
* Purpose : Provides crypt(3) prototypes to ANSI C compilers
* without a need for the crypt library.
* Author : Fan, Chun-wei
* Date : June 24, 2013
*
* I am releasing the source that I have provided into public
* domain without any restrictions, warranties, or copyright
* claims of my own.
*
***************************************************************************/
#ifndef __ANSI_CRYPT_H__
#define __ANSI_CRYPT_H__
#ifdef __cplusplus
extern "C"
{
#endif
void encrypt (char *block, int edflag);
void setkey (char *key);
char* crypt (const char *key, const char *salt);
#ifdef __cplusplus
}
#endif
#endif /* __ANSI_CRYPT_H__ */

View File

@@ -1,460 +0,0 @@
/**************************************************************************
* Unix-like crypt(3) Algorithm for Password Encryption
*
* File : crypt3.c
* Purpose : Provides crypt(3) functionality to ANSI C compilers
* without a need for the crypt library.
* Author : Michael Dipperstein
* Date : November 3, 1998
*
***************************************************************************
* The source in this file is heavily borrowed from the crypt3.c file
* found on several ftp sites on the Internet. The original source
* claimed to be BSD, but was not distributed with any BSD license or
* copyright claims. I am releasing the source that I have provided into
* public domain without any restrictions, warranties, or copyright
* claims of my own.
*
* The code below has been cleaned and compiles correctly under, gcc,
* lcc, and Borland's bcc C compilers. A bug involving the left and
* right halves of the encrypted data block in the widely published
* crypt3.c source has been fixed by this version. All implicit register
* declarations have been removed, because they generated suboptimal code.
* All constant data has been explicitly declared as const and all
* declarations have been given a minimal scope, because I'm paranoid.
*
* Caution: crypt() returns a pointer to static data. I left it this way
* to maintain backward compatibility. The downside is that
* successive calls will cause previous results to be lost.
* This can easily be changed with only minor modifications to
* the function crypt().
**************************************************************************/
/* Initial permutation */
static const char IP[] =
{
58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7,
};
/* Final permutation, FP = IP^(-1) */
static const char FP[] = {
40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25,
};
/**************************************************************************
* Permuted-choice 1 from the key bits to yield C and D.
* Note that bits 8,16... are left out:
* They are intended for a parity check.
**************************************************************************/
static const char PC1_C[] =
{
57, 49, 41, 33, 25, 17, 9,
1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27,
19, 11, 3, 60, 52, 44, 36,
};
static const char PC1_D[] =
{
63, 55, 47, 39, 31, 23, 15,
7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29,
21, 13, 5, 28, 20, 12, 4,
};
/* Sequence of shifts used for the key schedule. */
static const char shifts[] =
{1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};
/**************************************************************************
* Permuted-choice 2, to pick out the bits from the CD array that generate
* the key schedule.
**************************************************************************/
static const char PC2_C[] =
{
14, 17, 11, 24, 1, 5,
3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8,
16, 7, 27, 20, 13, 2,
};
static const char PC2_D[] =
{
41, 52, 31, 37, 47, 55,
30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53,
46, 42, 50, 36, 29, 32,
};
/* The C and D arrays used to calculate the key schedule. */
static char C[28];
static char D[28];
/* The key schedule. Generated from the key. */
static char KS[16][48];
/* The E bit-selection table. */
static char E[48];
static const char e2[] =
{
32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1,
};
/**************************************************************************
* Function: setkey
*
* Description: Set up the key schedule from the encryption key.
*
* Inputs: char *key
* pointer to 64 character array. Each character represents a
* bit in the key.
*
* Returns: none
**************************************************************************/
void setkey(char *key)
{
int i, j, k, temp;
/**********************************************************************
* First, generate C and D by permuting the key. The low order bit of
* each 8-bit char is not used, so C and D are only 28 bits apiece.
**********************************************************************/
for(i = 0; i < 28; i++)
{
C[i] = key[PC1_C[i] - 1];
D[i] = key[PC1_D[i] - 1];
}
/**********************************************************************
* To generate Ki, rotate C and D according to schedule and pick up a
* permutation using PC2.
**********************************************************************/
for(i = 0; i < 16; i++)
{
/* rotate */
for(k = 0; k < shifts[i]; k++)
{
temp = C[0];
for(j = 0; j < 28 - 1; j++)
C[j] = C[j+1];
C[27] = temp;
temp = D[0];
for(j = 0; j < 28 - 1; j++)
D[j] = D[j+1];
D[27] = temp;
}
/* get Ki. Note C and D are concatenated */
for(j = 0; j < 24; j++)
{
KS[i][j] = C[PC2_C[j] - 1];
KS[i][j + 24] = D[PC2_D[j] - 28 -1];
}
}
/* load E with the initial E bit selections */
for(i=0; i < 48; i++)
E[i] = e2[i];
}
/**************************************************************************
* The 8 selection functions. For some reason, they give a 0-origin
* index, unlike everything else.
**************************************************************************/
static const char S[8][64] =
{
{
14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
},
{
15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
},
{
10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
},
{
7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
},
{
2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
},
{
12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
},
{
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
},
{
13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
}
};
/**************************************************************************
* P is a permutation on the selected combination of the current L and key.
**************************************************************************/
static const char P[] =
{
16, 7, 20, 21,
29, 12, 28, 17,
1, 15, 23, 26,
5, 18, 31, 10,
2, 8, 24, 14,
32, 27, 3, 9,
19, 13, 30, 6,
22, 11, 4, 25,
};
/* The combination of the key and the input, before selection. */
static char preS[48];
/**************************************************************************
* Function: encrypt
*
* Description: Uses DES to encrypt a 64 bit block of data. Requires
* setkey to be invoked with the encryption key before it may
* be used. The results of the encryption are stored in block.
*
* Inputs: char *block
* pointer to 64 character array. Each character represents a
* bit in the data block.
*
* Returns: none
**************************************************************************/
void encrypt(char *block)
{
int i, ii, temp, j, k;
char left[32], right[32]; /* block in two halves */
char old[32];
char f[32];
/* First, permute the bits in the input */
for(j = 0; j < 32; j++)
left[j] = block[IP[j] - 1];
for(;j < 64; j++)
right[j - 32] = block[IP[j] - 1];
/* Perform an encryption operation 16 times. */
for(ii= 0; ii < 16; ii++)
{
i = ii;
/* Save the right array, which will be the new left. */
for(j = 0; j < 32; j++)
old[j] = right[j];
/******************************************************************
* Expand right to 48 bits using the E selector and
* exclusive-or with the current key bits.
******************************************************************/
for(j =0 ; j < 48; j++)
preS[j] = right[E[j] - 1] ^ KS[i][j];
/******************************************************************
* The pre-select bits are now considered in 8 groups of 6 bits ea.
* The 8 selection functions map these 6-bit quantities into 4-bit
* quantities and the results are permuted to make an f(R, K).
* The indexing into the selection functions is peculiar;
* it could be simplified by rewriting the tables.
******************************************************************/
for(j = 0; j < 8; j++)
{
temp = 6 * j;
k = S[j][(preS[temp + 0] << 5) +
(preS[temp + 1] << 3) +
(preS[temp + 2] << 2) +
(preS[temp + 3] << 1) +
(preS[temp + 4] << 0) +
(preS[temp + 5] << 4)];
temp = 4 * j;
f[temp + 0] = (k >> 3) & 01;
f[temp + 1] = (k >> 2) & 01;
f[temp + 2] = (k >> 1) & 01;
f[temp + 3] = (k >> 0) & 01;
}
/******************************************************************
* The new right is left ^ f(R, K).
* The f here has to be permuted first, though.
******************************************************************/
for(j = 0; j < 32; j++)
right[j] = left[j] ^ f[P[j] - 1];
/* Finally, the new left (the original right) is copied back. */
for(j = 0; j < 32; j++)
left[j] = old[j];
}
/* The output left and right are reversed. */
for(j = 0; j < 32; j++)
{
temp = left[j];
left[j] = right[j];
right[j] = temp;
}
/* The final output gets the inverse permutation of the very original. */
for(j = 0; j < 64; j++)
{
i = FP[j];
if (i < 33)
block[j] = left[FP[j] - 1];
else
block[j] = right[FP[j] - 33];
}
}
/**************************************************************************
* Function: crypt
*
* Description: Clone of Unix crypt(3) function.
*
* Inputs: char *pw
* pointer to 8 character encryption key (user password)
* char *salt
* pointer to 2 character salt used to modify the DES results.
*
* Returns: Pointer to static array containing the salt concatenated
* on to the encrypted results. Same as stored in passwd file.
**************************************************************************/
char *crypt(char *pw, char *salt)
{
int i, j, temp;
char c,
block[66]; /* 1st store key, then results */
static char iobuf[16]; /* encrypted results */
for(i = 0; i < 66; i++)
block[i] = 0;
/* break pw into 64 bits */
for(i = 0, c = *pw; c && (i < 64); i++)
{
for(j = 0; j < 7; j++, i++)
block[i] = (c >> (6 - j)) & 01;
pw++;
c = *pw;
}
/* set key based on pw */
setkey(block);
for(i = 0; i < 66; i++)
block[i] = 0;
for(i = 0; i < 2; i++)
{
/* store salt at beginning of results */
c = *salt++;
iobuf[i] = c;
if(c > 'Z')
c -= 6;
if(c > '9')
c -= 7;
c -= '.';
/* use salt to effect the E-bit selection */
for(j = 0; j < 6; j++)
{
if((c >> j) & 01)
{
temp = E[6 * i + j];
E[6 * i +j] = E[6 * i + j + 24];
E[6 * i + j + 24] = temp;
}
}
}
/* call DES encryption 25 times using pw as key and initial data = 0 */
for(i = 0; i < 25; i++)
encrypt(block);
/* format encrypted block for standard crypt(3) output */
for(i=0; i < 11; i++)
{
c = 0;
for(j = 0; j < 6; j++)
{
c <<= 1;
c |= block[6 * i + j];
}
c += '.';
if(c > '9')
c += 7;
if(c > 'Z')
c += 6;
iobuf[i + 2] = c;
}
iobuf[i + 2] = '\0';
/* prevent premature NULL terminator */
if(iobuf[1] == '\0')
iobuf[1] = iobuf[0];
return(iobuf);
}

View File

@@ -1,109 +0,0 @@
#!/usr/bin/python
# vim: encoding=utf-8
# expand Windows-specific *.in files
# for Visual Studio Builds
import os
import sys
import re
import string
import argparse
def open_compat(src, mode):
if (sys.version_info.major < 3):
return open(src, mode)
else:
return open(src, mode, encoding='utf-8', errors='surrogateescape')
def get_version(srcroot):
ver = {}
RE_VERSION = re.compile(r'^m4_define\(\[(gtk_\w+)\],\s*\[(\d+)\]\)')
RE_FLOAT_VERSION = re.compile(r'^m4_define\(\[(gtk_\w+)\],\s*\[(\d+\.\d*)\]\)')
with open(os.path.join(srcroot, 'configure.ac'), 'r') as ac:
for i in ac:
mo = RE_VERSION.search(i)
if mo:
ver[mo.group(1).upper()] = int(mo.group(2))
mo = RE_FLOAT_VERSION.search(i)
if mo:
ver[mo.group(1).upper()] = float(mo.group(2))
ver['GTK_BINARY_AGE'] = 100 * ver['GTK_MINOR_VERSION'] + ver['GTK_MICRO_VERSION']
ver['GTK_VERSION'] = '%d.%d.%d' % (ver['GTK_MAJOR_VERSION'],
ver['GTK_MINOR_VERSION'],
ver['GTK_MICRO_VERSION'])
ver['LT_RELEASE'] = '%d.%d' % (ver['GTK_MAJOR_VERSION'], ver['GTK_MINOR_VERSION'])
ver['LT_CURRENT'] = 100 * \
ver['GTK_MINOR_VERSION'] + \
ver['GTK_MICRO_VERSION'] - \
ver['GTK_INTERFACE_AGE']
ver['LT_REVISION'] = ver['GTK_INTERFACE_AGE']
ver['LT_AGE'] = ver['GTK_BINARY_AGE'] - ver['GTK_INTERFACE_AGE']
ver['LT_CURRENT_MINUS_AGE'] = ver['LT_CURRENT'] - ver['LT_AGE']
return ver
def process_in(src, dest, vars):
RE_VARS = re.compile(r'@(\w+?)@')
with open_compat(src, 'r') as s:
with open_compat(dest, 'w') as d:
for i in s:
i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i)
d.write(i)
def get_srcroot():
if not os.path.isabs(__file__):
path = os.path.abspath(__file__)
else:
path = __file__
dirname = os.path.dirname(path)
return os.path.abspath(os.path.join(dirname, '..', '..'))
def main(argv):
prog_desc = 'Create Various autogenerated Win32-specific Source Files'
parser = argparse.ArgumentParser(description=prog_desc)
parser.add_argument('--gtkwin32rc', dest='gtkwin32rc', action='store_const',
const=1,
help='Generate gtk-win32.rc')
parser.add_argument('--gtk3manifest', dest='gtk3manifest', action='store_const',
const=1,
help='Generate libgtk3.manifest')
args = parser.parse_args()
no_args = True
if args.gtkwin32rc is not None:
srcroot = get_srcroot()
ver = get_version(srcroot)
target = os.path.join(srcroot, 'gtk', 'gtk-win32.rc')
process_in(os.path.join(srcroot, 'gtk', 'gtk-win32.rc.in'),
target + '.intermediate',
ver)
fp_r = open_compat(target + '.intermediate', 'r')
lines = fp_r.readlines()
fp_r.close()
fp_w = open_compat(target, 'w')
fp_w.writelines([item for item in lines[:-1]])
fp_w.close()
os.unlink(target + '.intermediate')
no_args = False
if args.gtk3manifest is not None:
manifest = {}
manifest['EXE_MANIFEST_ARCHITECTURE'] = '*'
process_in(os.path.join(srcroot, 'gtk', 'libgtk3.manifest.in'),
os.path.join(srcroot, 'gtk', 'libgtk3.manifest'),
manifest)
no_args = False
if no_args is True:
raise SystemExit('Action argument required. Please see %s --help for details.' % __file__)
if __name__ == '__main__':
sys.exit(main(sys.argv))

102
build/win32/replace.py Normal file
View File

@@ -0,0 +1,102 @@
#!/usr/bin/python
#
# Simple utility script to manipulate
# certain types of strings in a file
# This can be used in various projects where
# there is the need to replace strings in files,
# and is copied from GLib's $(srcroot)/build/win32
# Author: Fan, Chun-wei
# Date: September 03, 2014
import os
import sys
import re
import string
import argparse
valid_actions = ['remove-prefix',
'replace-var',
'replace-str',
'remove-str']
def replace(src, dest, instring, outstring):
with open(src, 'r') as s:
with open(dest, 'w') as d:
for line in s:
i = line.replace(instring, outstring)
d.write(i)
def check_required_args(args, params):
for param in params:
if getattr(args, param, None) is None:
raise SystemExit('%s: error: --%s argument is required' % (__file__, param))
def warn_ignored_args(args, params):
for param in params:
if getattr(args, param, None) is not None:
print('%s: warning: --%s argument is ignored' % (__file__, param))
def main(argv):
parser = argparse.ArgumentParser(description='Process strings in a file.')
parser.add_argument('-a',
'--action',
help='Action to carry out. Can be one of:\n'
'remove-prefix\n'
'replace-var\n'
'replace-str\n'
'remove-str',
choices=valid_actions)
parser.add_argument('-i', '--input', help='Input file')
parser.add_argument('-o', '--output', help='Output file')
parser.add_argument('--instring', help='String to replace or remove')
parser.add_argument('--var', help='Autotools variable name to replace')
parser.add_argument('--outstring',
help='New String to replace specified string or variable')
parser.add_argument('--removeprefix', help='Prefix of string to remove')
args = parser.parse_args()
input_string = ''
output_string = ''
# We must have action, input, output for all operations
check_required_args(args, ['action','input','output'])
# Build the arguments by the operation that is to be done,
# to be fed into replace()
# Get rid of prefixes from a string
if args.action == 'remove-prefix':
check_required_args(args, ['instring','removeprefix'])
warn_ignored_args(args, ['outstring','var'])
input_string = args.removeprefix + args.instring
output_string = args.instring
# Replace an m4-style variable (those surrounded by @...@)
if args.action == 'replace-var':
check_required_args(args, ['var','outstring'])
warn_ignored_args(args, ['instring','removeprefix'])
input_string = '@' + args.var + '@'
output_string = args.outstring
# Replace a string
if args.action == 'replace-str':
check_required_args(args, ['instring','outstring'])
warn_ignored_args(args, ['var','removeprefix'])
input_string = args.instring
output_string = args.outstring
# Remove a string
if args.action == 'remove-str':
check_required_args(args, ['instring'])
warn_ignored_args(args, ['var','outstring','removeprefix'])
input_string = args.instring
output_string = ''
replace(args.input, args.output, input_string, output_string)
if __name__ == '__main__':
sys.exit(main(sys.argv))

View File

@@ -19,7 +19,8 @@
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\gtk\gtkdbusinterfaces.xml"><Filter>Resource Files</Filter></CustomBuild>
<CustomBuild Include="..\..\..\gtk\gtk-win32.rc.in"><Filter>Resource Files</Filter></CustomBuild>
<CustomBuild Include="..\..\..\gtk\gtk-win32.rc.body"><Filter>Resource Files</Filter></CustomBuild>
<CustomBuild Include="..\..\..\gtk\libgtk3.manifest.in"><Filter>Resource Files</Filter></CustomBuild>
</ItemGroup>
<ItemGroup>
#include "gtk-3.vs10.sourcefiles.filters"

View File

@@ -177,19 +177,33 @@
<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.in">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GenerateGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenerateGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GenerateGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenerateGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<CustomBuild Include="..\..\..\gtk\gtk-win32.rc.body">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(CopyGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\gtk\gtk-win32.rc;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(CopyGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\gtk\gtk-win32.rc;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(CopyGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\gtk\gtk-win32.rc;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying GTK+ Win32 Version Resource...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(CopyGtkWin32RC)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\gtk\gtk-win32.rc;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="..\..\..\gtk\libgtk3.manifest.in">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating GTK+ Win32 Manifest...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GenerateGtkWin32Manifest)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating GTK+ Win32 Manifest...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenerateGtkWin32Manifest)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating GTK+ Win32 Manifest...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GenerateGtkWin32Manifest)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating GTK+ Win32 Manifest...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenerateGtkWin32Manifest)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\gtk\libgtk3.manifest;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>

View File

@@ -18,7 +18,7 @@
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\gio-win32-2.0;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;_USE_MATH_DEFINES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<MultiProcessorCompilation>true</MultiProcessorCompilation>

View File

@@ -64,7 +64,8 @@ $(PythonPath)\python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix
cd $(SolutionDir)
</GenerateGtkDbusBuiltSources>
<GenerateGtkWin32RC>$(PythonPath)\python ..\process-in-win32.py --gtkwin32rc --gtk3manifest</GenerateGtkWin32RC>
<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>
</PropertyGroup>
<PropertyGroup>
@@ -83,8 +84,11 @@ cd $(SolutionDir)
<BuildMacro Include="GenerateGtkDbusBuiltSources">
<Value>$(GenerateGtkDbusBuiltSources)</Value>
</BuildMacro>
<BuildMacro Include="GenerateGtkWin32RC">
<Value>$(GenerateGtkWin32RC)</Value>
<BuildMacro Include="CopyGtkWin32RC">
<Value>$(CopyGtkWin32RC)</Value>
</BuildMacro>
<BuildMacro Include="GenerateGtkWin32Manifest">
<Value>$(GenerateGtkWin32Manifest)</Value>
</BuildMacro>
<BuildMacro Include="CopyDemosH">
<Value>$(CopyDemosH)</Value>

View File

@@ -5,9 +5,6 @@
</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
@@ -126,18 +123,19 @@ 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>
</PropertyGroup>
<PropertyGroup>
<_PropertySheetDisplayName>gtk3installsprops</_PropertySheetDisplayName>
@@ -146,15 +144,6 @@ mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\broadway
<BuildMacro Include="BinDir">
<Value>$(BinDir)</Value>
</BuildMacro>
<BuildMacro Include="InstalledDlls">
<Value>$(InstalledDlls)</Value>
</BuildMacro>
<BuildMacro Include="InstalledBins">
<Value>$(InstalledBins)</Value>
</BuildMacro>
<BuildMacro Include="InstalledBroadwayBins">
<Value>$(InstalledBroadwayBins)</Value>
</BuildMacro>
<BuildMacro Include="GtkDoInstallBin">
<Value>$(GtkDoInstallBin)</Value>
</BuildMacro>
@@ -164,5 +153,8 @@ mkdir $(CopyDir)\include\gtk-$(ApiVersion)\gdk\broadway
<BuildMacro Include="GtkDoInstallBroadwayHeaders">
<Value>$(GtkDoInstallBroadwayHeaders)</Value>
</BuildMacro>
<BuildMacro Include="GtkPostInstall">
<Value>$(GtkPostInstall)</Value>
</BuildMacro>
</ItemGroup>
</Project>

View File

@@ -157,29 +157,29 @@
<ItemGroup>
<CustomBuild Include="..\..\..\config.h.win32">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|Win32'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Broadway|x64'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|Win32'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkDoInstallBin)$(GtkDoInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(InstalledDlls);$(InstalledBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">blah;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">Installing Build Results...</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(InstalledDlls);$(InstalledBins);$(InstalledBroadwayBins);%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Broadway|x64'">blah;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>

View File

@@ -192,33 +192,63 @@
/>
</FileConfiguration>
</File>
<File RelativePath="..\..\..\gtk\gtk-win32.rc.in">
<File RelativePath="..\..\..\gtk\gtk-win32.rc.body">
<FileConfiguration Name="Debug|Win32">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Version Resource..."
CommandLine="$(GenerateGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest"
Description="Copying GTK+ Win32 Version Resource..."
CommandLine="$(CopyGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc"
/>
</FileConfiguration>
<FileConfiguration Name="Release|Win32">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Version Resource..."
CommandLine="$(GenerateGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest"
Description="Copying GTK+ Win32 Version Resource..."
CommandLine="$(CopyGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc"
/>
</FileConfiguration>
<FileConfiguration Name="Debug|x64">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Version Resource..."
CommandLine="$(GenerateGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest"
Description="Copying GTK+ Win32 Version Resource..."
CommandLine="$(CopyGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc"
/>
</FileConfiguration>
<FileConfiguration Name="Release|x64">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Version Resource..."
CommandLine="$(GenerateGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc;..\..\..\gtk\libgtk3.manifest"
Description="Copying GTK+ Win32 Version Resource..."
CommandLine="$(CopyGtkWin32RC)"
Outputs="..\..\..\gtk\gtk-win32.rc"
/>
</FileConfiguration>
</File>
<File RelativePath="..\..\..\gtk\libgtk3.manifest.in">
<FileConfiguration Name="Debug|Win32">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Manifest..."
CommandLine="$(GenerateGtkWin32Manifest)"
Outputs="..\..\..\gtk\libgtk3.manifest"
/>
</FileConfiguration>
<FileConfiguration Name="Release|Win32">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Manifest..."
CommandLine="$(GenerateGtkWin32Manifest)"
Outputs="..\..\..\gtk\libgtk3.manifest"
/>
</FileConfiguration>
<FileConfiguration Name="Debug|x64">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Manifest..."
CommandLine="$(GenerateGtkWin32Manifest)"
Outputs="..\..\..\gtk\libgtk3.manifest"
/>
</FileConfiguration>
<FileConfiguration Name="Release|x64">
<Tool Name="VCCustomBuildTool"
Description="Generating GTK+ Win32 Manifest..."
CommandLine="$(GenerateGtkWin32Manifest)"
Outputs="..\..\..\gtk\libgtk3.manifest"
/>
</FileConfiguration>
</File>

View File

@@ -9,7 +9,7 @@
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0"
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\gio-win32-2.0;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include"
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;_USE_MATH_DEFINES"
ForcedIncludeFiles="msvc_recommended_pragmas.h"
AdditionalOptions="/MP"

View File

@@ -63,8 +63,12 @@ cd $(SolutionDir)&#x0D;&#x0A;
"
/>
<UserMacro
Name="GenerateGtkWin32RC"
Value="$(PythonPath)\python ..\process-in-win32.py --gtkwin32rc --gtk3manifest"
Name="CopyGtkWin32RC"
Value="copy ..\..\..\gtk\gtk-win32.rc.body ..\..\..\gtk\gtk-win32.rc"
/>
<UserMacro
Name="GenerateGtkWin32Manifest"
Value="$(PythonPath)\python ..\replace.py --action=replace-var --input=..\..\..\gtk\libgtk3.manifest.in --output=..\..\..\gtk\libgtk3.manifest --var=EXE_MANIFEST_ARCHITECTURE --outstring=*"
/>
<UserMacro
Name="CopyDemosH"

View File

@@ -29,7 +29,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -42,7 +42,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -56,7 +56,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -69,7 +69,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -84,7 +84,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -98,7 +98,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -113,7 +113,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
/>
</Configuration>
<Configuration
@@ -127,7 +127,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)"
CommandLine="$(GtkDoInstallBin)$(GtkDoInstall)$(GtkDoInstallBroadwayHeaders)$(GtkPostInstall)"
/>
</Configuration>
</Configurations>

View File

@@ -128,20 +128,24 @@ 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"
"
/>
"
/>
</VisualStudioPropertySheet>

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], [19])
m4_define([gtk_micro_version], [9])
m4_define([gtk_interface_age], [0])
m4_define([gtk_minor_version], [20])
m4_define([gtk_micro_version], [7])
m4_define([gtk_interface_age], [7])
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], [45])
m4_define([glib_required_micro], [8])
m4_define([glib_required_minor], [49])
m4_define([glib_required_micro], [1])
m4_define([glib_required_version],
[glib_required_major.glib_required_minor.glib_required_micro])
m4_define([glib_min_required_minor],
@@ -580,7 +580,7 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
# Remove this check once cairo_required_version reaches at least 1.14.4
# Remove this check once cairo_required_version reaches at least 1.16.0
case $host_os in
mingw*)
PKG_CHECK_MODULES(CAIRO, [cairo >= cairo_required_version])
@@ -588,7 +588,7 @@ case $host_os in
[AC_MSG_RESULT([found])],
[AC_MSG_ERROR(
[cairo_win32_surface_create_with_format is not found in cairo library
You need cairo version newer than 2015-04-14])])
You need a cairo snapshot 1.15.x or 1.16.x release or newer])])
;;
*)
;;
@@ -794,6 +794,9 @@ 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]))
@@ -1472,7 +1475,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 -gt 1 -o \
if test $CUPS_API_MAJOR -lt 1 -o \
$CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -lt 2; then
AC_MSG_ERROR([CUPS >= 1.2 not found])
fi
@@ -1922,7 +1925,6 @@ docs/tools/Makefile
build/Makefile
build/gtk-introspection-msvc.mak
build/win32/Makefile
build/win32/crypt/Makefile
build/win32/vs9/Makefile
build/win32/vs9/gtk3-version-paths.vsprops
build/win32/vs10/Makefile
@@ -1943,7 +1945,7 @@ gdk/gdkversionmacros.h
gtk/Makefile
gtk/makefile.msc
gtk/gtkversion.h
gtk/gtk-win32.rc
gtk/gtk-win32.rc.body
gtk/libgtk3.manifest
libgail-util/Makefile
modules/Makefile

View File

@@ -6,10 +6,10 @@
<property name="default-height">200</property>
<property name="icon-name">document-open</property>
<child>
<object class="GtkGrid" id="grid">
<object class="GtkGrid">
<property name="visible">1</property>
<child>
<object class="GtkToolbar" id="toolbar">
<object class="GtkToolbar">
<property name="visible">1</property>
<property name="hexpand">1</property>
<style>
@@ -22,19 +22,19 @@
</object>
</child>
<child>
<object class="GtkToolButton" id="quit">
<object class="GtkToolButton">
<property name="visible">1</property>
<property name="icon-name">application-exit</property>
<property name="action-name">app.quit</property>
</object>
</child>
<child>
<object class="GtkSeparatorToolItem" id="sep">
<object class="GtkSeparatorToolItem">
<property name="visible">1</property>
</object>
</child>
<child>
<object class="GtkToolButton" id="logo">
<object class="GtkToolButton">
<property name="visible">1</property>
<property name="icon-name">applications-other</property>
<property name="action-name">win.logo</property>
@@ -61,9 +61,9 @@
</object>
</child>
<child internal-child="action_area">
<object class="GtkBox" id="action_area">
<object class="GtkBox">
<child>
<object class="GtkButton" id="button">
<object class="GtkButton">
<property name="visible">1</property>
<property name="valign">center</property>
<property name="label" translatable="yes">_OK</property>
@@ -80,11 +80,11 @@
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="sw">
<object class="GtkScrolledWindow">
<property name="visible">1</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTextView" id="contents">
<object class="GtkTextView">
<property name="visible">1</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>

View File

@@ -2,7 +2,7 @@
*
* Demonstrates a simple application.
*
* This examples uses GtkApplication, GtkApplicationWindow, GtkBuilder
* This example uses GtkApplication, GtkApplicationWindow, GtkBuilder
* as well as GMenu and GResource. Due to the way GtkApplication is structured,
* it is run as a separate process.
*/

19
demos/gtk-demo/appmenu.ui Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.10 -->
<menu id="appmenu">
<section>
<item>
<attribute name="label" translatable="yes">About</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">_Quit</attribute>
<attribute name="action">app.quit</attribute>
<attribute name="accel">&lt;Primary&gt;q</attribute>
</item>
</section>
</menu>
</interface>

View File

@@ -1,4 +1,4 @@
/* CSS Theming/CSS Accordion
/* Theming/CSS Accordion
*
* A simple accordion demo written using CSS transitions and multiple backgrounds
*

View File

@@ -1,4 +1,4 @@
/* CSS Theming/CSS Basics
/* Theming/CSS Basics
*
* Gtk themes are written using CSS. Every widget is build of multiple items
* that you can style very similarly to a regular website.

View File

@@ -1,4 +1,4 @@
/* CSS Theming/Multiple Backgrounds
/* Theming/Multiple Backgrounds
*
* Gtk themes are written using CSS. Every widget is build of multiple items
* that you can style very similarly to a regular website.

View File

@@ -1,4 +1,4 @@
/* CSS Theming/Animated Backgrounds
/* Theming/Animated Backgrounds
*
* This demo is done in honour of the Pixbufs demo further down.
* It is done exclusively with CSS as the background of the window.

View File

@@ -1,4 +1,4 @@
/* CSS Theming/Shadows
/* Theming/Shadows
*
* This demo shows how to use CSS shadows.
*/

View File

@@ -29,7 +29,7 @@ button {
button:hover {
text-shadow: 3px 3px 5px alpha(black, 0.75);
icon-shadow: 3px 3px 5px alpha(black, 0.75);
-gtk-icon-shadow: 3px 3px 5px alpha(black, 0.75);
box-shadow: 3px 3px 5px alpha(black, 0.5) inset;
border: solid 1px alpha(black, 0.75);
}
@@ -37,7 +37,7 @@ button:hover {
button:active {
padding: 11px 9px 9px 11px;
text-shadow: 1px 1px 2.5px alpha(black, 0.6);
icon-shadow: 1px 1px 2.5px alpha(black, 0.6);
-gtk-icon-shadow: 1px 1px 2.5px alpha(black, 0.6);
}

View File

@@ -10,12 +10,12 @@
background-color: #4a90d9;
}
.scrollbar.trough,
scrollbar trough,
.scrollbars-junction {
background-color: alpha(white, 0.80);
}
.scrollbar.slider {
scrollbar slider {
border-width: 3px;
border-style: solid;
border-radius: 10px;
@@ -24,11 +24,11 @@
background-color: #999;
}
.scrollbar.slider:prelight {
scrollbar slider:hover {
background-color: #555;
}
.pane-separator {
paned separator {
background-color: alpha(white, 0.80);
background-image: linear-gradient(transparent, transparent 1px, #999 1px, #999 4px, transparent 4px);
background-size: 40px auto;
@@ -36,6 +36,6 @@
background-position: center;
}
.pane-separator:prelight {
paned separator:hover {
background-image: linear-gradient(transparent, transparent 1px, #555 1px, #555 4px, transparent 4px);
}

View File

@@ -2,6 +2,7 @@
<gresources>
<gresource prefix="/ui">
<file preprocess="xml-stripblanks">main.ui</file>
<file preprocess="xml-stripblanks">appmenu.ui</file>
</gresource>
<gresource prefix="/application_demo">
<file>application.c</file>

View File

@@ -78,6 +78,7 @@
<property name="visible">1</property>
<property name="label" translatable="yes">Save _As</property>
<property name="use-underline">1</property>
<accelerator key="s" modifiers="primary | shift-mask" signal="activate"/>
</object>
</child>
<child>

View File

@@ -131,7 +131,8 @@ update_axes_from_event (GdkEvent *event,
source_device = gdk_event_get_source_device (event);
sequence = gdk_event_get_event_sequence (event);
if (event->type == GDK_TOUCH_END)
if (event->type == GDK_TOUCH_END ||
event->type == GDK_TOUCH_CANCEL)
{
g_hash_table_remove (data->touch_info, sequence);
return;

View File

@@ -18,7 +18,7 @@
<property name="tooltip-text">Reset</property>
<signal name="clicked" handler="reset" swapped="no"/>
<child>
<object class="GtkImage" id="image1">
<object class="GtkImage">
<property name="visible">1</property>
<property name="icon_name">view-refresh-symbolic</property>
</object>
@@ -31,12 +31,12 @@
<object class="GtkBox">
<property name="visible">1</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<object class="GtkScrolledWindow">
<property name="visible">1</property>
<property name="can_focus">1</property>
<property name="hscrollbar_policy">never</property>
<child>
<object class="GtkViewport" id="viewport1">
<object class="GtkViewport">
<property name="visible">1</property>
<child>
<object class="GtkBox">

View File

@@ -2,12 +2,10 @@
*
* Many applications can't use GTK+ widgets, for a variety of reasons,
* but still want their user interface to appear integrated with the
* rest of the desktop, and follow GTK+ themes.
* rest of the desktop, and follow GTK+ themes. This demo shows how to
* use GtkStyleContext and the gtk_render_ APIs to achieve this.
*
* This demo shows how to use GtkStyleContext and the gtk_render_ APIs
* to achieve this. Note that this is a very simple, non-interactive
* example. Also note that the application is responsible for choosing
* suitable sizes for the rendered components.
* Note that this is a very simple, non-interactive example.
*/
#include <gtk/gtk.h>
@@ -110,19 +108,11 @@ append_element (GtkWidgetPath *path,
}
static GtkStyleContext *
get_style (GtkStyleContext *parent,
const char *selector)
create_context_for_path (GtkWidgetPath *path,
GtkStyleContext *parent)
{
GtkWidgetPath *path;
GtkStyleContext *context;
if (parent)
path = gtk_widget_path_copy (gtk_style_context_get_path (parent));
else
path = gtk_widget_path_new ();
append_element (path, selector);
context = gtk_style_context_new ();
gtk_style_context_set_path (context, path);
gtk_style_context_set_parent (context, parent);
@@ -135,93 +125,273 @@ get_style (GtkStyleContext *parent,
return context;
}
static GtkStyleContext *
get_style (GtkStyleContext *parent,
const char *selector)
{
GtkWidgetPath *path;
if (parent)
path = gtk_widget_path_copy (gtk_style_context_get_path (parent));
else
path = gtk_widget_path_new ();
append_element (path, selector);
return create_context_for_path (path, parent);
}
static GtkStyleContext *
get_style_with_siblings (GtkStyleContext *parent,
const char *selector,
const char **siblings,
gint position)
{
GtkWidgetPath *path, *siblings_path;
guint i;
if (parent)
path = gtk_widget_path_copy (gtk_style_context_get_path (parent));
else
path = gtk_widget_path_new ();
siblings_path = gtk_widget_path_new ();
for (i = 0; siblings[i]; i++)
append_element (siblings_path, siblings[i]);
gtk_widget_path_append_with_siblings (path, siblings_path, position);
gtk_widget_path_unref (siblings_path);
return create_context_for_path (path, parent);
}
static void
draw_menu (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
gint width,
gint height)
draw_style_common (GtkStyleContext *context,
cairo_t *cr,
gint x,
gint y,
gint width,
gint height,
gint *contents_x,
gint *contents_y,
gint *contents_width,
gint *contents_height)
{
GtkBorder margin, border, padding;
int min_width, min_height;
gtk_style_context_get_margin (context, gtk_style_context_get_state (context), &margin);
gtk_style_context_get_border (context, gtk_style_context_get_state (context), &border);
gtk_style_context_get_padding (context, gtk_style_context_get_state (context), &padding);
gtk_style_context_get (context, gtk_style_context_get_state (context),
"min-width", &min_width,
"min-height", &min_height,
NULL);
x += margin.left;
y += margin.top;
width -= margin.left + margin.right;
height -= margin.top + margin.bottom;
width = MAX (width, min_width);
height = MAX (height, min_height);
gtk_render_background (context, cr, x, y, width, height);
gtk_render_frame (context, cr, x, y, width, height);
if (contents_x)
*contents_x = x + border.left + padding.left;
if (contents_y)
*contents_y = y + border.top + padding.top;
if (contents_width)
*contents_width = width - border.left - border.right - padding.left - padding.right;
if (contents_height)
*contents_height = height - border.top - border.bottom - padding.top - padding.bottom;
}
static void
query_size (GtkStyleContext *context,
gint *width,
gint *height)
{
GtkBorder margin, border, padding;
int min_width, min_height;
gtk_style_context_get_margin (context, gtk_style_context_get_state (context), &margin);
gtk_style_context_get_border (context, gtk_style_context_get_state (context), &border);
gtk_style_context_get_padding (context, gtk_style_context_get_state (context), &padding);
gtk_style_context_get (context, gtk_style_context_get_state (context),
"min-width", &min_width,
"min-height", &min_height,
NULL);
min_width += margin.left + margin.right + border.left + border.right + padding.left + padding.right;
min_height += margin.top + margin.bottom + border.top + border.bottom + padding.top + padding.bottom;
if (width)
*width = MAX (*width, min_width);
if (height)
*height = MAX (*height, min_height);
}
static void
draw_menu (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
gint width,
gint *height)
{
GtkStyleContext *menu_context;
GtkStyleContext *menuitem_context;
GtkStyleContext *hovermenuitem_context;
GtkStyleContext *hoveredarrowmenuitem_context;
GtkStyleContext *arrowmenuitem_context;
GtkStyleContext *checkmenuitem_context;
GtkStyleContext *disabledarrowmenuitem_context;
GtkStyleContext *disabledcheckmenuitem_context;
GtkStyleContext *radiomenuitem_context;
GtkStyleContext *disablemenuitem_context;
GtkStyleContext *disabledradiomenuitem_context;
GtkStyleContext *separatormenuitem_context;
gint menuitem1_height, menuitem2_height, menuitem3_height, menuitem4_height, menuitem5_height;
gint contents_x, contents_y, contents_width, contents_height;
gint menu_x, menu_y, menu_width, menu_height;
gint arrow_width, arrow_height, arrow_size;
gint toggle_x, toggle_y, toggle_width, toggle_height;
/* This information is taken from the GtkMenu docs, see "CSS nodes" */
menu_context = get_style (gtk_widget_get_style_context(widget), "menu");
gtk_render_background (menu_context, cr, x, y, width, height);
gtk_render_frame (menu_context, cr, x, y, width, height);
hovermenuitem_context = get_style (menu_context, "menuitem:hover");
gtk_render_background (hovermenuitem_context, cr, x, y, width, 20);
gtk_render_frame (hovermenuitem_context, cr, x, y, width, 20);
/* arrow for left to right */
arrowmenuitem_context = get_style (hovermenuitem_context, "arrow:dir(ltr)");
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x + width - 20, y, 20);
g_object_unref (arrowmenuitem_context);
hoveredarrowmenuitem_context = get_style (hovermenuitem_context, "arrow.right:dir(ltr)");
menuitem_context = get_style (menu_context, "menuitem");
gtk_render_background (menuitem_context, cr, x, y + 20, width, 20);
gtk_render_frame (menuitem_context, cr, x, y + 20, width, 20);
disablemenuitem_context = get_style (menu_context, "menuitem:disabled");
/* arrow for right to left, sensitive */
arrowmenuitem_context = get_style (menuitem_context, "arrow:dir(rtl)");
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x, y + 20, 20);
g_object_unref (arrowmenuitem_context);
/* arrow for right to left, insensitive */
arrowmenuitem_context = get_style (disablemenuitem_context, "arrow:dir(rtl)");
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x + width - 20, y + 20, 20);
gtk_render_background (menuitem_context, cr, x, y + 40, width, 20);
gtk_render_frame (menuitem_context, cr, x, y + 40, width, 20);
/* check enabled, sensitive */
disablemenuitem_context = get_style (menu_context, "menuitem:disabled");
disabledarrowmenuitem_context = get_style (disablemenuitem_context, "arrow:dir(rtl)");
checkmenuitem_context = get_style (menuitem_context, "check:checked");
gtk_render_frame (checkmenuitem_context, cr, x + 2, y + 40, 16, 16);
gtk_render_check (checkmenuitem_context, cr, x + 2, y + 40, 16, 16);
g_object_unref (checkmenuitem_context);
/* check unchecked, insensitive */
checkmenuitem_context = get_style (disablemenuitem_context, "check");
gtk_render_frame (checkmenuitem_context, cr, x + width - 18, y + 40, 16, 16);
gtk_render_check (checkmenuitem_context, cr, x + width - 18, y + 40, 16, 16);
/* draw separator */
separatormenuitem_context = get_style (menuitem_context, "separator:disabled");
gtk_render_line (separatormenuitem_context, cr, x + 1, y + 60, x + width - 2, y + 60);
gtk_render_background (menuitem_context, cr, x, y + 70, width, 20);
gtk_render_frame (menuitem_context, cr, x, y + 70, width, 20);
/* radio checked, sensitive */
disabledcheckmenuitem_context = get_style (disablemenuitem_context, "check");
separatormenuitem_context = get_style (menu_context, "separator:disabled");
radiomenuitem_context = get_style (menuitem_context, "radio:checked");
gtk_render_frame (radiomenuitem_context, cr, x + 2, y + 70, 16, 16);
gtk_render_option (radiomenuitem_context, cr, x + 2, y + 70, 16, 16);
g_object_unref (radiomenuitem_context);
disabledradiomenuitem_context = get_style (disablemenuitem_context, "radio");
/* radio unchecked, insensitive */
radiomenuitem_context = get_style (disablemenuitem_context, "radio");
gtk_render_frame (radiomenuitem_context, cr, x + width - 18, y + 70, 16, 16);
gtk_render_option (radiomenuitem_context, cr, x + width - 18, y + 70, 16, 16);
*height = 0;
query_size (menu_context, NULL, height);
menuitem1_height = 0;
query_size (hovermenuitem_context, NULL, &menuitem1_height);
query_size (hoveredarrowmenuitem_context, NULL, &menuitem1_height);
*height += menuitem1_height;
menuitem2_height = 0;
query_size (menu_context, NULL, &menuitem5_height);
query_size (menuitem_context, NULL, &menuitem2_height);
query_size (arrowmenuitem_context, NULL, &menuitem2_height);
query_size (disabledarrowmenuitem_context, NULL, &menuitem2_height);
*height += menuitem2_height;
menuitem3_height = 0;
query_size (menu_context, NULL, &menuitem5_height);
query_size (menuitem_context, NULL, &menuitem3_height);
query_size (checkmenuitem_context, NULL, &menuitem3_height);
query_size (disabledcheckmenuitem_context, NULL, &menuitem3_height);
*height += menuitem3_height;
menuitem4_height = 0;
query_size (menu_context, NULL, &menuitem5_height);
query_size (separatormenuitem_context, NULL, &menuitem4_height);
*height += menuitem4_height;
menuitem5_height = 0;
query_size (menu_context, NULL, &menuitem5_height);
query_size (menuitem_context, NULL, &menuitem5_height);
query_size (radiomenuitem_context, NULL, &menuitem5_height);
query_size (disabledradiomenuitem_context, NULL, &menuitem5_height);
*height += menuitem5_height;
draw_style_common (menu_context, cr, x, y, width, *height,
&menu_x, &menu_y, &menu_width, &menu_height);
/* Hovered with right arrow */
gtk_style_context_get (hoveredarrowmenuitem_context, gtk_style_context_get_state (hoveredarrowmenuitem_context),
"min-width", &arrow_width, "min-height", &arrow_height, NULL);
arrow_size = MIN (arrow_width, arrow_height);
draw_style_common (hovermenuitem_context, cr, menu_x, menu_y, menu_width, menuitem1_height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_render_arrow (hoveredarrowmenuitem_context, cr, G_PI / 2,
contents_x + contents_width - arrow_size,
contents_y + (contents_height - arrow_size) / 2, arrow_size);
/* Left arrow sensitive, and right arrow insensitive */
draw_style_common (menuitem_context, cr, menu_x, menu_y + menuitem1_height, menu_width, menuitem2_height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_style_context_get (arrowmenuitem_context, gtk_style_context_get_state (arrowmenuitem_context),
"min-width", &arrow_width, "min-height", &arrow_height, NULL);
arrow_size = MIN (arrow_width, arrow_height);
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2,
contents_x,
contents_y + (contents_height - arrow_size) / 2, arrow_size);
gtk_style_context_get (disabledarrowmenuitem_context, gtk_style_context_get_state (disabledarrowmenuitem_context),
"min-width", &arrow_width, "min-height", &arrow_height, NULL);
arrow_size = MIN (arrow_width, arrow_height);
gtk_render_arrow (disabledarrowmenuitem_context, cr, G_PI / 2,
contents_x + contents_width - arrow_size,
contents_y + (contents_height - arrow_size) / 2, arrow_size);
/* Left check enabled, sensitive, and right check unchecked, insensitive */
draw_style_common (menuitem_context, cr, menu_x, menu_y + menuitem1_height + menuitem2_height, menu_width, menuitem3_height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_style_context_get (checkmenuitem_context, gtk_style_context_get_state (checkmenuitem_context),
"min-width", &toggle_width, "min-height", &toggle_height, NULL);
draw_style_common (checkmenuitem_context, cr,
contents_x,
contents_y,
toggle_width, toggle_height,
&toggle_x, &toggle_y, &toggle_width, &toggle_height);
gtk_render_check (checkmenuitem_context, cr, toggle_x, toggle_y, toggle_width, toggle_height);
gtk_style_context_get (disabledcheckmenuitem_context, gtk_style_context_get_state (disabledcheckmenuitem_context),
"min-width", &toggle_width, "min-height", &toggle_height, NULL);
draw_style_common (disabledcheckmenuitem_context, cr,
contents_x + contents_width - toggle_width,
contents_y,
toggle_width, toggle_height,
&toggle_x, &toggle_y, &toggle_width, &toggle_height);
gtk_render_check (disabledcheckmenuitem_context, cr, toggle_x, toggle_y, toggle_width, toggle_height);
/* Separator */
draw_style_common (separatormenuitem_context, cr, menu_x, menu_y + menuitem1_height + menuitem2_height + menuitem3_height,
menu_width, menuitem4_height,
NULL, NULL, NULL, NULL);
/* Left check enabled, sensitive, and right check unchecked, insensitive */
draw_style_common (menuitem_context, cr, menu_x, menu_y + menuitem1_height + menuitem2_height + menuitem3_height + menuitem4_height,
menu_width, menuitem5_height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_style_context_get (radiomenuitem_context, gtk_style_context_get_state (radiomenuitem_context),
"min-width", &toggle_width, "min-height", &toggle_height, NULL);
draw_style_common (radiomenuitem_context, cr,
contents_x,
contents_y,
toggle_width, toggle_height,
&toggle_x, &toggle_y, &toggle_width, &toggle_height);
gtk_render_check (radiomenuitem_context, cr, toggle_x, toggle_y, toggle_width, toggle_height);
gtk_style_context_get (disabledradiomenuitem_context, gtk_style_context_get_state (disabledradiomenuitem_context),
"min-width", &toggle_width, "min-height", &toggle_height, NULL);
draw_style_common (disabledradiomenuitem_context, cr,
contents_x + contents_width - toggle_width,
contents_y,
toggle_width, toggle_height,
&toggle_x, &toggle_y, &toggle_width, &toggle_height);
gtk_render_check (disabledradiomenuitem_context, cr, toggle_x, toggle_y, toggle_width, toggle_height);
g_object_unref (separatormenuitem_context);
g_object_unref (disablemenuitem_context);
g_object_unref (radiomenuitem_context);
g_object_unref (checkmenuitem_context);
g_object_unref (arrowmenuitem_context);
g_object_unref (hovermenuitem_context);
g_object_unref (menuitem_context);
g_object_unref (menu_context);
g_object_unref (menuitem_context);
g_object_unref (hovermenuitem_context);
g_object_unref (hoveredarrowmenuitem_context);
g_object_unref (arrowmenuitem_context);
g_object_unref (checkmenuitem_context);
g_object_unref (disabledarrowmenuitem_context);
g_object_unref (disabledcheckmenuitem_context);
g_object_unref (radiomenuitem_context);
g_object_unref (disablemenuitem_context);
g_object_unref (disabledradiomenuitem_context);
g_object_unref (separatormenuitem_context);
}
static void
@@ -230,28 +400,49 @@ draw_menubar (GtkWidget *widget,
gint x,
gint y,
gint width,
gint height)
gint *height)
{
GtkStyleContext *frame_context;
GtkStyleContext *border_context;
GtkStyleContext *menubar_context;
GtkStyleContext *hovered_menuitem_context;
GtkStyleContext *menuitem_context;
gint item_width = width / 3;
gint contents_x, contents_y, contents_width, contents_height;
gint item_width;
/* Menubar background is the same color as our base background, so use a frame */
frame_context = get_style (NULL, "frame");
border_context = get_style (frame_context, "border");
/* This information is taken from the GtkMenuBar docs, see "CSS nodes" */
menubar_context = get_style (NULL, "menubar.background");
menubar_context = get_style (NULL, "menubar");
hovered_menuitem_context = get_style (menubar_context, "menuitem:hover");
menuitem_context = get_style (menubar_context, "menuitem");
gtk_render_background (menubar_context, cr, x, y, width, height);
gtk_render_frame (menubar_context, cr, x, y, width, height);
*height = 0;
query_size (frame_context, NULL, height);
query_size (border_context, NULL, height);
query_size (menubar_context, NULL, height);
query_size (hovered_menuitem_context, NULL, height);
query_size (menuitem_context, NULL, height);
menuitem_context = get_style (menubar_context, "menuitem:hover");
gtk_render_background (menuitem_context, cr, x, y, item_width, 20);
gtk_render_frame (menuitem_context, cr, x, y, item_width, 20);
gtk_render_background (menuitem_context, cr, x + item_width * 2, y, item_width, 20);
gtk_render_frame (menuitem_context, cr, x + item_width * 2, y, item_width, 20);
draw_style_common (frame_context, cr, x, y, width, *height,
NULL, NULL, NULL, NULL);
draw_style_common (border_context, cr, x, y, width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
draw_style_common (menubar_context, cr, contents_x, contents_y, contents_width, contents_height,
NULL, NULL, NULL, NULL);
item_width = contents_width / 3;
draw_style_common (hovered_menuitem_context, cr, contents_x, contents_y, item_width, contents_height,
NULL, NULL, NULL, NULL);
draw_style_common (menuitem_context, cr, contents_x + item_width * 2, contents_y, item_width, contents_height,
NULL, NULL, NULL, NULL);
g_object_unref (menuitem_context);
g_object_unref (hovered_menuitem_context);
g_object_unref (menubar_context);
g_object_unref (border_context);
g_object_unref (frame_context);
}
static void
@@ -265,39 +456,40 @@ draw_notebook (GtkWidget *widget,
GtkStyleContext *notebook_context;
GtkStyleContext *header_context;
GtkStyleContext *tabs_context;
GtkStyleContext *tab_context;
GtkStyleContext *tab1_context, *tab2_context;
GtkStyleContext *stack_context;
gint header_height = 40;
gint header_height;
gint contents_x, contents_y, contents_width, contents_height;
/* This information is taken from the GtkNotebook docs, see "CSS nodes" */
notebook_context = get_style (NULL, "notebook.frame");
gtk_render_background (notebook_context, cr, x, y, width, height);
gtk_render_frame (notebook_context, cr, x, y, width, height);
header_context = get_style (notebook_context, "header.top");
gtk_render_background (header_context, cr, x, y, width, header_height);
gtk_render_frame (header_context, cr, x, y, width, header_height);
tabs_context = get_style (header_context, "tabs");
gtk_render_background (tabs_context, cr, x, y, width, header_height);
gtk_render_frame (tabs_context, cr, x, y, width, header_height);
tab_context = get_style (tabs_context, "tab:active");
gtk_render_background (tab_context, cr, x, y, width/2, header_height);
gtk_render_frame (tab_context, cr, x, y, width/2, header_height);
g_object_unref (tab_context);
tab_context = get_style (tabs_context, "tab");
gtk_render_background (tab_context, cr, x + width/2, y, width/2, header_height);
gtk_render_frame (tab_context, cr, x + width/2, y, width/2, header_height);
tab1_context = get_style (tabs_context, "tab:checked");
tab2_context = get_style (tabs_context, "tab:hover");
stack_context = get_style (notebook_context, "stack");
gtk_render_background (stack_context, cr, x, y + header_height, width, height - header_height);
gtk_render_frame (stack_context, cr, x, y + header_height, width, height - header_height);
header_height = 0;
query_size (notebook_context, NULL, &header_height);
query_size (header_context, NULL, &header_height);
query_size (tabs_context, NULL, &header_height);
query_size (tab1_context, NULL, &header_height);
query_size (tab2_context, NULL, &header_height);
draw_style_common (notebook_context, cr, x, y, width, height, NULL, NULL, NULL, NULL);
draw_style_common (header_context, cr, x, y, width, header_height, NULL, NULL, NULL, NULL);
draw_style_common (tabs_context, cr, x, y, width, header_height, NULL, NULL, NULL, NULL);
draw_style_common (tab1_context, cr, x, y, width / 2, header_height,
&contents_x, &contents_y, &contents_width, &contents_height);
draw_style_common (tab2_context, cr, x + width / 2, y, width / 2, header_height,
NULL, NULL, NULL, NULL);
draw_style_common (stack_context, cr, x, y + header_height, width,height - header_height,
NULL, NULL, NULL, NULL);
g_object_unref (stack_context);
g_object_unref (tab_context);
g_object_unref (tabs_context);
g_object_unref (tab1_context);
g_object_unref (tab2_context);
g_object_unref (header_context);
g_object_unref (notebook_context);
}
@@ -308,29 +500,44 @@ draw_horizontal_scrollbar (GtkWidget *widget,
gint x,
gint y,
gint width,
gint height,
gint position,
GtkStateFlags state)
GtkStateFlags state,
gint *height)
{
GtkStyleContext *scrollbar_context;
GtkStyleContext *contents_context;
GtkStyleContext *trough_context;
GtkStyleContext *slider_context;
gint slider_width;
/* This information is taken from the GtkScrollbar docs, see "CSS nodes" */
scrollbar_context = get_style (NULL, "scrollbar.horizontal");
trough_context = get_style (scrollbar_context, "trough");
scrollbar_context = get_style (NULL, "scrollbar.horizontal.bottom");
contents_context = get_style (scrollbar_context, "contents");
trough_context = get_style (contents_context, "trough");
slider_context = get_style (trough_context, "slider");
gtk_style_context_set_state (scrollbar_context, state);
gtk_style_context_set_state (contents_context, state);
gtk_style_context_set_state (trough_context, state);
gtk_style_context_set_state (slider_context, state);
gtk_render_background (trough_context, cr, x, y, width, height);
gtk_render_frame (trough_context, cr, x, y, width, height);
gtk_render_slider (slider_context, cr, x + position, y + 1, 30, height - 2, GTK_ORIENTATION_HORIZONTAL);
*height = 0;
query_size (scrollbar_context, NULL, height);
query_size (contents_context, NULL, height);
query_size (trough_context, NULL, height);
query_size (slider_context, NULL, height);
gtk_style_context_get (slider_context, gtk_style_context_get_state (slider_context),
"min-width", &slider_width, NULL);
draw_style_common (scrollbar_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (contents_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (trough_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (slider_context, cr, x + position, y, slider_width, *height, NULL, NULL, NULL, NULL);
g_object_unref (slider_context);
g_object_unref (trough_context);
g_object_unref (contents_context);
g_object_unref (scrollbar_context);
}
@@ -377,10 +584,13 @@ draw_check (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
GtkStateFlags state)
GtkStateFlags state,
gint *width,
gint *height)
{
GtkStyleContext *button_context;
GtkStyleContext *check_context;
gint contents_x, contents_y, contents_width, contents_height;
/* This information is taken from the GtkCheckButton docs, see "CSS nodes" */
button_context = get_style (NULL, "checkbutton");
@@ -388,9 +598,14 @@ draw_check (GtkWidget *widget,
gtk_style_context_set_state (check_context, state);
gtk_render_background (check_context, cr, x, y, 20, 20);
gtk_render_frame (check_context, cr, x, y, 20, 20);
gtk_render_check (check_context, cr, x, y, 20, 20);
*width = *height = 0;
query_size (button_context, width, height);
query_size (check_context, width, height);
draw_style_common (button_context, cr, x, y, *width, *height, NULL, NULL, NULL, NULL);
draw_style_common (check_context, cr, x, y, *width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_render_check (check_context, cr, contents_x, contents_y, contents_width, contents_height);
g_object_unref (check_context);
g_object_unref (button_context);
@@ -402,10 +617,13 @@ draw_radio (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
GtkStateFlags state)
GtkStateFlags state,
gint *width,
gint *height)
{
GtkStyleContext *button_context;
GtkStyleContext *check_context;
gint contents_x, contents_y, contents_width, contents_height;
/* This information is taken from the GtkRadioButton docs, see "CSS nodes" */
button_context = get_style (NULL, "radiobutton");
@@ -413,9 +631,14 @@ draw_radio (GtkWidget *widget,
gtk_style_context_set_state (check_context, state);
gtk_render_background (check_context, cr, x, y, 20, 20);
gtk_render_frame (check_context, cr, x, y, 20, 20);
gtk_render_option (check_context, cr, x, y, 20, 20);
*width = *height = 0;
query_size (button_context, width, height);
query_size (check_context, width, height);
draw_style_common (button_context, cr, x, y, *width, *height, NULL, NULL, NULL, NULL);
draw_style_common (check_context, cr, x, y, *width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_render_check (check_context, cr, contents_x, contents_y, contents_width, contents_height);
g_object_unref (check_context);
g_object_unref (button_context);
@@ -428,69 +651,166 @@ draw_progress (GtkWidget *widget,
gint x,
gint y,
gint width,
gint height,
gint position)
gint position,
gint *height)
{
GtkStyleContext *bar_context;
GtkStyleContext *trough_context;
GtkStyleContext *progress_context;
/* This information is taken from the GtkProgressBar docs, see "CSS nodes" */
bar_context = get_style (NULL, "progressbar");
bar_context = get_style (NULL, "progressbar.horizontal");
trough_context = get_style (bar_context, "trough");
progress_context = get_style (trough_context, "progress");
progress_context = get_style (trough_context, "progress.left");
gtk_render_background (trough_context, cr, x, y, width, height);
gtk_render_frame (trough_context, cr, x, y, width, height);
gtk_render_background (progress_context, cr, x, y, position, height);
gtk_render_frame (progress_context, cr, x, y, position, height);
*height = 0;
query_size (bar_context, NULL, height);
query_size (trough_context, NULL, height);
query_size (progress_context, NULL, height);
draw_style_common (bar_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (trough_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (progress_context, cr, x, y, position, *height, NULL, NULL, NULL, NULL);
g_object_unref (progress_context);
g_object_unref (trough_context);
g_object_unref (bar_context);
}
static void
draw_scale (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
gint width,
gint position,
gint *height)
{
GtkStyleContext *scale_context;
GtkStyleContext *contents_context;
GtkStyleContext *trough_context;
GtkStyleContext *slider_context;
GtkStyleContext *highlight_context;
gint contents_x, contents_y, contents_width, contents_height;
gint trough_height, slider_height;
scale_context = get_style (NULL, "scale.horizontal");
contents_context = get_style (scale_context, "contents");
trough_context = get_style (contents_context, "trough");
slider_context = get_style (trough_context, "slider");
highlight_context = get_style (trough_context, "highlight.top");
*height = 0;
query_size (scale_context, NULL, height);
query_size (contents_context, NULL, height);
query_size (trough_context, NULL, height);
query_size (slider_context, NULL, height);
query_size (highlight_context, NULL, height);
draw_style_common (scale_context, cr, x, y, width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
draw_style_common (contents_context, cr, contents_x, contents_y, contents_width, contents_height,
&contents_x, &contents_y, &contents_width, &contents_height);
/* Scale trough defines its size querying slider and highlight */
trough_height = 0;
query_size (trough_context, NULL, &trough_height);
slider_height = 0;
query_size (slider_context, NULL, &slider_height);
query_size (highlight_context, NULL, &slider_height);
trough_height += slider_height;
draw_style_common (trough_context, cr, contents_x, contents_y, contents_width, trough_height,
&contents_x, &contents_y, &contents_width, &contents_height);
draw_style_common (highlight_context, cr, contents_x, contents_y,
contents_width / 2, contents_height,
NULL, NULL, NULL, NULL);
draw_style_common (slider_context, cr, contents_x + position, contents_y, contents_height, contents_height,
NULL, NULL, NULL, NULL);
g_object_unref (scale_context);
g_object_unref (contents_context);
g_object_unref (trough_context);
g_object_unref (slider_context);
g_object_unref (highlight_context);
}
static void
draw_combobox (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
gint width,
gboolean has_entry)
gboolean has_entry,
gint *height)
{
GtkStyleContext *combo_context;
GtkStyleContext *box_context;
GtkStyleContext *button_context;
GtkStyleContext *button_box_context;
GtkStyleContext *entry_context;
GtkStyleContext *arrow_context;
gint contents_x, contents_y, contents_width, contents_height;
gint button_width;
gint arrow_width, arrow_height, arrow_size;
/* This information is taken from the GtkComboBox docs, see "CSS nodes" */
combo_context = get_style (NULL, "combobox:focus");
button_context = get_style (combo_context, "button:focus");
entry_context = get_style (combo_context, "entry:focus");
arrow_context = get_style (button_context, "arrow");
gtk_render_background (combo_context, cr, x, y, width, 30);
gtk_render_frame (combo_context, cr, x, y, width, 30);
box_context = get_style (combo_context, "box.horizontal.linked");
if (has_entry)
{
gtk_style_context_set_junction_sides (entry_context, GTK_JUNCTION_RIGHT);
gtk_render_background (entry_context, cr, x, y, width - 30, 30);
gtk_render_frame (entry_context, cr, x, y, width - 30, 30);
const char *siblings[3] = { "entry.combo:focus", "button.combo" , NULL };
gtk_render_background (button_context, cr, x + width - 30, y, 30, 30);
gtk_render_frame (button_context, cr, x + width - 30, y, 30, 30);
entry_context = get_style_with_siblings (box_context, "entry.combo:focus", siblings, 0);
button_context = get_style_with_siblings (box_context, "button.combo", siblings, 1);
}
else
{
gtk_render_background (button_context, cr, x, y, width, 30);
gtk_render_frame (button_context, cr, x, y, width, 30);
const char *siblings[2] = { "button.combo" , NULL };
button_context = get_style_with_siblings (box_context, "button.combo", siblings, 0);
}
button_box_context = get_style (button_context, "box.horizontal");
arrow_context = get_style (button_box_context, "arrow");
*height = 0;
query_size (combo_context, NULL, height);
query_size (box_context, NULL, height);
if (has_entry)
query_size (entry_context, NULL, height);
query_size (button_context, NULL, height);
query_size (button_box_context, NULL, height);
query_size (arrow_context, NULL, height);
gtk_style_context_get (arrow_context, gtk_style_context_get_state (arrow_context),
"min-width", &arrow_width, "min-height", &arrow_height, NULL);
arrow_size = MIN (arrow_width, arrow_height);
draw_style_common (combo_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (box_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
if (has_entry)
{
button_width = *height;
draw_style_common (entry_context, cr, x, y, width - button_width, *height, NULL, NULL, NULL, NULL);
draw_style_common (button_context, cr, x + width - button_width, y, button_width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
}
else
{
button_width = width;
draw_style_common (button_context, cr, x, y, width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
}
gtk_render_arrow (arrow_context, cr, G_PI / 2, x + width - 25, y+5, 20);
draw_style_common (button_box_context, cr, contents_x, contents_y, contents_width, contents_height,
NULL, NULL, NULL, NULL);
draw_style_common (arrow_context, cr, contents_x, contents_y, contents_width, contents_height,
NULL, NULL, NULL, NULL);
gtk_render_arrow (arrow_context, cr, G_PI / 2,
contents_x + contents_width - arrow_size,
contents_y + (contents_height - arrow_size) / 2, arrow_size);
g_object_unref (arrow_context);
g_object_unref (entry_context);
if (has_entry)
g_object_unref (entry_context);
g_object_unref (button_context);
g_object_unref (combo_context);
}
@@ -500,44 +820,59 @@ draw_spinbutton (GtkWidget *widget,
cairo_t *cr,
gint x,
gint y,
gint width)
gint width,
gint *height)
{
GtkStyleContext *spin_context;
GtkStyleContext *entry_context;
GtkStyleContext *up_context;
GtkStyleContext *down_context;
GtkIconTheme *icon_theme;
GtkIconInfo *icon_info;
GdkPixbuf *pixbuf;
gint icon_width, icon_height, icon_size;
gint button_width;
gint contents_x, contents_y, contents_width, contents_height;
/* This information is taken from the GtkSpinButton docs, see "CSS nodes" */
spin_context = get_style (NULL, "spinbutton:focus");
spin_context = get_style (NULL, "spinbutton.horizontal:focus");
entry_context = get_style (NULL, "entry:focus");
up_context = get_style (spin_context, "button.up:active");
down_context = get_style (spin_context, "button.down");
up_context = get_style (spin_context, "button.up:focus:active");
down_context = get_style (spin_context, "button.down:focus");
gtk_render_background (entry_context, cr, x, y, width, 30);
gtk_render_frame (entry_context, cr, x, y, width, 30);
*height = 0;
query_size (spin_context, NULL, height);
query_size (entry_context, NULL, height);
query_size (up_context, NULL, height);
query_size (down_context, NULL, height);
button_width = *height;
gtk_render_background (up_context, cr, x + width - 30, y, 30, 30);
gtk_render_frame (up_context, cr, x + width - 30, y, 30, 30);
gtk_render_background (down_context, cr, x + width - 60, y, 30, 30);
gtk_render_frame (down_context, cr, x + width - 60, y, 30, 30);
draw_style_common (spin_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
draw_style_common (entry_context, cr, x, y, width, *height, NULL, NULL, NULL, NULL);
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
icon_info = gtk_icon_theme_lookup_icon (icon_theme, "list-add-symbolic", 20, 0);
gtk_style_context_get (up_context, gtk_style_context_get_state (up_context),
"min-width", &icon_width, "min-height", &icon_height, NULL);
icon_size = MIN (icon_width, icon_height);
icon_info = gtk_icon_theme_lookup_icon (icon_theme, "list-add-symbolic", icon_size, 0);
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info, up_context, NULL, NULL);
g_object_unref (icon_info);
gtk_render_icon (up_context, cr, pixbuf, x + width - 30 + 5, y + 5);
draw_style_common (up_context, cr, x + width - button_width, y, button_width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_render_icon (up_context, cr, pixbuf, contents_x, contents_y + (contents_height - icon_size) / 2);
g_object_unref (pixbuf);
icon_info = gtk_icon_theme_lookup_icon (icon_theme, "list-remove-symbolic", 20, 0);
gtk_style_context_get (down_context, gtk_style_context_get_state (down_context),
"min-width", &icon_width, "min-height", &icon_height, NULL);
icon_size = MIN (icon_width, icon_height);
icon_info = gtk_icon_theme_lookup_icon (icon_theme, "list-remove-symbolic", icon_size, 0);
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info, down_context, NULL, NULL);
g_object_unref (icon_info);
gtk_render_icon (down_context, cr, pixbuf, x + width - 60 + 5, y + 5);
draw_style_common (down_context, cr, x + width - 2 * button_width, y, button_width, *height,
&contents_x, &contents_y, &contents_width, &contents_height);
gtk_render_icon (down_context, cr, pixbuf, contents_x, contents_y + (contents_height - icon_size) / 2);
g_object_unref (pixbuf);
g_object_unref (down_context);
@@ -551,39 +886,64 @@ draw_cb (GtkWidget *widget,
cairo_t *cr)
{
gint panewidth, width, height;
gint x, y;
width = gtk_widget_get_allocated_width (widget);
panewidth = width / 2;
height = gtk_widget_get_allocated_height (widget);
cairo_rectangle (cr, 0, 0, width, height);
cairo_set_source_rgb (cr, 0.6, 0.6, 0.6);
cairo_set_source_rgb (cr, 0.9, 0.9, 0.9);
cairo_fill (cr);
draw_horizontal_scrollbar (widget, cr, 10, 10, panewidth - 20, 10, 30, GTK_STATE_FLAG_NORMAL);
draw_horizontal_scrollbar (widget, cr, 10, 30, panewidth - 20, 10, 40, GTK_STATE_FLAG_PRELIGHT);
draw_horizontal_scrollbar (widget, cr, 10, 50, panewidth - 20, 10, 50, GTK_STATE_FLAG_ACTIVE|GTK_STATE_FLAG_PRELIGHT);
x = y = 10;
draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 30, GTK_STATE_FLAG_NORMAL, &height);
y += height + 8;
draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 40, GTK_STATE_FLAG_PRELIGHT, &height);
y += height + 8;
draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 50, GTK_STATE_FLAG_ACTIVE|GTK_STATE_FLAG_PRELIGHT, &height);
draw_text (widget, cr, 10, 70, panewidth - 20, 20, "Not selected", GTK_STATE_FLAG_NORMAL);
draw_text (widget, cr, 10, 100, panewidth - 20, 20, "Selected", GTK_STATE_FLAG_SELECTED);
y += height + 8;
draw_text (widget, cr, x, y, panewidth - 20, 20, "Not selected", GTK_STATE_FLAG_NORMAL);
y += 20 + 10;
draw_text (widget, cr, x, y, panewidth - 20, 20, "Selected", GTK_STATE_FLAG_SELECTED);
draw_check (widget, cr, 10, 130, GTK_STATE_FLAG_NORMAL);
draw_check (widget, cr, 40, 130, GTK_STATE_FLAG_CHECKED);
draw_radio (widget, cr, 70, 130, GTK_STATE_FLAG_NORMAL);
draw_radio (widget, cr, 100, 130, GTK_STATE_FLAG_CHECKED);
draw_progress (widget, cr, 10, 160, panewidth - 20, 6, 50);
x = 10;
y += 20 + 10;
draw_check (widget, cr, x, y, GTK_STATE_FLAG_NORMAL, &width, &height);
x += width + 10;
draw_check (widget, cr, x, y, GTK_STATE_FLAG_CHECKED, &width, &height);
x += width + 10;
draw_radio (widget, cr, x, y, GTK_STATE_FLAG_NORMAL, &width, &height);
x += width + 10;
draw_radio (widget, cr, x, y, GTK_STATE_FLAG_CHECKED, &width, &height);
x = 10;
draw_menu (widget, cr, 10 + panewidth, 10, panewidth - 20, 90);
y += height + 10;
draw_progress (widget, cr, x, y, panewidth - 20, 50, &height);
draw_menubar (widget, cr, 10 + panewidth, 110, panewidth - 20, 20);
y += height + 10;
draw_scale (widget, cr, x, y, panewidth - 20, 75, &height);
draw_spinbutton (widget, cr, 10 + panewidth, 140, panewidth - 20);
y += height + 20;
draw_notebook (widget, cr, x, y, panewidth - 20, 160);
draw_notebook (widget, cr, 10, 200, panewidth - 20, 160);
/* Second column */
x += panewidth;
y = 10;
draw_menu (widget, cr, x, y, panewidth - 20, &height);
draw_combobox (widget, cr, 10 + panewidth, 200, panewidth - 20, FALSE);
y += height + 10;
draw_menubar (widget, cr, x, y, panewidth - 20, &height);
draw_combobox (widget, cr, 10 + panewidth, 240, panewidth - 20, TRUE);
y += height + 20;
draw_spinbutton (widget, cr, x, y, panewidth - 20, &height);
y += height + 30;
draw_combobox (widget, cr, x, y, panewidth - 20, FALSE, &height);
y += height + 10;
draw_combobox (widget, cr, 10 + panewidth, y, panewidth - 20, TRUE, &height);
return FALSE;
}

View File

@@ -77,7 +77,7 @@ create_shader (int type,
buffer = g_malloc (log_len + 1);
glGetShaderInfoLog (shader, log_len, NULL, buffer);
g_warning ("Compile failure in %s shader:\n%s\n",
g_warning ("Compile failure in %s shader:\n%s",
type == GL_VERTEX_SHADER ? "vertex" : "fragment",
buffer);
@@ -140,7 +140,7 @@ init_shaders (GLuint *program_out,
buffer = g_malloc (log_len + 1);
glGetProgramInfoLog (program, log_len, NULL, buffer);
g_warning ("Linking failure:\n%s\n", buffer);
g_warning ("Linking failure:\n%s", buffer);
g_free (buffer);

View File

@@ -587,7 +587,7 @@ add_data_tab (const gchar *demoname)
}
else
{
g_warning ("Don't know how to display resource '%s'\n", resource_name);
g_warning ("Don't know how to display resource '%s'", resource_name);
widget = NULL;
}
@@ -657,7 +657,7 @@ load_file (const gchar *demoname,
if (bytes == NULL)
{
g_warning ("Cannot open source for %s: %s\n", filename, err->message);
g_warning ("Cannot open source for %s: %s", filename, err->message);
g_error_free (err);
return;
}
@@ -920,7 +920,7 @@ startup (GApplication *app)
gchar *ids[] = { "appmenu", NULL };
builder = gtk_builder_new ();
gtk_builder_add_objects_from_resource (builder, "/ui/main.ui", ids, NULL);
gtk_builder_add_objects_from_resource (builder, "/ui/appmenu.ui", ids, NULL);
appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");

View File

@@ -1,21 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.10 -->
<menu id="appmenu">
<section>
<item>
<attribute name="label" translatable="yes">About</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">_Quit</attribute>
<attribute name="action">app.quit</attribute>
<attribute name="accel">&lt;Primary&gt;q</attribute>
</item>
</section>
</menu>
<object class="GtkTreeStore" id="treestore">
<columns>
<!-- column-name NAME -->
@@ -41,7 +26,7 @@
<property name="visible">1</property>
<property name="show-close-button">1</property>
<child>
<object class="GtkButton" id="run_button">
<object class="GtkButton">
<property name="visible">1</property>
<property name="valign">center</property>
<property name="can_focus">1</property>
@@ -50,7 +35,7 @@
<class name="text-button"/>
</style>
<child>
<object class="GtkLabel" id="run_label">
<object class="GtkLabel">
<property name="visible">1</property>
<property name="label" translatable="yes">Run</property>
</object>
@@ -60,13 +45,13 @@
</object>
</child>
<child>
<object class="GtkBox" id="box1">
<object class="GtkBox">
<property name="visible">1</property>
<child>
<object class="GtkFrame">
<property name="visible">1</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow">
<object class="GtkScrolledWindow">
<property name="width_request">120</property>
<property name="visible">1</property>
<property name="can_focus">1</property>
@@ -84,15 +69,19 @@
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<property name="title" translatable="yes">column</property>
<object class="GtkTreeViewColumn">
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="style">4</attribute>
<attribute name="text">1</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText">
<property name="text"> </property>
</object>
</child>
</object>
</child>
</object>
@@ -109,7 +98,7 @@
<property name="enable_popup">1</property>
<property name="show_border">0</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<object class="GtkScrolledWindow">
<property name="visible">1</property>
<property name="can_focus">1</property>
<child>
@@ -133,7 +122,7 @@
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label1">
<object class="GtkLabel">
<property name="visible">1</property>
<property name="label" translatable="yes">_Info</property>
<property name="use_underline">1</property>
@@ -166,7 +155,7 @@
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label2">
<object class="GtkLabel">
<property name="visible">1</property>
<property name="label" translatable="yes">Source</property>
</object>

View File

@@ -8,6 +8,35 @@
#include <gtk/gtk.h>
static GtkWidget *stack;
static GtkWidget *view;
static GtkWidget *view2;
static void
source_toggled (GtkToggleButton *button)
{
if (gtk_toggle_button_get_active (button))
gtk_stack_set_visible_child_name (GTK_STACK (stack), "source");
else
{
GtkTextBuffer *buffer;
GtkTextIter start, end;
gchar *markup;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view2));
gtk_text_buffer_get_bounds (buffer, &start, &end);
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_insert_markup (buffer, &start, markup, -1);
g_free (markup);
gtk_stack_set_visible_child_name (GTK_STACK (stack), "formatted");
}
}
GtkWidget *
do_markup (GtkWidget *do_widget)
{
@@ -15,12 +44,13 @@ do_markup (GtkWidget *do_widget)
if (!window)
{
GtkWidget *view;
GtkWidget *sw;
GtkTextBuffer *buffer;
GtkTextIter iter;
GBytes *bytes;
const gchar *markup;
GtkWidget *header;
GtkWidget *show_source;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
@@ -29,19 +59,50 @@ do_markup (GtkWidget *do_widget)
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
stack = gtk_stack_new ();
gtk_widget_show (stack);
gtk_container_add (GTK_CONTAINER (window), stack);
show_source = gtk_check_button_new_with_label ("Source");
gtk_widget_set_valign (show_source, GTK_ALIGN_CENTER);
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);
gtk_window_set_title (GTK_WINDOW (window), "Markup");
view = gtk_text_view_new ();
gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 10);
gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 10);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (window), sw);
gtk_container_add (GTK_CONTAINER (sw), view);
gtk_widget_show_all (sw);
gtk_stack_add_named (GTK_STACK (stack), sw, "formatted");
view2 = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view2), GTK_WRAP_WORD);
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view2), 10);
gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view2), 10);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (sw), view2);
gtk_widget_show_all (sw);
gtk_stack_add_named (GTK_STACK (stack), sw, "source");
bytes = g_resources_lookup_data ("/markup/markup.txt", 0, NULL);
markup = (const gchar *)g_bytes_get_data (bytes, NULL);
@@ -50,9 +111,13 @@ do_markup (GtkWidget *do_widget)
gtk_text_buffer_get_start_iter (buffer, &iter);
gtk_text_buffer_insert_markup (buffer, &iter, markup, -1);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view2));
gtk_text_buffer_get_start_iter (buffer, &iter);
gtk_text_buffer_insert (buffer, &iter, markup, -1);
g_bytes_unref (bytes);
gtk_widget_show_all (sw);
gtk_widget_show (stack);
}
if (!gtk_widget_get_visible (window))

View File

@@ -1,9 +1,9 @@
Text sizes: <span size="xx-small">tiny</span> <span size="x-small">very small</span> <span size="small">small</span> <span size="medium">normal</span> <span size="large">large</span> <span size="x-large">very large</span> <span size="xx-large">huge</span>
Text <span color="gray">c<span color="green">o</span>l<span color="tomato">o</span>rs</span>
Text <span color="gray">c<span color="green">o</span>l<span color="tomato">o</span>rs</span> and <span background="pink">backgrounds</span>
Colorful <span underline="low" underline-color="blue"><span underline="double" underline-color="red">under</span>lines</span>
Colorful <span underline="low" underline-color="blue"><span underline="double" underline-color="red">under</span>lines</span> and <span background="pink"><span underline="error">mo</span><span underline="error" underline-color="green">re</span></span>
Colorful <span strikethrough="true" strikethrough-color="magenta">strikethroughs</span>

View File

@@ -328,7 +328,7 @@ gtk_rotated_bin_add (GtkContainer *container,
bin->child = widget;
}
else
g_warning ("GtkRotatedBin cannot have more than one child\n");
g_warning ("GtkRotatedBin cannot have more than one child");
}
static void

View File

@@ -267,7 +267,7 @@ gtk_mirror_bin_add (GtkContainer *container,
bin->child = widget;
}
else
g_warning ("GtkMirrorBin cannot have more than one child\n");
g_warning ("GtkMirrorBin cannot have more than one child");
}
static void
@@ -345,7 +345,7 @@ gtk_mirror_bin_get_preferred_height (GtkWidget *widget,
gtk_mirror_bin_size_request (widget, &requisition);
*minimum = *natural = requisition.width;
*minimum = *natural = requisition.height;
}
static void

View File

@@ -7,60 +7,5 @@
*/
* {
color: inherit;
font-size: inherit;
background-color: initial;
font-family: inherit;
font-style: inherit;
font-variant: inherit;
font-weight: inherit;
text-shadow: inherit;
icon-shadow: inherit;
box-shadow: initial;
margin-top: initial;
margin-left: initial;
margin-bottom: initial;
margin-right: initial;
padding-top: initial;
padding-left: initial;
padding-bottom: initial;
padding-right: initial;
border-top-style: initial;
border-top-width: initial;
border-left-style: initial;
border-left-width: initial;
border-bottom-style: initial;
border-bottom-width: initial;
border-right-style: initial;
border-right-width: initial;
border-top-left-radius: initial;
border-top-right-radius: initial;
border-bottom-right-radius: initial;
border-bottom-left-radius: initial;
outline-style: initial;
outline-width: initial;
outline-offset: initial;
background-clip: initial;
background-origin: initial;
background-size: initial;
background-position: initial;
border-top-color: initial;
border-right-color: initial;
border-bottom-color: initial;
border-left-color: initial;
outline-color: initial;
background-repeat: initial;
background-image: initial;
border-image-source: initial;
border-image-repeat: initial;
border-image-slice: initial;
border-image-width: initial;
transition-property: initial;
transition-duration: initial;
transition-timing-function: initial;
transition-delay: initial;
engine: initial;
gtk-key-bindings: initial;
-GtkNotebook-initial-gap: 0;
all: unset;
}

View File

@@ -12,10 +12,13 @@ static guint timeout = 0;
static void
change_direction (GtkRevealer *revealer)
{
gboolean revealed;
if (gtk_widget_get_mapped (GTK_WIDGET (revealer)))
{
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,10 +4,10 @@
<object class="GtkWindow" id="window1">
<property name="title" translatable="yes">Stack</property>
<child>
<object class="GtkGrid" id="grid1">
<object class="GtkGrid">
<property name="visible">1</property>
<child>
<object class="GtkStackSwitcher" id="switcher">
<object class="GtkStackSwitcher">
<property name="visible">1</property>
<property name="stack">stack</property>
<property name="halign">center</property>
@@ -23,7 +23,7 @@
<property name="can_focus">1</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkImage" id="image1">
<object class="GtkImage">
<property name="visible">1</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
@@ -35,7 +35,7 @@
</packing>
</child>
<child>
<object class="GtkCheckButton" id="checkbutton1">
<object class="GtkCheckButton">
<property name="label" translatable="yes">Page 2</property>
<property name="visible">1</property>
<property name="can_focus">1</property>
@@ -49,7 +49,7 @@
</packing>
</child>
<child>
<object class="GtkSpinner" id="spinner1">
<object class="GtkSpinner">
<property name="visible">1</property>
<property name="halign">center</property>
<property name="valign">center</property>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkGrid" id="grid">
<property name="row-spacing">6</property>
<property name="row-spacing">10</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkToolbar" id="toolbar1">
<object class="GtkToolbar">
<property name="visible">1</property>
<property name="hexpand">1</property>
<property name="show-arrow">0</property>
@@ -12,7 +12,7 @@
<class name="primary-toolbar"/>
</style>
<child>
<object class="GtkToggleToolButton" id="toolbutton1">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -26,7 +26,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="toolbutton2">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -41,7 +41,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="toolbutton3">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="sensitive">0</property>
@@ -55,7 +55,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="toolbutton5">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="label" translatable="yes">Raised</property>
@@ -71,7 +71,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="toolbutton6">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="label" translatable="yes">Raised Active</property>
@@ -88,7 +88,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="toolbutton4">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="sensitive">0</property>
@@ -103,7 +103,7 @@
</packing>
</child>
<child>
<object class="GtkToolItem" id="toolitementry">
<object class="GtkToolItem">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<child>
@@ -118,7 +118,7 @@
</object>
</child>
<child>
<object class="GtkToolItem" id="toolitemswitch">
<object class="GtkToolItem">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<child>
@@ -132,7 +132,7 @@
</object>
</child>
<child>
<object class="GtkBox" id="box1">
<object class="GtkBox">
<property name="visible">1</property>
<property name="valign">center</property>
<property name="halign">center</property>
@@ -140,7 +140,7 @@
<class name="linked"/>
</style>
<child>
<object class="GtkButton" id="button1">
<object class="GtkButton">
<property name="label" translatable="yes">Hi, I am a button</property>
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
@@ -150,8 +150,8 @@
</object>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">And I&apos;m another button</property>
<object class="GtkButton">
<property name="label" translatable="yes">And I'm another button</property>
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="can_focus">1</property>
@@ -163,7 +163,7 @@
</packing>
</child>
<child>
<object class="GtkButton" id="button3">
<object class="GtkButton">
<property name="label" translatable="yes">This is a button party!</property>
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
@@ -178,15 +178,16 @@
</object>
</child>
<child>
<object class="GtkToolbar" id="itoolbar1">
<object class="GtkToolbar">
<property name="visible">1</property>
<property name="hexpand">1</property>
<property name="icon_size">1</property>
<property name="toolbar-style">icons</property>
<style>
<class name="inline-toolbar"/>
</style>
<child>
<object class="GtkToggleToolButton" id="itoolbutton1">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -199,7 +200,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="itoolbutton2">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -212,7 +213,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="itoolbutton3">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -226,7 +227,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="itoolbutton4">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="use_action_appearance">0</property>
@@ -240,7 +241,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="itoolbutton5">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="sensitive">0</property>
@@ -254,7 +255,7 @@
</packing>
</child>
<child>
<object class="GtkToggleToolButton" id="itoolbutton6">
<object class="GtkToggleToolButton">
<property name="use_action_appearance">0</property>
<property name="visible">1</property>
<property name="sensitive">0</property>
@@ -270,5 +271,40 @@
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">1</property>
<property name="spacing">10</property>
<property name="orientation">horizontal</property>
<child>
<object class="GtkButton">
<property name="visible">1</property>
<property name="label">Plain</property>
<property name="halign">end</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="visible">1</property>
<property name="label">Destructive</property>
<style>
<class name="destructive-action"/>
</style>
</object>
</child>
<child>
<object class="GtkButton">
<property name="visible">1</property>
<property name="label">Suggested</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
</object>
</interface>

View File

@@ -1,4 +1,4 @@
/* CSS Theming/Style Classes
/* Theming/Style Classes
*
* GTK+ uses CSS for theming. Style classes can be associated
* with widgets to inform the theme about intended rendering.
@@ -24,6 +24,7 @@ do_theming_style_classes (GtkWidget *do_widget)
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Style Classes");
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
gtk_container_set_border_width (GTK_CONTAINER (window), 12);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);

View File

@@ -38,6 +38,25 @@ change_theme_state (GSimpleAction *action,
g_simple_action_set_state (action, state);
}
static GtkWidget *page_stack;
static void
change_transition_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
GtkStackTransitionType transition;
if (g_variant_get_boolean (state))
transition = GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT;
else
transition = GTK_STACK_TRANSITION_TYPE_NONE;
gtk_stack_set_transition_type (GTK_STACK (page_stack), transition);
g_simple_action_set_state (action, state);
}
static gboolean
get_idle (gpointer data)
{
@@ -1621,6 +1640,7 @@ activate (GApplication *app)
GtkCssProvider *provider;
static GActionEntry win_entries[] = {
{ "dark", NULL, NULL, "false", change_theme_state },
{ "transition", NULL, NULL, "false", change_transition_state },
{ "search", activate_search, NULL, NULL, NULL },
{ "delete", activate_delete, NULL, NULL, NULL },
{ "busy", get_busy, NULL, NULL, NULL },
@@ -1757,6 +1777,8 @@ activate (GApplication *app)
g_signal_connect (stack, "notify::visible-child-name", G_CALLBACK (page_changed_cb), NULL);
page_changed_cb (stack, NULL, NULL);
page_stack = stack;
dialog = (GtkWidget *)gtk_builder_get_object (builder, "preference_dialog");
g_signal_connect (dialog, "response", G_CALLBACK (close_dialog), NULL);
widget = (GtkWidget *)gtk_builder_get_object (builder, "preference_dialog_button");

View File

@@ -11,6 +11,10 @@
<attribute name="label" translatable="yes">Dark Theme</attribute>
<attribute name="action">win.dark</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Slide Pages</attribute>
<attribute name="action">win.transition</attribute>
</item>
</section>
</menu>
<menu id="dinner_menu">
@@ -432,6 +436,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<child>
<object class="GtkStack" id="toplevel_stack">
<property name="visible">1</property>
<property name="transition-duration">1000</property>
<child>
<object class="GtkBox" id="page1">
<property name="visible">1</property>

View File

@@ -26,12 +26,27 @@ IGNORE_HFILES= \
gdkkeysyms.h \
gdkinternals.h \
gdkprivate.h \
gdk*private.h \
gdk-private.h \
gdkapplaunchcontextprivate.h \
gdkcursorprivate.h \
gdkdevicemanagerprivate.h \
gdkdeviceprivate.h \
gdkdisplaymanagerprivate.h \
gdkdisplayprivate.h \
gdkdndprivate.h \
gdkframeclockprivate.h \
gdkglcontextprivate.h \
gdkkeysprivate.h \
gdkscreenprivate.h \
gdkseatdefaultprivate.h \
gdkseatprivate.h \
gdkvisualprivate.h \
keyname-table.h \
wayland/xdg-shell-client-protocol.h \
win32 \
x11 \
quartz
quartz \
broadway \
wayland
# Extra files to add when scanning
EXTRA_HFILES= \

View File

@@ -1005,6 +1005,7 @@ gdk_drag_context_get_dest_window
gdk_drag_context_get_protocol
gdk_drag_context_get_drag_window
gdk_drag_context_set_hotspot
gdk_drag_context_manage_dnd
<SUBSECTION Standard>
GDK_DRAG_CONTEXT
@@ -1343,6 +1344,7 @@ 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_is_legacy
<SUBSECTION>
GdkGLError

View File

@@ -43,10 +43,10 @@ To use broadwayd, start it like this:
<programlisting>
broadwayd :5
</programlisting>
Then point your web browser at <literal>http://127.0.0.1:8084</literal>.
Then point your web browser at <literal>http://127.0.0.1:8085</literal>.
Start your applications like this:
<programlisting>
BROADWAY_DISPLAY=:5 gtk3-demo
GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 gtk3-demo
</programlisting>
</para>
@@ -58,11 +58,11 @@ BROADWAY_DISPLAY=:5 gtk3-demo
<title><envar>BROADWAY_DISPLAY</envar></title>
<para>
Specifies the Broadway display number. The default display is 1.
Specifies the Broadway display number. The default display is 0.
The display number determines the port to use when connecting
to a Broadway application via the following formula:
<programlisting>
<replaceable>port</replaceable> = 8080 + (<replaceable>display</replaceable> - 1)
<replaceable>port</replaceable> = 8080 + <replaceable>display</replaceable>
</programlisting>
</para>
</formalpara>

View File

@@ -45,14 +45,14 @@ windows in the same web browser, by connecting to broadwayd.
</para>
<para>
When using broadwayd, specify the display number to use, prefixed
with a colon, similar to X. The default display number is 1.
with a colon, similar to X. The default display number is 0.
<programlisting>
broadwayd :5
</programlisting>
Then point your web browser at <literal>http://127.0.0.1:8084</literal>.
Then point your web browser at <literal>http://127.0.0.1:8085</literal>.
Start your applications like this:
<programlisting>
BROADWAY_DISPLAY=:5 gtk3-demo
GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 gtk3-demo
</programlisting>
You can add password protection for your session by creating a file in

View File

@@ -70,6 +70,19 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
not quite the same as the CSS definition of rem.
</para>
<para>
Whereever a number is allowed, GTK+ also accepts a Windows-specific
theme size:
</para>
<literallayout>
<code>〈win32 theme size〉 = 〈win32 size〉| 〈win32 part size〉</code>
<code>〈win32 size〉 = -gtk-win32-size ( 〈theme name〉, 〈metric id〉 )</code>
<code>〈win32 part size〉 = [ -gtk-win32-part-width | -gtk-win32-part-height |</code>
<code> -gtk-win32-part-border-top | -gtk-win32-part-border-right |</code>
<code> -gtk-win32-part-border-bottom | -gtk-win32-part-border-left ] ( 〈theme name〉 , 〈integer〉 , 〈integer〉 )</code>
</literallayout>
<literallayout><code>〈calc expression〉 = calc( 〈calc sum〉 )</code>
<code>〈calc sum〉 = 〈calc product〉 [ [ + | - ] 〈calc product〉 ]*</code>
<code>〈calc product〉 = 〈calc value〉 [ * 〈calc value〉 | / 〈number〉 ]*</code>

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 explicitly set it explicitly.
value, you will have to set it explicitly.
</para>
<para>
@@ -1205,6 +1205,12 @@ 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

@@ -140,11 +140,11 @@ additional environment variables.
<variablelist>
<varlistentry>
<term>actions</term>
<listitem><para>Actions and menu models.</para></listitem>
<listitem><para>Actions and menu models</para></listitem>
</varlistentry>
<varlistentry>
<term>baselines</term>
<listitem><para>Baselines.</para></listitem>
<listitem><para>Show baselines</para></listitem>
</varlistentry>
<varlistentry>
<term>builder</term>
@@ -160,7 +160,7 @@ additional environment variables.
</varlistentry>
<varlistentry>
<term>interactive</term>
<listitem><para>Open the <link linkend="interactive-debugging">interactive debugger</link>.</para></listitem>
<listitem><para>Open the <link linkend="interactive-debugging">interactive debugger</link></para></listitem>
</varlistentry>
<varlistentry>
<term>keybindings</term>
@@ -176,11 +176,11 @@ additional environment variables.
</varlistentry>
<varlistentry>
<term>no-css-cache</term>
<listitem><para>Bypass caching for CSS style properties.</para></listitem>
<listitem><para>Bypass caching for CSS style properties</para></listitem>
</varlistentry>
<varlistentry>
<term>no-pixel-cache</term>
<listitem><para>Disable the pixel cache.</para></listitem>
<listitem><para>Disable the pixel cache</para></listitem>
</varlistentry>
<varlistentry>
<term>plugsocket</term>
@@ -188,7 +188,7 @@ additional environment variables.
</varlistentry>
<varlistentry>
<term>pixel-cache</term>
<listitem><para>Pixel cache.</para></listitem>
<listitem><para>Pixel cache</para></listitem>
</varlistentry>
<varlistentry>
<term>printing</term>
@@ -218,7 +218,10 @@ additional environment variables.
<term>resize</term>
<listitem><para>Highlight resizing widgets</para></listitem>
</varlistentry>
<varlistentry>
<term>layout</term>
<listitem><para>Show layout borders</para></listitem>
</varlistentry>
</variablelist>
The special value <literal>all</literal> can be used to turn on all
debug options. The special value <literal>help</literal> can be used
@@ -477,7 +480,7 @@ nevertheless.
<para>
If set, selects the GDK backend to use. Selecting a backend requires that
GTK+ is compiled with support for that backend. The following backends can
be selected:
be selected, provided they are included in the GDK libraries you are using:
<variablelist>
<varlistentry>
@@ -513,7 +516,8 @@ nevertheless.
</variablelist>
Since 3.10, this environment variable can contain a comma-separated list
of backend names, which are tried in order. The list may also contain
a *, which means: try all remaining backends.
a *, which means: try all remaining backends. The special value "help" can
be used to make GDK print out a list of all available backends.
For more information about selecting backends, see the gdk_display_manager_get() function.
</para>
</formalpara>

View File

@@ -13,7 +13,7 @@ all: exampleapp
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS)
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f $(OBJS)

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) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -29,7 +29,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -18,7 +18,7 @@ resources.c: exampleapp.gresource.xml window.ui
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS)
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f $(BUILT_SRC)

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -18,7 +18,7 @@ resources.c: exampleapp.gresource.xml window.ui
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS)
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f $(BUILT_SRC)

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -18,7 +18,7 @@ resources.c: exampleapp.gresource.xml window.ui app-menu.ui
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS)
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f $(BUILT_SRC)

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -25,7 +25,7 @@ resources.c: exampleapp.gresource.xml window.ui app-menu.ui
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS) gschemas.compiled
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -25,7 +25,7 @@ resources.c: exampleapp.gresource.xml window.ui app-menu.ui
$(CC) -c -o $(@F) $(CFLAGS) $<
exampleapp: $(OBJS) gschemas.compiled
$(CC) -o $(@F) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

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) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

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) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -15,7 +15,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

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) $(LIBS) $(OBJS)
$(CC) -o $(@F) $(OBJS) $(LIBS)
clean:
rm -f org.gtk.exampleapp.gschema.valid

View File

@@ -32,7 +32,6 @@
<child type="title">
<object class="GtkStackSwitcher" id="tabs">
<property name="visible">True</property>
<property name="margin">6</property>
<property name="stack">stack</property>
</object>
</child>

View File

@@ -249,7 +249,7 @@ enable_plugin (const gchar *name)
g_print ("Menus of '%s' plugin added\n", name);
}
else
g_warning ("Plugin menu not found\n");
g_warning ("Plugin menu not found");
if (g_strcmp0 (name, "red") == 0)
is_red_plugin_enabled = TRUE;
@@ -284,7 +284,7 @@ disable_plugin (const gchar *name)
}
}
else
g_warning ("Plugin menu not found\n");
g_warning ("Plugin menu not found");
g_action_map_remove_action (G_ACTION_MAP (g_application_get_default ()), name);
g_print ("Actions of '%s' plugin removed\n", name);

View File

@@ -312,14 +312,12 @@ w32_introspection_files = \
win32/gdkevents-win32.c \
win32/gdkgeometry-win32.c \
win32/gdkglobals-win32.c \
win32/gdkinput.c \
win32/gdkkeys-win32.c \
win32/gdkmain-win32.c \
win32/gdkproperty-win32.c \
win32/gdkscreen-win32.c \
win32/gdkselection-win32.c \
win32/gdktestutils-win32.c \
win32/gdkvisual-win32.c \
win32/gdkwin32.h \
win32/gdkwin32cursor.h \
win32/gdkwin32display.h \

View File

@@ -318,7 +318,7 @@ broadway_output_put_buffer (BroadwayOutput *output,
if (!g_output_stream_write_all (out, encoded->str, encoded->len,
NULL, NULL, NULL) ||
!g_output_stream_close (out, NULL, NULL))
g_warning ("compression failed\n");
g_warning ("compression failed");
len = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (out_mem));

View File

@@ -577,14 +577,14 @@ parse_input (BroadwayInput *input)
is_mask = buf[1] & 0x80;
data = buf + 2;
if (payload_len > 125)
if (payload_len == 126)
{
if (len < 4)
return;
payload_len = GUINT16_FROM_BE( *(guint16 *) data );
data += 2;
}
else if (payload_len > 126)
else if (payload_len == 127)
{
if (len < 10)
return;

View File

@@ -302,7 +302,7 @@ client_handle_request (BroadwayClient *client,
broadway_server_set_show_keyboard (server, request->set_show_keyboard.show_keyboard);
break;
default:
g_warning ("Unknown request of type %d\n", request->base.type);
g_warning ("Unknown request of type %d", request->base.type);
}

View File

@@ -320,7 +320,7 @@ process_input_messages (GdkBroadwayServer *server)
if (reply->base.type == BROADWAY_REPLY_EVENT)
_gdk_broadway_events_got_input (&reply->event.msg);
else
g_warning ("Unhandled reply type %d\n", reply->base.type);
g_warning ("Unhandled reply type %d", reply->base.type);
g_free (reply);
}
}

View File

@@ -66,60 +66,6 @@ gdk_event_init (GdkDisplay *display)
broadway_display->event_source = _gdk_broadway_event_source_new (display);
}
static void
gdk_broadway_display_init_input (GdkDisplay *display)
{
GdkBroadwayDisplay *broadway_display;
GdkDeviceManager *device_manager;
GdkDevice *device;
GList *list, *l;
broadway_display = GDK_BROADWAY_DISPLAY (display);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
device_manager = gdk_display_get_device_manager (display);
/* For backwards compatibility, just add
* floating devices that are not keyboards.
*/
list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING);
for (l = list; l; l = l->next)
{
device = l->data;
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
continue;
broadway_display->input_devices = g_list_prepend (broadway_display->input_devices,
g_object_ref (l->data));
}
g_list_free (list);
/* Now set "core" pointer to the first
* master device that is a pointer.
*/
list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
for (l = list; l; l = l->next)
{
device = l->data;
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
continue;
display->core_pointer = device;
break;
}
G_GNUC_END_IGNORE_DEPRECATIONS;
/* Add the core pointer to the devices list */
broadway_display->input_devices = g_list_prepend (broadway_display->input_devices,
g_object_ref (display->core_pointer));
g_list_free (list);
}
GdkDisplay *
_gdk_broadway_display_open (const gchar *display_name)
{
@@ -146,7 +92,6 @@ _gdk_broadway_display_open (const gchar *display_name)
gdk_event_init (display);
gdk_broadway_display_init_input (display);
_gdk_broadway_display_init_dnd (display);
_gdk_broadway_screen_setup (broadway_display->screens[0]);
@@ -228,8 +173,6 @@ gdk_broadway_display_dispose (GObject *object)
{
GdkBroadwayDisplay *broadway_display = GDK_BROADWAY_DISPLAY (object);
g_list_foreach (broadway_display->input_devices, (GFunc) g_object_run_dispose, NULL);
_gdk_screen_close (broadway_display->screens[0]);
if (broadway_display->event_source)
@@ -253,8 +196,6 @@ gdk_broadway_display_finalize (GObject *object)
_gdk_broadway_cursor_display_finalize (GDK_DISPLAY_OBJECT(broadway_display));
/* input GdkDevice list */
g_list_free_full (broadway_display->input_devices, g_object_unref);
/* Free all GdkScreens */
g_object_unref (broadway_display->screens[0]);
g_free (broadway_display->screens);
@@ -315,14 +256,6 @@ gdk_broadway_display_supports_composite (GdkDisplay *display)
return FALSE;
}
static GList *
gdk_broadway_display_list_devices (GdkDisplay *display)
{
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
return GDK_BROADWAY_DISPLAY (display)->input_devices;
}
static gulong
gdk_broadway_display_get_next_serial (GdkDisplay *display)
{
@@ -374,7 +307,6 @@ gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
display_class->supports_shapes = gdk_broadway_display_supports_shapes;
display_class->supports_input_shapes = gdk_broadway_display_supports_input_shapes;
display_class->supports_composite = gdk_broadway_display_supports_composite;
display_class->list_devices = gdk_broadway_display_list_devices;
display_class->get_cursor_for_type = _gdk_broadway_display_get_cursor_for_type;
display_class->get_cursor_for_name = _gdk_broadway_display_get_cursor_for_name;
display_class->get_cursor_for_surface = _gdk_broadway_display_get_cursor_for_surface;

View File

@@ -50,10 +50,6 @@ struct _GdkBroadwayDisplay
/* drag and drop information */
GdkDragContext *current_dest_drag;
/* Input device */
/* input GdkDevice list */
GList *input_devices;
/* The offscreen window that has the pointer in it (if any) */
GdkWindow *active_offscreen_window;

View File

@@ -98,6 +98,7 @@ _gdk_broadway_window_drag_begin (GdkWindow *window,
new_context = g_object_new (GDK_TYPE_BROADWAY_DRAG_CONTEXT,
NULL);
new_context->display = gdk_window_get_display (window);
return new_context;
}

View File

@@ -136,8 +136,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event->crossing.state = message->pointer.state;
event->crossing.mode = message->crossing.mode;
event->crossing.detail = GDK_NOTIFY_ANCESTOR;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
@@ -157,8 +157,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event->crossing.state = message->pointer.state;
event->crossing.mode = message->crossing.mode;
event->crossing.detail = GDK_NOTIFY_ANCESTOR;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
@@ -179,8 +179,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event->motion.x_root = message->pointer.root_x;
event->motion.y_root = message->pointer.root_y;
event->motion.state = message->pointer.state;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
@@ -205,8 +205,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event->button.y_root = message->pointer.root_y;
event->button.button = message->button.button;
event->button.state = message->pointer.state;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
@@ -225,8 +225,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event->scroll.x_root = message->pointer.root_x;
event->scroll.y_root = message->pointer.root_y;
event->scroll.direction = message->scroll.dir == 0 ? GDK_SCROLL_UP : GDK_SCROLL_DOWN;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
@@ -270,7 +270,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_source_device (event, device_manager->touchscreen);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
if (message->touch.is_emulated)
_gdk_event_set_pointer_emulated (event, TRUE);
@@ -306,7 +306,7 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
break;
case BROADWAY_EVENT_GRAB_NOTIFY:
case BROADWAY_EVENT_UNGRAB_NOTIFY:
_gdk_display_device_grab_update (display, display->core_pointer, display->core_pointer, message->base.serial);
_gdk_display_device_grab_update (display, device_manager->core_pointer, device_manager->core_pointer, message->base.serial);
break;
case BROADWAY_EVENT_CONFIGURE_NOTIFY:
@@ -365,8 +365,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event = gdk_event_new (GDK_FOCUS_CHANGE);
event->focus_change.window = g_object_ref (window);
event->focus_change.in = FALSE;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
}
@@ -376,8 +376,8 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message)
event = gdk_event_new (GDK_FOCUS_CHANGE);
event->focus_change.window = g_object_ref (window);
event->focus_change.in = TRUE;
gdk_event_set_device (event, display->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (display->core_pointer));
gdk_event_set_device (event, device_manager->core_pointer);
gdk_event_set_seat (event, gdk_device_get_seat (device_manager->core_pointer));
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
}

View File

@@ -136,7 +136,7 @@ _gdk_broadway_display_convert_selection (GdkDisplay *display,
GdkAtom target,
guint32 time)
{
g_warning ("convert_selection not implemented\n");
g_warning ("convert_selection not implemented");
}
gint
@@ -153,7 +153,7 @@ _gdk_broadway_display_get_selection_property (GdkDisplay *display,
if (data)
*data = NULL;
g_warning ("get_selection_property not implemented\n");
g_warning ("get_selection_property not implemented");
return 0;
}
@@ -168,7 +168,7 @@ _gdk_broadway_display_send_selection_notify (GdkDisplay *display,
{
g_return_if_fail (GDK_IS_DISPLAY (display));
g_warning ("send_selection_notify not implemented\n");
g_warning ("send_selection_notify not implemented");
}

View File

@@ -40,11 +40,6 @@ struct _GdkBroadwayVisualClass
GObjectClass parent_class;
};
static void gdk_visual_decompose_mask (gulong mask,
gint *shift,
gint *prec);
G_DEFINE_TYPE (GdkBroadwayVisual, gdk_broadway_visual, GDK_TYPE_VISUAL)
static void
@@ -89,15 +84,6 @@ _gdk_broadway_screen_init_visuals (GdkScreen *screen)
visuals[0]->blue_mask = 0xff;
visuals[0]->colormap_size = 256;
visuals[0]->bits_per_rgb = 8;
gdk_visual_decompose_mask (visuals[0]->red_mask,
&visuals[0]->red_shift,
&visuals[0]->red_prec);
gdk_visual_decompose_mask (visuals[0]->green_mask,
&visuals[0]->green_shift,
&visuals[0]->green_prec);
gdk_visual_decompose_mask (visuals[0]->blue_mask,
&visuals[0]->blue_shift,
&visuals[0]->blue_prec);
visuals[1] = g_object_new (GDK_TYPE_BROADWAY_VISUAL, NULL);
visuals[1]->screen = screen;
@@ -109,15 +95,6 @@ _gdk_broadway_screen_init_visuals (GdkScreen *screen)
visuals[1]->blue_mask = 0xff;
visuals[1]->colormap_size = 256;
visuals[1]->bits_per_rgb = 8;
gdk_visual_decompose_mask (visuals[1]->red_mask,
&visuals[1]->red_shift,
&visuals[1]->red_prec);
gdk_visual_decompose_mask (visuals[1]->green_mask,
&visuals[1]->green_shift,
&visuals[1]->green_prec);
gdk_visual_decompose_mask (visuals[1]->blue_mask,
&visuals[1]->blue_shift,
&visuals[1]->blue_prec);
broadway_screen->system_visual = visuals[1];
broadway_screen->rgba_visual = visuals[0];
@@ -259,30 +236,3 @@ _gdk_broadway_screen_list_visuals (GdkScreen *screen)
return list;
}
static void
gdk_visual_decompose_mask (gulong mask,
gint *shift,
gint *prec)
{
*shift = 0;
*prec = 0;
if (mask == 0)
{
g_warning ("Mask is 0 in visual. Server bug ?");
return;
}
while (!(mask & 0x1))
{
(*shift)++;
mask >>= 1;
}
while (mask & 0x1)
{
(*prec)++;
mask >>= 1;
}
}

View File

@@ -1611,7 +1611,6 @@ gdk_window_impl_broadway_class_init (GdkWindowImplBroadwayClass *klass)
impl_class->set_decorations = gdk_broadway_window_set_decorations;
impl_class->get_decorations = gdk_broadway_window_get_decorations;
impl_class->set_functions = gdk_broadway_window_set_functions;
impl_class->set_functions = gdk_broadway_window_set_functions;
impl_class->begin_resize_drag = gdk_broadway_window_begin_resize_drag;
impl_class->begin_move_drag = gdk_broadway_window_begin_move_drag;
impl_class->set_opacity = gdk_broadway_window_set_opacity;

View File

@@ -138,31 +138,31 @@ static GCallback gdk_threads_lock = NULL;
static GCallback gdk_threads_unlock = NULL;
static const GDebugKey gdk_gl_keys[] = {
{"disable", GDK_GL_DISABLE},
{"always", GDK_GL_ALWAYS},
{"software-draw", GDK_GL_SOFTWARE_DRAW_GL | GDK_GL_SOFTWARE_DRAW_SURFACE},
{"software-draw-gl", GDK_GL_SOFTWARE_DRAW_GL},
{"software-draw-surface", GDK_GL_SOFTWARE_DRAW_SURFACE},
{"texture-rectangle", GDK_GL_TEXTURE_RECTANGLE},
{"legacy", GDK_GL_LEGACY},
{ "disable", GDK_GL_DISABLE },
{ "always", GDK_GL_ALWAYS },
{ "software-draw", GDK_GL_SOFTWARE_DRAW_GL | GDK_GL_SOFTWARE_DRAW_SURFACE} ,
{ "software-draw-gl", GDK_GL_SOFTWARE_DRAW_GL },
{ "software-draw-surface", GDK_GL_SOFTWARE_DRAW_SURFACE },
{ "texture-rectangle", GDK_GL_TEXTURE_RECTANGLE },
{ "legacy", GDK_GL_LEGACY }
};
#ifdef G_ENABLE_DEBUG
static const GDebugKey gdk_debug_keys[] = {
{"events", GDK_DEBUG_EVENTS},
{"misc", GDK_DEBUG_MISC},
{"dnd", GDK_DEBUG_DND},
{"xim", GDK_DEBUG_XIM},
{"nograbs", GDK_DEBUG_NOGRABS},
{"input", GDK_DEBUG_INPUT},
{"cursor", GDK_DEBUG_CURSOR},
{"multihead", GDK_DEBUG_MULTIHEAD},
{"xinerama", GDK_DEBUG_XINERAMA},
{"draw", GDK_DEBUG_DRAW},
{"eventloop", GDK_DEBUG_EVENTLOOP},
{"frames", GDK_DEBUG_FRAMES},
{"settings", GDK_DEBUG_SETTINGS},
{"opengl", GDK_DEBUG_OPENGL},
{ "events", GDK_DEBUG_EVENTS },
{ "misc", GDK_DEBUG_MISC },
{ "dnd", GDK_DEBUG_DND },
{ "xim", GDK_DEBUG_XIM },
{ "nograbs", GDK_DEBUG_NOGRABS },
{ "input", GDK_DEBUG_INPUT },
{ "cursor", GDK_DEBUG_CURSOR },
{ "multihead", GDK_DEBUG_MULTIHEAD },
{ "xinerama", GDK_DEBUG_XINERAMA },
{ "draw", GDK_DEBUG_DRAW },
{ "eventloop", GDK_DEBUG_EVENTLOOP },
{ "frames", GDK_DEBUG_FRAMES },
{ "settings", GDK_DEBUG_SETTINGS },
{ "opengl", GDK_DEBUG_OPENGL }
};
static gboolean

View File

@@ -91,6 +91,7 @@ enum {
PROP_VENDOR_ID,
PROP_PRODUCT_ID,
PROP_SEAT,
PROP_NUM_TOUCHES,
LAST_PROP
};
@@ -287,6 +288,24 @@ gdk_device_class_init (GdkDeviceClass *klass)
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
/**
* GdkDevice:num-touches:
*
* The maximal number of concurrent touches on a touch device.
* Will be 0 if the device is not a touch device or if the number
* of touches is unknown.
*
* Since: 3.20
*/
device_props[PROP_NUM_TOUCHES] =
g_param_spec_uint ("num-touches",
P_("Number of concurrent touches"),
P_("Number of concurrent touches"),
0, G_MAXUINT,
0,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, LAST_PROP, device_props);
/**
@@ -400,6 +419,9 @@ gdk_device_set_property (GObject *object,
case PROP_SEAT:
device->seat = g_value_get_object (value);
break;
case PROP_NUM_TOUCHES:
device->num_touches = g_value_get_uint (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -452,6 +474,9 @@ gdk_device_get_property (GObject *object,
case PROP_SEAT:
g_value_set_object (value, device->seat);
break;
case PROP_NUM_TOUCHES:
g_value_set_uint (value, device->num_touches);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;

View File

@@ -57,6 +57,7 @@ struct _GdkDevice
GList *slaves;
GdkDeviceType type;
GArray *axes;
guint num_touches;
gchar *vendor_id;
gchar *product_id;

View File

@@ -213,7 +213,7 @@ gdk_display_class_init (GdkDisplayClass *class)
/**
* GdkDisplay::seat-removed:
* @display: the object on which the signal is emitted
* @seat: the seat that was just added
* @seat: the seat that was just removed
*
* The ::seat-removed signal is emitted whenever a seat is removed
* by the windowing system.
@@ -293,6 +293,8 @@ gdk_display_dispose (GObject *object)
display->queued_events = NULL;
display->queued_tail = NULL;
g_list_foreach (display->input_devices, (GFunc) g_object_run_dispose, NULL);
if (device_manager)
{
/* this is to make it drop devices which may require using the X
@@ -321,6 +323,8 @@ gdk_display_finalize (GObject *object)
g_hash_table_destroy (display->pointers_info);
g_hash_table_destroy (display->multiple_click_info);
g_list_free_full (display->input_devices, g_object_unref);
if (display->device_manager)
g_object_unref (display->device_manager);
@@ -601,6 +605,7 @@ gdk_display_get_pointer (GdkDisplay *display,
GdkModifierType *mask)
{
GdkScreen *default_screen;
GdkSeat *default_seat;
GdkWindow *root;
gdouble tmp_x, tmp_y;
GdkModifierType tmp_mask;
@@ -611,11 +616,12 @@ gdk_display_get_pointer (GdkDisplay *display,
return;
default_screen = gdk_display_get_default_screen (display);
default_seat = gdk_display_get_default_seat (display);
/* We call _gdk_device_query_state() here manually instead of
* gdk_device_get_position() because we care about the modifier mask */
_gdk_device_query_state (display->core_pointer,
_gdk_device_query_state (gdk_seat_get_pointer (default_seat),
gdk_screen_get_root_window (default_screen),
&root, NULL,
&tmp_x, &tmp_y,
@@ -657,9 +663,13 @@ gdk_display_get_window_at_pointer (GdkDisplay *display,
gint *win_x,
gint *win_y)
{
GdkDevice *pointer;
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
return gdk_device_get_window_at_position (display->core_pointer, win_x, win_y);
pointer = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
return gdk_device_get_window_at_position (pointer, win_x, win_y);
}
static void
@@ -1071,6 +1081,14 @@ switch_to_pointer_grab (GdkDisplay *display,
g_hash_table_insert (display->device_grabs, device, old_grabs);
}
void
_gdk_display_update_last_event (GdkDisplay *display,
const GdkEvent *event)
{
if (gdk_event_get_time (event) != GDK_CURRENT_TIME)
display->last_event_time = gdk_event_get_time (event);
}
void
_gdk_display_device_grab_update (GdkDisplay *display,
GdkDevice *device,
@@ -1831,7 +1849,23 @@ gdk_display_list_devices (GdkDisplay *display)
{
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
return GDK_DISPLAY_GET_CLASS (display)->list_devices (display);
if (!display->input_devices)
{
GdkSeat *seat;
seat = gdk_display_get_default_seat (display);
/* For backwards compatibility we only include pointing
* devices (the core pointer and the slaves).
* We store the list since this deprecated function does
* not transfer the list ownership.
*/
display->input_devices = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_ALL_POINTING);
display->input_devices = g_list_prepend (display->input_devices, gdk_seat_get_pointer (seat));
g_list_foreach (display->input_devices, (GFunc) g_object_ref, NULL);
}
return display->input_devices;
}
static GdkAppLaunchContext *
@@ -2018,11 +2052,12 @@ gdk_display_warp_pointer (GdkDisplay *display,
gint x,
gint y)
{
GdkDevice *pointer;
g_return_if_fail (GDK_IS_DISPLAY (display));
gdk_device_warp (display->core_pointer,
screen,
x, y);
pointer = gdk_seat_get_pointer (gdk_display_get_default_seat (display));
gdk_device_warp (pointer, screen, x, y);
}
gulong
@@ -2365,7 +2400,7 @@ gdk_display_add_seat (GdkDisplay *display,
g_return_if_fail (GDK_IS_DISPLAY (display));
g_return_if_fail (GDK_IS_SEAT (seat));
display->seats = g_list_prepend (display->seats, g_object_ref (seat));
display->seats = g_list_append (display->seats, g_object_ref (seat));
g_signal_emit (display, signals[SEAT_ADDED], 0, seat);
}

View File

@@ -441,6 +441,15 @@ gdk_display_manager_open_display (GdkDisplayManager *manager,
backend_list = g_getenv ("GDK_BACKEND");
if (backend_list == NULL)
backend_list = allowed_backends;
else if (g_strcmp0 (backend_list, "help") == 0)
{
fprintf (stderr, "Supported GDK backends:");
for (i = 0; gdk_backends[i].name != NULL; i++)
fprintf (stderr, " %s", gdk_backends[i].name);
fprintf (stderr, "\n");
backend_list = allowed_backends;
}
backends = g_strsplit (backend_list, ",", 0);
display = NULL;

View File

@@ -88,6 +88,7 @@ typedef struct
gint button_number[2]; /* last 2 buttons to be pressed */
gint button_x[2]; /* last 2 button click positions */
gint button_y[2];
GdkDevice *last_slave;
} GdkMultipleClickInfo;
struct _GdkDisplay
@@ -101,7 +102,6 @@ struct _GdkDisplay
* is part of a double-click or triple-click
*/
GHashTable *multiple_click_info;
GdkDevice *core_pointer; /* Core pointer device */
guint event_pause_count; /* How many times events are blocked */
@@ -111,6 +111,7 @@ struct _GdkDisplay
GHashTable *device_grabs;
GHashTable *motion_hint_info;
GdkDeviceManager *device_manager;
GList *input_devices; /* Deprecated, only used to keep gdk_display_list_devices working */
GHashTable *pointers_info; /* GdkPointerWindowInfo for each device */
guint32 last_event_time; /* Last reported event time from server */
@@ -175,7 +176,6 @@ struct _GdkDisplayClass
gdouble x,
gdouble y);
GList * (*list_devices) (GdkDisplay *display);
GdkAppLaunchContext * (*get_app_launch_context) (GdkDisplay *display);
void (*before_process_all_updates) (GdkDisplay *display);
@@ -253,6 +253,8 @@ typedef void (* GdkDisplayPointerInfoForeach) (GdkDisplay *display,
GdkPointerWindowInfo *device_info,
gpointer user_data);
void _gdk_display_update_last_event (GdkDisplay *display,
const GdkEvent *event);
void _gdk_display_device_grab_update (GdkDisplay *display,
GdkDevice *device,
GdkDevice *source_device,

View File

@@ -686,6 +686,8 @@ gdk_drag_drop_done (GdkDragContext *context,
* cancelled through other means.
*
* Returns: #TRUE if the drag and drop operation is managed.
*
* Since: 3.20
**/
gboolean
gdk_drag_context_manage_dnd (GdkDragContext *context,
@@ -696,8 +698,7 @@ gdk_drag_context_manage_dnd (GdkDragContext *context,
g_return_val_if_fail (GDK_IS_WINDOW (ipc_window), FALSE);
if (GDK_DRAG_CONTEXT_GET_CLASS (context)->manage_dnd)
return GDK_DRAG_CONTEXT_GET_CLASS (context)->manage_dnd (context, ipc_window,
actions);
return GDK_DRAG_CONTEXT_GET_CLASS (context)->manage_dnd (context, ipc_window, actions);
return FALSE;
}
@@ -751,7 +752,8 @@ gdk_drag_context_handle_source_event (GdkEvent *event)
}
GdkCursor *
gdk_drag_get_cursor (GdkDragAction action)
gdk_drag_get_cursor (GdkDragContext *context,
GdkDragAction action)
{
gint i;
@@ -760,7 +762,57 @@ gdk_drag_get_cursor (GdkDragAction action)
break;
if (drag_cursors[i].cursor == NULL)
drag_cursors[i].cursor = gdk_cursor_new_from_name (gdk_display_get_default (),
drag_cursors[i].cursor = gdk_cursor_new_from_name (context->display,
drag_cursors[i].name);
return drag_cursors[i].cursor;
}
static void
gdk_drag_context_commit_drag_status (GdkDragContext *context)
{
GdkDragContextClass *context_class;
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
g_return_if_fail (!context->is_source);
context_class = GDK_DRAG_CONTEXT_GET_CLASS (context);
if (context_class->commit_drag_status)
context_class->commit_drag_status (context);
}
gboolean
gdk_drag_context_handle_dest_event (GdkEvent *event)
{
GdkDragContext *context = NULL;
GList *l;
switch (event->type)
{
case GDK_DRAG_MOTION:
case GDK_DROP_START:
context = event->dnd.context;
break;
case GDK_SELECTION_NOTIFY:
for (l = contexts; l; l = l->next)
{
GdkDragContext *c = l->data;
if (!c->is_source &&
event->selection.selection == gdk_drag_get_selection (c))
{
context = c;
break;
}
}
break;
default:
return FALSE;
}
if (!context)
return FALSE;
gdk_drag_context_commit_drag_status (context);
return TRUE;;
}

View File

@@ -84,6 +84,8 @@ struct _GdkDragContextClass {
const GdkEvent *event);
void (*action_changed) (GdkDragContext *context,
GdkDragAction action);
void (*commit_drag_status) (GdkDragContext *context);
};
struct _GdkDragContext {
@@ -92,6 +94,8 @@ struct _GdkDragContext {
/*< private >*/
GdkDragProtocol protocol;
GdkDisplay *display;
gboolean is_source;
GdkWindow *source_window;
GdkWindow *dest_window;
@@ -116,7 +120,9 @@ void gdk_drag_context_set_cursor (GdkDragContext *context,
void gdk_drag_context_cancel (GdkDragContext *context,
GdkDragCancelReason reason);
gboolean gdk_drag_context_handle_source_event (GdkEvent *event);
GdkCursor * gdk_drag_get_cursor (GdkDragAction action);
gboolean gdk_drag_context_handle_dest_event (GdkEvent *event);
GdkCursor * gdk_drag_get_cursor (GdkDragContext *context,
GdkDragAction action);
G_END_DECLS

View File

@@ -71,6 +71,9 @@ _gdk_event_emit (GdkEvent *event)
if (_gdk_event_func)
(*_gdk_event_func) (event, _gdk_event_data);
if (gdk_drag_context_handle_dest_event (event))
return;
}
/*********************************************
@@ -118,25 +121,6 @@ _gdk_event_queue_find_first (GdkDisplay *display)
return NULL;
}
/**
* _gdk_event_queue_prepend:
* @display: a #GdkDisplay
* @event: Event to prepend.
*
* Prepends an event before the head of the event queue.
*
* Returns: the newly prepended list node.
**/
GList*
_gdk_event_queue_prepend (GdkDisplay *display,
GdkEvent *event)
{
display->queued_events = g_list_prepend (display->queued_events, event);
if (!display->queued_tail)
display->queued_tail = display->queued_events;
return display->queued_events;
}
/**
* _gdk_event_queue_append:
* @display: a #GdkDisplay
@@ -311,6 +295,7 @@ _gdk_event_queue_handle_motion_compression (GdkDisplay *display)
while (pending_motions && pending_motions->next != NULL)
{
GList *next = pending_motions->next;
gdk_event_free (pending_motions->data);
display->queued_events = g_list_delete_link (display->queued_events,
pending_motions);
pending_motions = next;
@@ -1665,7 +1650,7 @@ gdk_event_get_device (const GdkEvent *event)
GdkSeat *seat;
g_warning ("Event with type %d not holding a GdkDevice. "
"It is most likely synthesized outside Gdk/GTK+\n",
"It is most likely synthesized outside Gdk/GTK+",
event->type);
display = gdk_window_get_display (event->any.window);
@@ -2082,12 +2067,6 @@ gdk_get_show_events (void)
return (_gdk_debug_flags & GDK_DEBUG_EVENTS) != 0;
}
/* What do we do with G_IO_NVAL?
*/
#define READ_CONDITION (G_IO_IN | G_IO_HUP | G_IO_ERR)
#define WRITE_CONDITION (G_IO_OUT | G_IO_ERR)
#define EXCEPTION_CONDITION (G_IO_PRI)
static void
gdk_synthesize_click (GdkDisplay *display,
GdkEvent *event,
@@ -2106,9 +2085,11 @@ _gdk_event_button_generate (GdkDisplay *display,
GdkEvent *event)
{
GdkMultipleClickInfo *info;
GdkDevice *source_device;
g_return_if_fail (event->type == GDK_BUTTON_PRESS);
source_device = gdk_event_get_source_device (event);
info = g_hash_table_lookup (display->multiple_click_info, event->button.device);
if (G_UNLIKELY (!info))
@@ -2123,6 +2104,7 @@ _gdk_event_button_generate (GdkDisplay *display,
if ((event->button.time < (info->button_click_time[1] + 2 * display->double_click_time)) &&
(event->button.window == info->button_window[1]) &&
(event->button.button == info->button_number[1]) &&
(source_device == info->last_slave) &&
(ABS (event->button.x - info->button_x[1]) <= display->double_click_distance) &&
(ABS (event->button.y - info->button_y[1]) <= display->double_click_distance))
{
@@ -2136,10 +2118,12 @@ _gdk_event_button_generate (GdkDisplay *display,
info->button_number[0] = -1;
info->button_x[0] = info->button_x[1] = 0;
info->button_y[0] = info->button_y[1] = 0;
info->last_slave = NULL;
}
else if ((event->button.time < (info->button_click_time[0] + display->double_click_time)) &&
(event->button.window == info->button_window[0]) &&
(event->button.button == info->button_number[0]) &&
(source_device == info->last_slave) &&
(ABS (event->button.x - info->button_x[0]) <= display->double_click_distance) &&
(ABS (event->button.y - info->button_y[0]) <= display->double_click_distance))
{
@@ -2155,6 +2139,7 @@ _gdk_event_button_generate (GdkDisplay *display,
info->button_x[0] = event->button.x;
info->button_y[1] = info->button_y[0];
info->button_y[0] = event->button.y;
info->last_slave = source_device;
}
else
{
@@ -2168,15 +2153,36 @@ _gdk_event_button_generate (GdkDisplay *display,
info->button_x[0] = event->button.x;
info->button_y[1] = 0;
info->button_y[0] = event->button.y;
info->last_slave = source_device;
}
}
static GList *
gdk_get_pending_window_state_event_link (GdkWindow *window)
{
GdkDisplay *display = gdk_window_get_display (window);
GList *tmp_list;
for (tmp_list = display->queued_events; tmp_list; tmp_list = tmp_list->next)
{
GdkEventPrivate *event = tmp_list->data;
if (event->event.type == GDK_WINDOW_STATE &&
event->event.window_state.window == window)
return tmp_list;
}
return NULL;
}
void
_gdk_set_window_state (GdkWindow *window,
GdkWindowState new_state)
{
GdkDisplay *display = gdk_window_get_display (window);
GdkEvent temp_event;
GdkWindowState old;
GList *pending_event_link;
g_return_if_fail (window != NULL);
@@ -2185,11 +2191,23 @@ _gdk_set_window_state (GdkWindow *window,
temp_event.window_state.send_event = FALSE;
temp_event.window_state.new_window_state = new_state;
old = window->state;
if (temp_event.window_state.new_window_state == old)
if (temp_event.window_state.new_window_state == window->state)
return; /* No actual work to do, nothing changed. */
pending_event_link = gdk_get_pending_window_state_event_link (window);
if (pending_event_link)
{
old = window->old_state;
_gdk_event_queue_remove_link (display, pending_event_link);
gdk_event_free (pending_event_link->data);
g_list_free_1 (pending_event_link);
}
else
{
old = window->state;
window->old_state = old;
}
temp_event.window_state.changed_mask = new_state ^ old;
/* Actually update the field in GdkWindow, this is sort of an odd
@@ -2211,7 +2229,7 @@ _gdk_set_window_state (GdkWindow *window,
{
case GDK_WINDOW_TOPLEVEL:
case GDK_WINDOW_TEMP: /* ? */
gdk_display_put_event (gdk_window_get_display (window), &temp_event);
gdk_display_put_event (display, &temp_event);
break;
case GDK_WINDOW_FOREIGN:
case GDK_WINDOW_ROOT:
@@ -2366,7 +2384,7 @@ gdk_event_get_seat (const GdkEvent *event)
GdkDevice *device;
g_warning ("Event with type %d not holding a GdkSeat. "
"It is most likely synthesized outside Gdk/GTK+\n",
"It is most likely synthesized outside Gdk/GTK+",
event->type);
device = gdk_event_get_device (event);

View File

@@ -416,12 +416,18 @@ _gdk_frame_clock_begin_frame (GdkFrameClock *frame_clock)
priv->frame_counter++;
priv->current = (priv->current + 1) % FRAME_HISTORY_MAX_LENGTH;
/* Try to steal the previous frame timing instead of discarding
* and allocating a new one.
*/
if G_LIKELY (priv->n_timings == FRAME_HISTORY_MAX_LENGTH &&
_gdk_frame_timings_steal (priv->timings[priv->current],
priv->frame_counter))
return;
if (priv->n_timings < FRAME_HISTORY_MAX_LENGTH)
priv->n_timings++;
else
{
gdk_frame_timings_unref(priv->timings[priv->current]);
}
gdk_frame_timings_unref(priv->timings[priv->current]);
priv->timings[priv->current] = _gdk_frame_timings_new (priv->frame_counter);
}
@@ -493,6 +499,8 @@ void
_gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
GdkFrameTimings *timings)
{
GString *str;
gint64 previous_frame_time = 0;
GdkFrameTimings *previous_timings = gdk_frame_clock_get_timings (clock,
timings->frame_counter - 1);
@@ -500,25 +508,29 @@ _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
if (previous_timings != NULL)
previous_frame_time = previous_timings->frame_time;
g_print ("%5" G_GINT64_FORMAT ":", timings->frame_counter);
str = g_string_new ("");
g_string_append_printf (str, "%5" G_GINT64_FORMAT ":", timings->frame_counter);
if (previous_frame_time != 0)
{
g_print (" interval=%-4.1f", (timings->frame_time - previous_frame_time) / 1000.);
g_print (timings->slept_before ? " (sleep)" : " ");
g_string_append_printf (str, " interval=%-4.1f", (timings->frame_time - previous_frame_time) / 1000.);
g_string_append_printf (str, timings->slept_before ? " (sleep)" : " ");
}
if (timings->layout_start_time != 0)
g_print (" layout_start=%-4.1f", (timings->layout_start_time - timings->frame_time) / 1000.);
g_string_append_printf (str, " layout_start=%-4.1f", (timings->layout_start_time - timings->frame_time) / 1000.);
if (timings->paint_start_time != 0)
g_print (" paint_start=%-4.1f", (timings->paint_start_time - timings->frame_time) / 1000.);
g_string_append_printf (str, " paint_start=%-4.1f", (timings->paint_start_time - timings->frame_time) / 1000.);
if (timings->frame_end_time != 0)
g_print (" frame_end=%-4.1f", (timings->frame_end_time - timings->frame_time) / 1000.);
g_string_append_printf (str, " frame_end=%-4.1f", (timings->frame_end_time - timings->frame_time) / 1000.);
if (timings->presentation_time != 0)
g_print (" present=%-4.1f", (timings->presentation_time - timings->frame_time) / 1000.);
g_string_append_printf (str, " present=%-4.1f", (timings->presentation_time - timings->frame_time) / 1000.);
if (timings->predicted_presentation_time != 0)
g_print (" predicted=%-4.1f", (timings->predicted_presentation_time - timings->frame_time) / 1000.);
g_string_append_printf (str, " predicted=%-4.1f", (timings->predicted_presentation_time - timings->frame_time) / 1000.);
if (timings->refresh_interval != 0)
g_print (" refresh_interval=%-4.1f", timings->refresh_interval / 1000.);
g_print ("\n");
g_string_append_printf (str, " refresh_interval=%-4.1f", timings->refresh_interval / 1000.);
g_message ("%s", str->str);
g_string_free (str, TRUE);
}
#endif /* G_ENABLE_DEBUG */
@@ -597,3 +609,45 @@ gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock,
frame_counter--;
}
}
void
_gdk_frame_clock_emit_flush_events (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[FLUSH_EVENTS], 0);
}
void
_gdk_frame_clock_emit_before_paint (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[BEFORE_PAINT], 0);
}
void
_gdk_frame_clock_emit_update (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[UPDATE], 0);
}
void
_gdk_frame_clock_emit_layout (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[LAYOUT], 0);
}
void
_gdk_frame_clock_emit_paint (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[PAINT], 0);
}
void
_gdk_frame_clock_emit_after_paint (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[AFTER_PAINT], 0);
}
void
_gdk_frame_clock_emit_resume_events (GdkFrameClock *frame_clock)
{
g_signal_emit (frame_clock, signals[RESUME_EVENTS], 0);
}

View File

@@ -307,7 +307,7 @@ gdk_frame_clock_flush_idle (void *data)
priv->phase = GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS;
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS;
g_signal_emit_by_name (G_OBJECT (clock), "flush-events");
_gdk_frame_clock_emit_flush_events (clock);
if ((priv->requested & ~GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS) != 0 ||
priv->updating_count > 0)
@@ -366,7 +366,7 @@ gdk_frame_clock_paint_idle (void *data)
* in them.
*/
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT;
g_signal_emit_by_name (G_OBJECT (clock), "before-paint");
_gdk_frame_clock_emit_before_paint (clock);
priv->phase = GDK_FRAME_CLOCK_PHASE_UPDATE;
}
/* fallthrough */
@@ -377,7 +377,7 @@ gdk_frame_clock_paint_idle (void *data)
priv->updating_count > 0)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_UPDATE;
g_signal_emit_by_name (G_OBJECT (clock), "update");
_gdk_frame_clock_emit_update (clock);
}
}
/* fallthrough */
@@ -386,7 +386,7 @@ gdk_frame_clock_paint_idle (void *data)
{
int iter;
#ifdef G_ENABLE_DEBUG
if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
if (GDK_DEBUG_CHECK (FRAMES))
{
if (priv->phase != GDK_FRAME_CLOCK_PHASE_LAYOUT &&
(priv->requested & GDK_FRAME_CLOCK_PHASE_LAYOUT))
@@ -405,7 +405,7 @@ gdk_frame_clock_paint_idle (void *data)
priv->freeze_count == 0 && iter++ < 4)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_LAYOUT;
g_signal_emit_by_name (G_OBJECT (clock), "layout");
_gdk_frame_clock_emit_layout (clock);
}
if (iter == 5)
g_warning ("gdk-frame-clock: layout continuously requested, giving up after 4 tries");
@@ -415,7 +415,7 @@ gdk_frame_clock_paint_idle (void *data)
if (priv->freeze_count == 0)
{
#ifdef G_ENABLE_DEBUG
if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
if (GDK_DEBUG_CHECK (FRAMES))
{
if (priv->phase != GDK_FRAME_CLOCK_PHASE_PAINT &&
(priv->requested & GDK_FRAME_CLOCK_PHASE_PAINT))
@@ -427,7 +427,7 @@ gdk_frame_clock_paint_idle (void *data)
if (priv->requested & GDK_FRAME_CLOCK_PHASE_PAINT)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_PAINT;
g_signal_emit_by_name (G_OBJECT (clock), "paint");
_gdk_frame_clock_emit_paint (clock);
}
}
/* fallthrough */
@@ -435,13 +435,13 @@ gdk_frame_clock_paint_idle (void *data)
if (priv->freeze_count == 0)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_AFTER_PAINT;
g_signal_emit_by_name (G_OBJECT (clock), "after-paint");
_gdk_frame_clock_emit_after_paint (clock);
/* the ::after-paint phase doesn't get repeated on freeze/thaw,
*/
priv->phase = GDK_FRAME_CLOCK_PHASE_NONE;
#ifdef G_ENABLE_DEBUG
if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
if (GDK_DEBUG_CHECK (FRAMES))
timings->frame_end_time = g_get_monotonic_time ();
#endif /* G_ENABLE_DEBUG */
}
@@ -452,7 +452,7 @@ gdk_frame_clock_paint_idle (void *data)
}
#ifdef G_ENABLE_DEBUG
if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
if (GDK_DEBUG_CHECK (FRAMES))
{
if (timings && timings->complete)
_gdk_frame_clock_debug_print_timings (clock, timings);
@@ -462,7 +462,7 @@ gdk_frame_clock_paint_idle (void *data)
if (priv->requested & GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS)
{
priv->requested &= ~GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS;
g_signal_emit_by_name (G_OBJECT (clock), "resume-events");
_gdk_frame_clock_emit_resume_events (clock);
}
if (priv->freeze_count == 0)

View File

@@ -111,7 +111,17 @@ void _gdk_frame_clock_begin_frame (GdkFrameClock *clock);
void _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
GdkFrameTimings *timings);
GdkFrameTimings *_gdk_frame_timings_new (gint64 frame_counter);
GdkFrameTimings *_gdk_frame_timings_new (gint64 frame_counter);
gboolean _gdk_frame_timings_steal (GdkFrameTimings *timings,
gint64 frame_counter);
void _gdk_frame_clock_emit_flush_events (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_before_paint (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_update (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_layout (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_paint (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_after_paint (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_resume_events (GdkFrameClock *frame_clock);
G_END_DECLS

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