Compare commits

..

122 Commits

Author SHA1 Message Date
Benjamin Otte 1af58dc4ee entry: Use cssnodeutils for the widget node 2015-03-22 02:44:41 +01:00
Benjamin Otte cb1cf06744 cssnodeutils: Implement margins 2015-03-20 18:55:27 +01:00
Benjamin Otte c5d00ae119 css: Add min-width/height CSS properties
Use them for the minimum size during size requests.
2015-03-20 14:59:36 +01:00
Benjamin Otte 15582ef9c1 entry: Make progressbar a CssNode 2015-03-20 14:59:28 +01:00
Benjamin Otte 0e57785af7 entry: Set insensitive state on icon css node
... instead of doing it on-demand.
2015-03-20 14:59:28 +01:00
Benjamin Otte 52f58f1637 entry: Use the :active state for pressed icons 2015-03-20 14:59:28 +01:00
Benjamin Otte cd87252130 entry: Set the prelight flag on the CSS node 2015-03-20 14:59:28 +01:00
Benjamin Otte 85d86d61de cssnode: Add gtk_css_node_add/remove_state() API
This mirrors gtk_css_node_add/remove_class() APIs and allows you to
specify a (set of) state(s) to set or unset.

These functions are purely convenience.
2015-03-20 14:59:28 +01:00
Benjamin Otte 0d01ceb415 entry: Prelight icons when pressed
There's no reason to not keep them in the prelight state, theme authors
can override a prelight effect in :active if they want.
2015-03-20 14:59:28 +01:00
Benjamin Otte aa005486de entry: Ignore the "icon-prelight" style property
Always prelight icons. CSS is powerful enough to let people keep the
appearance the same upon prelight.
2015-03-20 14:59:27 +01:00
Benjamin Otte cdd26d0d01 entry: Set style classes on entry icons upon state change 2015-03-20 14:59:27 +01:00
Benjamin Otte f408c59869 entry: Add a cssnode for icons 2015-03-20 14:59:27 +01:00
Benjamin Otte 4326e38b90 cssnode: Make classes APIs string-based
Using quarks is a bad idea now that we are calling the CssNode API
directly.
2015-03-20 14:59:27 +01:00
Benjamin Otte 0f488064a2 box: Port to cssnodeutils 2015-03-20 14:59:27 +01:00
Benjamin Otte e6c7e038c8 switch: Port to cssnodeutils 2015-03-20 14:59:27 +01:00
Benjamin Otte 18bd973014 cssnodeutils: Add a bunch of utility functions for using nodes
The idea is to wrap size request, size allocation and drawing each into
a function that takes care of the CSS box and then calls a callback to
request/allocate/draw the contents.

The idea is that complex widgets then nest these calls for all the css
nodes they need to handle.
2015-03-20 14:59:27 +01:00
Benjamin Otte dae2d9ec27 switch: Port to GtkCssNode
This is a simple port, no code modifications so far other than replacing
gtk_style_context_save() with gtk_style_context_save_to_node().
2015-03-20 14:59:27 +01:00
Benjamin Otte c0c79eee03 stylecontext: Add gtk_style_context_save_to_node()
To be used instead of gtk_style_context_save() with persistent nodes.
2015-03-20 14:59:27 +01:00
Jakub Steiner 3f13349f27 fix insensitive and backdrop states
- checkboxes, labels and buttons were a mixed bag for
  :insensitive and :backdrop

https://bugzilla.gnome.org/show_bug.cgi?id=746188
2015-03-20 13:25:52 +01:00
Matthias Clasen d6bfc2b9c9 HighContrast: fix insensitive labels
Make insensitive labels differerent from regular labels.

https://bugzilla.gnome.org/show_bug.cgi?id=746493
2015-03-20 06:20:30 -04:00
Matthias Clasen fa1bb8972a gtk-demo: Plug a memory leak 2015-03-19 22:57:10 -04:00
Matthias Clasen 8e82d0fba2 widget-factory: Fix toolbar on page 3
Set toolbar-style to 'icons' to avoid rectangular buttons.
2015-03-19 19:11:39 -04:00
Kjartan Maraas 7b1ff7c215 Updated Norwegian bokmål translation. 2015-03-19 21:13:10 +01:00
Vadim Rutkovsky 3211e82b59 inspector: show accessible name and description 2015-03-19 17:01:23 +01:00
Carlos Garnacho 6c8c37abbb wayland: Silence warnings on clipboard data sending cancellation
During copy/paste, it may be common that we receive several property changes
around the selection atom, this results in warnings when cancelling the previous
write attempt. We already honor the last request properly, so we should just
cancel silently.
2015-03-19 16:05:04 +01:00
Carlos Garnacho d5160bb950 wayland: Ensure we re-request the target if the fd changes
If we receive wl_data_source.target before .send, the target would already
be cached, but we'd take no action on the new fd.
2015-03-19 16:05:04 +01:00
Carlos Garnacho a59fd4a9ad wayland: Don't accept the "TARGETS" target on the wl_data_offer
This is handled separately through the data already cached from the
wl_data_offer.offer handler, we can avoid this request entirely then.
2015-03-19 16:05:04 +01:00
Милош Поповић 4d0e1e0b88 Updated Serbian translation 2015-03-19 13:20:12 +00:00
Benjamin Otte d48ba486ee Adwaita: Fix context menu shadows not showing up 2015-03-19 03:55:06 +01:00
Bastien Nocera 7dac38f841 inspector: Make it easier to cut'n'paste advice message
The message says "Enable statistics with GOBJECT_DEBUG=instance-count"
but the message itself isn't selectable, making it hard to cut'n'paste.

https://bugzilla.gnome.org/show_bug.cgi?id=746391
2015-03-18 22:05:46 -04:00
Benjamin Otte ec57c6c10b csspathnode: Handle context going away
Sometimes path nodes can survive longer than the style context that
created them. Don't crash in those cases.

Fixes startup of mutter.

Testcase included.

https://bugzilla.gnome.org/show_bug.cgi?id=746407
2015-03-18 18:24:45 +01:00
Benjamin Otte d55c261079 inspector: Add a new page that lists the CSS node tree 2015-03-18 15:23:33 +01:00
Benjamin Otte 8640bc47b1 cssnode: Add properties 2015-03-18 15:23:33 +01:00
Benjamin Otte d0d9f5a302 csswidgetnode: Use style_changed signal instead of update_style vfunc 2015-03-18 15:23:33 +01:00
Benjamin Otte 10d39171d9 cssnode: Add a style-changed signal
The signal gets emitted whenever the style needs to be changed.
2015-03-18 15:23:33 +01:00
Benjamin Otte 6988f9b818 cssnode: Add node-added and node-removed signal
This allows monitoring the CSS tree. For now, moving a child to a
different position relative to its siblings while keeping the same
parent will cause a child-added + child-removed emission.
2015-03-18 15:23:33 +01:00
Benjamin Otte c7fba52a36 cssnode: Track invalid children
We need to properly track if a node needs to propagate invalidation
state information to its children. We didn't do this properly before and
that could lead to us forgetting to invalidate nodes in corner cases.
2015-03-18 15:23:33 +01:00
Benjamin Otte 7395dddd47 csswidgetnode: Avoid creating a stylecontext
If the widget doesn't have a style context, don't create one. Instead,
call functions on the widget directly.
2015-03-18 15:23:33 +01:00
Benjamin Otte d785820c53 cssnode: Change the way we invalidate timestamps
Do not propagate the TIMESTAMP change through the node tree, as that
causes lots of uneeded markings of nodes as invalid.

Instead, walk the node tree and find the nodes that have a non-static
style and only invalidate timestamps on those.
2015-03-18 15:23:33 +01:00
Benjamin Otte 759d8dafd9 cssstyle: Add gtk_css_style_is_static()
Gets rid of the need to do

  if (ANIMATED_STYLE() &&
      animated_style_is_static(ANIMATED_STYLE(style))
2015-03-18 15:23:33 +01:00
Benjamin Otte d9727290cf cssnode: Special-case TIMESTAMP invalidations
Only invalidate timestamps if the node is marked as invalid. We overload
the meaning of "invalid" as "tracks timestamps".

While I don't like the way this is written, it is an important
optimization because 95+% of nodes don't animate so timestamps don't
matter to them. But timestamps are invalidated 60x per second.
2015-03-18 15:23:33 +01:00
Benjamin Otte 68b8f792d6 cssnode: Redo style changed tracking
We don't return a NULL style to mean "no changes" anymore, instead
we check new_style == old_style to mean that.

Make sure the code reflects this, otherwise we'll send
GTK_CSS_CHANGE_PARENT_STYLE invalidations everywhere and screw up
performance.
2015-03-18 15:23:32 +01:00
Benjamin Otte 776d99ac51 stylecontext: Call get_style(), not create_style()
We want to ensure that the style is created properly.

This also allows making the create_Style() function private.
2015-03-18 15:23:32 +01:00
Benjamin Otte 092ff983f7 cssnode: Merge the 2 places that compute styles
Now that the widget node recomputes styles on update_style() we can just
call it during validate(). That way, we don't need the widget node to
manually compute its style.
2015-03-18 15:23:32 +01:00
Benjamin Otte df51bc836b cssnode: Always return correct style values
If CSS values are queried from a widget, recompute them if necessary. Do
not emit style-updated until the validation phase however.

This way, we don't run into performance traps when style-update causes
invalidations that cause new style-updated to be emitted.
2015-03-18 15:23:32 +01:00
Benjamin Otte 3d1e2a0558 cssstyle: Add optimization
There is no difference between a style and itself.
2015-03-18 15:23:32 +01:00
Benjamin Otte 399df06d19 stylecontext: Refactor gtk_style_context_invalidate()
There's no need anymore to recreate styles, nodes do that automagically
now.

This allows making gtk_css_node_set_style() private.
2015-03-18 15:23:32 +01:00
Benjamin Otte 6dd19306eb cssnode: Create animated styles by default
... and hardcode transient and path nodes to never create animated
styles.
2015-03-18 15:23:32 +01:00
Benjamin Otte f43543165b cssnode: Add optimization
Don't even try to propagate changes when we know there are none.
2015-03-18 15:23:32 +01:00
Benjamin Otte 2954417335 cssnode: Change the way we start animations
We now have a flag for "invalidate animations", use that to restart
animations and decide if we want to start transitions.
2015-03-18 15:23:32 +01:00
Benjamin Otte 172f345d01 cssnode: Return NULL as frame clock when animations are disabled
This is a crude hack, but it works.

FIXME: Hook it up to the GtkSettings so that we properly update when the
setting changes.
2015-03-18 15:23:32 +01:00
Benjamin Otte fbe796f293 cssstyle: Handle 0 timestamp to mean "don't animate" 2015-03-18 15:23:32 +01:00
Benjamin Otte 2ec26cd9b5 cssnode: Move style context function to only user 2015-03-18 15:23:32 +01:00
Benjamin Otte 4b2cdb37fb cssnode: Remove timestamp from gtk_css_node_validate()
GtkCssNode knows its own timestamp.
2015-03-18 15:23:32 +01:00
Benjamin Otte dbe5058b86 cssnode: Add API to query the timestamp
... and pass it to the API that computes new styles.

A special timestamp of 0 means "please don't animate" and is used when
no frame clock is available for a node.
2015-03-18 15:23:32 +01:00
Benjamin Otte 5833858abf cssnode: Make parent style change part of GtkCssNode 2015-03-18 15:23:32 +01:00
Benjamin Otte ceaa594fa4 cssnode: Propagate pending changes after recomputing new style
This way we can propagate if the new style actually changed anything.
2015-03-18 15:23:32 +01:00
Benjamin Otte cadf6a9d3c cssnode: Add gtk_css_node_invalidate_style_provider()
This function not just invalidates the current node, but also all
children.
2015-03-18 15:23:32 +01:00
Benjamin Otte 16b8972bee cssnode: Change get_style_provider() vfunc
Instead of always returning a provider, allow the vfunc to return NULL
to mane "use same provider as parent". This allows a bunch of
optimizations.
2015-03-18 15:23:32 +01:00
Benjamin Otte c0f6e746a0 cssnode: Implement a way to properly track invalidations
See the comment in gtkcssnodeprivate.h for how this works.
2015-03-18 15:23:32 +01:00
Benjamin Otte 13fd368781 cssnode: Change vfunc
This is mainly an attempt to merge the update_style() and validte()
vfuncs. Code is not there yet, but that's the idea.

Also, gtk_css_node_set_style() should not be public. And this gets
closer to that goal, too.
2015-03-18 15:23:31 +01:00
Benjamin Otte 75b633ae08 cssnode: Only pass a boolean for parent changes
Nobody cares what changed in the parent, so don't track it.
2015-03-18 15:23:31 +01:00
Benjamin Otte da25771e58 cssvalue: Remove GtkCssDependencies
They are not used anymore.
2015-03-18 15:23:31 +01:00
Benjamin Otte e95985da26 cssstyle: Remove unused optimization
After measuring it, I realized the optimization never triggers for
Adwaita and rarely ever triggers for simple themes. So it is not
useful to keep it around.
2015-03-18 15:23:31 +01:00
Benjamin Otte 6f9969f4fe csswidgetnode: Always return a valid style 2015-03-18 15:23:31 +01:00
Benjamin Otte b827725ace csspathnode: Call gtk_style_context_validate()
Don't call gtk_style_context_invalidate(), that function does too much
work.
2015-03-18 15:23:31 +01:00
Benjamin Otte 6c00eba7fb testsuite: Add another random stylecontext test 2015-03-18 15:23:31 +01:00
Benjamin Otte d3471508a0 cssnode: Use the frame clock's time
... nstead of the monotonic time when validating a cssnode.
2015-03-18 15:23:31 +01:00
Benjamin Otte 9b73b39f9a cssnode: Treat transient nodes as invisible nodes
Making transient nodes invisible allows us to remove special cases
without any bad side effects and they continue working just like they
did before.
2015-03-18 15:23:31 +01:00
Benjamin Otte 2670ae4436 reftests: Add a reftest for box sibling ordering 2015-03-18 15:23:31 +01:00
Benjamin Otte 2694545468 cssnode: Add visibility concept
This allows hiding nodes of invisible widgets.
And that in turn makes sure :nth-child() works as expected.
2015-03-18 15:23:31 +01:00
Benjamin Otte ee91fb71ca box: Use CSS nodes instead of widget paths
This is a very simple patch that causes a bunch of overhead. But it
works.
2015-03-18 15:23:31 +01:00
Benjamin Otte b92fe2fa85 widget: Add gtk_widget_get_css_node()
and replace gtk_style_context_get_root() with it.
2015-03-18 15:23:31 +01:00
Benjamin Otte 507016cafc cssnode: Refactor node tree modification code
This allows adding more API for it.

It also includes code that tracks modifications and invalidates siblings
and their positions whenever nodes get added or removed.
2015-03-18 15:23:31 +01:00
Benjamin Otte 310f9f40da cssnode: Add hackery to allow bypassing widget paths
If we know the parent's get_path_for_child() implementation is safe to
be used with GtkCssNode because it doesn't do anything special, we do
that. Unfortunately that requires whitelisting vfuncs because the vfunc
is public API so anyone can override it.
2015-03-18 15:23:31 +01:00
Benjamin Otte ee6d081ed9 cssnode: Remove now unused arg from vfunc 2015-03-18 15:23:31 +01:00
Benjamin Otte 89115be3cb cssnode: Add a matcher for nodes
... and use that matcher by default - ie for transient nodes.
2015-03-18 15:23:31 +01:00
Benjamin Otte 2a5194b635 cssnode: Make widget node not copy the path
Instead, use gtk_widget_get_path() which makes GtkWidget cache the path.
This is a temporary solution until we can get rid of widget paths.

This increases memory usage quite noticably.
2015-03-18 15:23:30 +01:00
Benjamin Otte 2143abe5ee cssnode: Make widget node use new matcher 2015-03-18 15:23:30 +01:00
Benjamin Otte 76ca9a9181 cssnode: Make path node create matcher without copying
... the WidgetPath. This uses the functionality introduced in the
previous commits.
2015-03-18 15:23:30 +01:00
Benjamin Otte 2bf7bdd651 cssmatcher: Allow widget path matcher to take a node declaration
The node declaration has the same functionality as
gtk_css_node_declaration_add_to_widget_path(). So instead of using that
function on a path, you can use the original path and the declaration in
a matcher.
2015-03-18 15:23:30 +01:00
Benjamin Otte 630f0f199e cssnode: Split out a function
So far the vfunc is kinda quirky (the path argument is an out argument
for something you have to free when you're done with the matcher), but
  I'm about to change that.
2015-03-18 15:23:30 +01:00
Benjamin Otte 5df01f9244 widget: Create widget path classes from proper style
We don't want to add the current classes to the widget path - which
might potentially be different after a gtk_style_context_save() - but
the root node's ones. So what better thing to do than actually using the
root node?
2015-03-18 15:23:30 +01:00
Benjamin Otte 5edc6d94d1 widget: Use correct type for widgetpath creation
This is relevant when the widget path is created while the widget is
still constructing. G_OBJECT_TYPE(widget) might not point to the final
type yet.
2015-03-18 15:23:30 +01:00
Benjamin Otte ffb410f11e widget: Create the CssNode
... and pass it to the style context instead of having the style context
create it for us.
2015-03-18 15:23:30 +01:00
Benjamin Otte 28043f0a92 cssnode: Refactor invalidation propagation
We want to be sure to gtk_css_node_invalidate() all potential changes.
2015-03-18 15:23:30 +01:00
Benjamin Otte efda30c495 stylecontext: Don't queue animate tick callbacks anymore
Instead, just mark nodes permanently as invalid.
2015-03-18 15:23:30 +01:00
Benjamin Otte 020f3f11c8 cssnode: Handle invalidate queueing differently
Instead of directly requesting the layout phase, register a tick
callback. This is what the docs suggest for animations and it's what we
need for the next commit.
2015-03-18 15:23:30 +01:00
Benjamin Otte cdd964a3af cssnode: Change way invalidation is handled
Have a queue_validate() vfunc and a dequeue_validate() vfunc that are
called only on root nodes so they can queue a validation on their frame
clocks.
2015-03-18 15:23:30 +01:00
Benjamin Otte 5f19f09ac3 cssnode: Refactor gtk_css_widget_node_validate()
Makes it clearer what actually happens in that function.
2015-03-18 15:23:30 +01:00
Benjamin Otte caf2fc9a10 cssnode: Only recreate styles when needed 2015-03-18 15:23:30 +01:00
Benjamin Otte 219e52f7e1 cssnode: Automatically recreate style on get_style() call
When the style is invalid, redo it.

Make this a vfunc, so the widget nodes can opt out.
2015-03-18 15:23:30 +01:00
Benjamin Otte 71813671ef cssnode: Track pending changes here
... instead of GtkCssWidgetNode.
2015-03-18 15:23:30 +01:00
Benjamin Otte c550cf122a stylecontext: Move gtk_style_context_validate() to GtkCssWidgetNode 2015-03-18 15:23:30 +01:00
Benjamin Otte 649edbe2fc stylecontext: Move style creation functions to CssNode code 2015-03-18 15:23:30 +01:00
Benjamin Otte c4b88e05fd stylecontext: Redo handling of differing state
Instead of passing an "override_state" flag, create a new CssNode just
for this simple lookup.
2015-03-18 15:23:30 +01:00
Benjamin Otte 637a4bda5c stylecontext: Get rid of stylecontext argument
... to a bunch of functions.

This requires a tiny change to the heuristics for the style cache - we
now cache styles when they have the same style provider as their parent
instead of when they have the default provider - but that change doesn't
have any effect in practice.
2015-03-18 15:23:29 +01:00
Benjamin Otte 03ac5f310b cssnode: Add gtk_style_context_get_style_provider()
... and use it when looking up properties.
2015-03-18 15:23:29 +01:00
Benjamin Otte 6dc6af674c stylecontext: Remove children list
It's not needed.
2015-03-18 15:23:29 +01:00
Benjamin Otte 4cc2af2db1 stylecontext: Move validation into GtkCssNode 2015-03-18 15:23:29 +01:00
Benjamin Otte 8e1017db35 stylecontext: Export gtk_style_context_get_root()
.. in the private header. This avoids tiny wrapper functions.
2015-03-18 15:23:29 +01:00
Benjamin Otte 55e68bc2ea cssnode: Track invalid flag
Remove it from GtkStyleContext.
2015-03-18 15:23:29 +01:00
Benjamin Otte a589f98821 cssnode: Implement refcounting
The parent refs the child, so gtk_css_node_set_parent() adds/removes a
reference.

We should probably refactor this so that we name the function
parent.add(node) instead of node.set_parent(parent) - makes the
refcounting more clear.
2015-03-18 15:23:29 +01:00
Benjamin Otte 721dce73e0 stylecontext: Handle parent in CssNode code
Make CssNode a real tree with a DOM-like API.
2015-03-18 15:23:29 +01:00
Benjamin Otte 8c73799ca8 stylecontext: Move relevant_changes tracking to GtkCssWidgetNode 2015-03-18 15:23:29 +01:00
Benjamin Otte 7bafb63ec3 cssnode: Handle invalidation
Handle invalidation of node inside the CssNode code, don't do it in the
stylecontext.
2015-03-18 15:23:29 +01:00
Benjamin Otte d79a44c1af stylecontext: Get rid of create_query_path()
Move that functionality into GtkCssNode.
2015-03-18 15:23:29 +01:00
Benjamin Otte 6f99a3cdb0 stylecontext: Change arguments for build_properties
Instead of passing the style declaration, take the node's style
declaration. Add arguments to allow overriding the state for the one
case where this didn't work.
2015-03-18 15:23:29 +01:00
Benjamin Otte 0e3da2f7cf stylecontext: Compute rootness of CssNode
.. instead of passing it as an argument.
2015-03-18 15:23:29 +01:00
Benjamin Otte b9f1f8aa38 stylecontext: Pass cssnode to build_properties 2015-03-18 15:23:29 +01:00
Benjamin Otte 21c3b13596 stylecontext: Simplify a function 2015-03-18 15:23:29 +01:00
Benjamin Otte 40d94fcd38 stylecontext: Remove values cache
The code is confusing the stylecontext=>node transition, so I'll remove
it.

WIth the recent introduction of the parent style cachen, I'm not sure
it's worth it at all. Some crude benchmarking suggests a slight speedup
when removing the cache.

So no guarantees about adding it back later.
2015-03-18 15:23:29 +01:00
Benjamin Otte e2f6d4db43 cssnode: Split into 3 objects
- GtkCssWidgetNode
  for style contexts owned by a widget
- GtkCssPathNode
  for style contexts using a GtkWidgetPath
- GtkCssTransientNode
  for nodes created with gtk_style_context_save()/restore()
2015-03-18 15:23:29 +01:00
Benjamin Otte 726d8abb7d cssnode: Turn into a GObject
This will allow us to use subclasses.
2015-03-18 15:23:28 +01:00
Benjamin Otte cf6d9edc12 stylecontext: Turn CssNode accesses into getters/setters
That way we can hide the struct in the source file.
2015-03-18 15:23:28 +01:00
Benjamin Otte be596f3967 stylecontext: Split out GtkCssNode into own file
The functionality of it is supposed to grow, so better put it in a
custom file early.

This is just a naive split so far, the next patches will split things
further.
2015-03-18 15:23:28 +01:00
Benjamin Otte 99c4f2dd39 render: Make image effect not depend on state
Instead rely on -gtk-image-effect only. Adwaita should already work this
way.

Relying on state was a leftover feature from the GTK 2 days.
2015-03-18 15:22:09 +01:00
Benjamin Otte 0529e15d61 notebook: Protect against invalid allocations
A widget can be mapped but not have a size allocated yet. In that case
avoid computing a broken rectangle.

https://bugzilla.gnome.org/show_bug.cgi?id=746301
2015-03-18 15:14:47 +01:00
Carlos Garnacho dcfa55ac7e wayland: Fix thinko in wl_data_source.cancelled handler
The wl_data_source may be the clipboard's. Looking up the drag context in
order to get the display isn't going to fare well there. So, just use the
default display, and only look up the drag context when we know we need it.

https://bugzilla.gnome.org/show_bug.cgi?id=746386
2015-03-18 11:21:40 +01:00
Christian Hergert 28063ee2e4 textview: add support for underline and strikethrough colors
This commit adds the GtkTextTag:underline-rgba and :strikethrough-rgba
properties and the necessary plumbing to apply these colors in GtkTextLayout.
With this change, you can alter the color of underlines including those
of type PANGO_UNDERLINE_ERROR.

You might want to alter the underline color to differentiate between
spelling and grammer mistakes. In code editors, it is convenient to
differentiate between errors and warnings.

Note that the GtkTextAppearance struct is public ABI and has no spare
room for new fields, so we are resorting to some tricky packing to store
the colors in the unused pixel field of the fg_color and bg_color structs.
This packing is accomplished by the macros in gtktextattributesprivate.h.

Signed-off-by: Christian Hergert <christian@hergert.me>

https://bugzilla.gnome.org/show_bug.cgi?id=402168
2015-03-17 23:24:13 -04:00
Matthias Clasen 416c370da1 GtkRange: Fix scroll wheel direction for horizontal ranges
The expected behavior here is that scrolling up goes towards
larger values, ie to the right. This matches e.g. volume
sliders in gnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=737175
2015-03-17 22:02:35 -04:00
Matthias Clasen d823c39caf scrolled window: Use shift to modify scroll direction
It has been a long-standing request to interpret scroll events
with Shift held down as horizontal instead of vertical, and
some applications are already doing this on their own.

https://bugzilla.gnome.org/show_bug.cgi?id=132197
2015-03-17 20:50:24 -04:00
324 changed files with 104724 additions and 111834 deletions
-244
View File
@@ -1,247 +1,3 @@
Overview of changes in GTK+ 3.16.7
==================================
* Bugs fixed:
345345 PrintOperation::paginate is not emitted for class handler
579466 gtk_entry_completion_insert_action documentation is misleading
751721 No release event for shift key when both shift keys were pressed
753621 Calculate screen physical size
753628 user options of wrong printer are used
753644 Switching from Multipress input method to None immediately kills...
754535 Cursor disappears only on adding characters
* Translation updates:
Brazilian Portuguese
Czech
German
Hungarian
Indonesian
Lithuanian
Polish
Portuguese
Swedish
Overview of changes in GTK+ 3.16.6
==================================
* OS X: Partial aspect ratio support
* Revert a problematic change to scroll event handling
* Bug fixes:
741800 GTK3 apps have huge rendering pauses/hangs over SSH connection
751401 crash on DnD
751625 build error with pure wayland
752016 testgmenu: use the menu binding code
752093 Improvement to GtkImageMenuItem long description and code snippet
752520 Crash getting a NULL visual in glx_pixmap_get
* Translation updates:
Czech
Hungarian
Lithuanian
Polish
Slovenian
Overview of changes in GTK+ 3.16.5
==================================
* Bug fixes:
750489 gtk settings c910 warning unexpected annotation element type command
750605 icontheme: don't modify symbolic SVG dimensions when recoloring
750690 Recent Chooser Widget doesn't expand
750718 Improve documentation for deprecated properties
750870 gtk3 does apparently ignore replayed events?
750888 Fix return value error in _gtk_text_handle_set_direction
750994 X11: First mouse wheel event ignored after right click or Alt+Tab...
751018 Widget: GtkMenuButton+GtkPopover gtk_toggle_button_set_active() n...
751050 Moving the mouse while a stepper is activated causes the scrollba...
751082 GtkTreeView draw performance is bad when contents are not larger ...
751227 file picker list box height stretches to match extra widgets area...
751443 resource_path value cleared in gtk_image_set_from_resource
751739 Deadlock in X11 when setting XSetErrorHandler while another threa...
751752 Memleak when both opening shm and opening file in tmp fail
751754 GtkSwitch: calling gtk_switch_set_active in the handler for notif...
Fix ridge/groove border rendering
GtkListBoxRow: propagate in the draw vfunc
* Translation updates:
German
Overview of changes in GTK+ 3.16.4
==================================
* Bug fixes:
693738 gtk print dialog shows "Getting printer information failed" for...
719683 Escaping issue "Failed to set text from markup due to error par...
745957 GTK+/Quartz >= 3.14.8: Symbol not found: _gtk_drag_cancel (MyPa...
749451 Windows have no border
749593 Miscellaneous test fixes
749893 Crash when trying to drag a tab from a populated GtkNotebook in...
750058 bad options for the keybindings in css instructions generate a ...
750384 GtkDialog can not be moved when gtk_dialog_run from GtkListBox ...
750477 GtkFileChooserButton's label isn't xalign=0'ed
750505 Main grid overlaps GtkPopover
* Translation updates:
Czech
Occitan
Polish
Slovenian
Overview of changes in GTK+ 3.16.3
==================================
* Bug fixes:
737175 most horizontal sliders are inverted when scrolled with mouse...
746916 File chooser search does not work over remote network shares
746925 [HighContrast] Backdrop active (sensitive) GtkSwitch should l...
747634 gdk_set_program_class() breaks --class
747805 Split Headerbar unmaximize
747808 window: fix initial shadow width for maximized/fullscreen win...
748013 Adwaita: keyboard navigation outline on first/last button in ...
748014 W32: Tilting mousewheel left/right does not scroll horizontally
748061 GtkMessageDialog: Minor documentation update
748341 GdkOffscreenWindow should not segfault on gdk_window_beep()
748346 build: Avoid xgettext crash on MSYS2
748500 GtkSearchEntry docs incorrectly link to themselves
748615 GtkWindow: Get the correct shadow width even before window is...
748640 Documentation misses out example source files when not buildi...
748782 fontchooser should reload list of families/styles on theme ch...
748783 Remove PANGO_ENABLE_BACKEND from gtksettings.c
748992 GtkFontChooserWidget: Remove unused struct field
749009 notify test fails without a session bus
749012 GtkStack: Don't emit notify::visible-child during destruction
749021 GtkStackSwitcher: Don't emit notify::visible-child when setti...
* Translation updates:
Brazilian Portuguese
Czech
Danish
French
Icelandic
Occitan
Russian
Slovenian
Ukrainian
Overview of changes in GTK+ 3.16.2
==================================
* Bug fixes:
746706 Serious accessible event spewage from Gtk+ table cells
747288 [HighContrast] Insensitive backdrop ListBoxRow have an...
747471 [wayland] gdk_screen_get_monitor_geometry() returns in...
747539 popover: Remove signal handlers in dispose
747608 Scrollbar hiding / unhiding does not work with a stylus
747689 [HighContrast] Selected ListBoxRows Label is white on...
Avoid a crash in GtkApplication
Avoid a crash with GtkTreeview rubberbanding
GtkApplication: Prevent more crashes around shutdown
Prevent tab close button size changes
* Translation updates:
Icelandic
Swedish
Overview of changes in GTK+ 3.16.1
==================================
* Improve client-side decorations without a compositor
* Bug fixes:
132197 Horizontal Scrolling Using Modifier Key and Scroll Wheel
402168 Add underline-color and strikethrough-color to GtkTextTag properties
613833 Unnecessary queue_resize() for GtkImage
671362 Fixes for GtkRadioMenuItem
734741 GtkScale's fill-level starts at the very left if show-fill-level is set
737175 most horizontal sliders are inverted when scrolled with mouse wheel
746222 Improve CSD windows without a compositor
746253 has-tooltip property interferes with event-compression
746301 Opening "Sound" panel generates pixman error
746391 inspector: Make it easier to cut'n'paste advice message
746468 gtkcairoblur is slow
746586 critical warnings in a11y if focus widget is destroyed
746602 Invalid writes through dangling weak pointers in DND code cause crashes
746688 GtkProgressBar doesn't respect its style properties
746712 Range ignores the "inverted" property
746746 gtk3-demo 'OpenGL Area' crashes on systems with old OpenGL version
746784 GtkBooleanCellAccessible emits state-changed:checked signals instead...
746817 GtkRadioButton keynav uses wrong succession
746821 W32: Maximized window is obscured by the taskbar
746862 popover clears shadow of underlying widgets
746893 gtk_list_box_bind_model is not introspectable
746904 make it possible to disable libcanberra
746961 new scroll bar "hides" after click+drag+release while mouse is still...
747096 small cleanup in textbuffer clipoard handling
747133 overshoot animation is stopped on libinput-managed touchpads
747305 x11/gl: Use after free in glx_pixmap_get()
747406 Fix indicator proximity checks
747407 Make indicators pop out when needed
* GtkListBox
- There has been a minor API break on the return value of the
GtkListBoxCreateWidgetFunc callback. Previously, we would leak a
full reference returned by this callback and now we free it.
* Translation updates:
Basque
Catalan
Czech
Galician
Greek
Hebrew
Hungarian
Italian
Korean
Lithuanian
Polish
Russian
Slovak
Slovenian
Spanish
Tajik
Vietnamese
Overview of Changes in GTK+ 3.16.0
==================================
* Theming: Fixes for the HighContrast theme
* Wayland: Fix Clipboard handling
* Bug fixes:
746148 Overlay controls unusable in HighContrast
746149 “Close tab” buttons change the tab high on hover when using...
746188 insensitive ModelButtons are not drawn insensitive
746358 insensitive active backdrop GtkSwitches should probably loo...
746368 the “selected color” mark is always black, even for black
746369 “no date selection” (white on white)
746370 GtkExpander doesn't show it is expanded when using HighCont...
746386 clipboard crash when other client becomes the selection owner
* Translation updates:
Basque
Bosnian
Bulgarian
Chinese (Taiwan)
Hungarian
Indonesian
Japanese
Norwegian bokmål
Serbian
Swedish
Turkish
Overview of Changes in GTK+ 3.15.12
===================================
+3 -3
View File
@@ -76,8 +76,8 @@ Even better are git-formatted patches. (Use git format-patch)
Release notes for 3.16
======================
* GTK+ now includes an OpenGL rendering widget. To support GL on
various platforms, GTK+ uses libepoxy.
* GTK+ now includes an OpenGL rendering widget. To support GL on various
platforms, GTK+ uses libepoxy.
* GTK+ no longer uses gtk-update-icon-cache during its build. The
--enable-gtk2-dependency configure option has been removed.
@@ -99,7 +99,7 @@ Release notes for 3.16
has non-scrolling parts similar to treeview headers, there is no need
to implement this vfunc.
* The GtkSearchEntry widget has gained a number of new signals that
* The GtkSearchEntry widget has gained a number of new signal that
are emitted when certain key sequences are seen. In particular, it
now handles the Escape key and emits ::stop-search. Applications that
expect to handle Escape themselves will need to be updated.
+3 -16
View File
@@ -54,26 +54,13 @@ def gen_gtk_filelist(srcroot, subdir, dest):
'gtk_base_c_sources',
'gtk_clipboard_dnd_c_sources'])
vars_depr = read_vars_from_AM(os.path.join(srcroot, 'gtk', 'deprecated', 'Makefile.inc'),
vars = {},
conds = {},
filters = ['deprecated_h_sources',
'deprecated_c_sources'])
vars_a11y = read_vars_from_AM(os.path.join(srcroot, 'gtk', 'a11y', 'Makefile.inc'),
vars = {},
conds = {},
filters = ['a11y_h_sources',
'a11y_c_sources'])
vars['gtk_other_src'] = 'gtkprintoperation-win32.c gtktypebuiltins.h gtktypebuiltins.c'
files = vars['gtkinclude_HEADERS'].split() + \
vars_a11y['a11y_h_sources'].split() + \
vars_depr['deprecated_h_sources'].split() + \
vars['a11yinclude_HEADERS'].split() + \
vars['deprecatedinclude_HEADERS'].split() + \
vars['gtk_base_c_sources'].split() + \
vars_a11y['a11y_c_sources'].split() + \
vars_depr['deprecated_c_sources'].split() + \
vars['gtk_clipboard_dnd_c_sources'].split() + \
vars['gtk_other_src'].split()
sources = [i for i in files \
+1 -1
View File
@@ -292,7 +292,7 @@ copy ..\..\..\gtk\gtkseparatormenuitem.h $(CopyDir)\include\gtk-3.0\gtk\gtksepar
copy ..\..\..\gtk\gtkseparatortoolitem.h $(CopyDir)\include\gtk-3.0\gtk\gtkseparatortoolitem.h
copy ..\..\..\gtk\gtksettings.h $(CopyDir)\include\gtk-3.0\gtk\gtksettings.h
copy ..\..\..\gtk\gtkshow.h $(CopyDir)\include\gtk-3.0\gtk\gtkshow.h
copy ..\..\..\gtk\gtkstacksidebar.h $(CopyDir)\include\gtk-3.0\gtk\gtkstacksidebar.h
copy ..\..\..\gtk\gtksidebar.h $(CopyDir)\include\gtk-3.0\gtk\gtksidebar.h
copy ..\..\..\gtk\gtksizegroup.h $(CopyDir)\include\gtk-3.0\gtk\gtksizegroup.h
copy ..\..\..\gtk\gtksizerequest.h $(CopyDir)\include\gtk-3.0\gtk\gtksizerequest.h
copy ..\..\..\gtk\gtksocket.h $(CopyDir)\include\gtk-3.0\gtk\gtksocket.h
+1 -1
View File
@@ -288,7 +288,7 @@ copy ..\..\..\gtk\gtkseparatormenuitem.h $(CopyDir)\include\gtk-3.0\gtk\gtksepar
copy ..\..\..\gtk\gtkseparatortoolitem.h $(CopyDir)\include\gtk-3.0\gtk\gtkseparatortoolitem.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtksettings.h $(CopyDir)\include\gtk-3.0\gtk\gtksettings.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtkshow.h $(CopyDir)\include\gtk-3.0\gtk\gtkshow.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtkstacksidebar.h $(CopyDir)\include\gtk-3.0\gtk\gtkstacksidebar.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtksidebar.h $(CopyDir)\include\gtk-3.0\gtk\gtksidebar.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtksizegroup.h $(CopyDir)\include\gtk-3.0\gtk\gtksizegroup.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtksizerequest.h $(CopyDir)\include\gtk-3.0\gtk\gtksizerequest.h&#x0D;&#x0A;
copy ..\..\..\gtk\gtksocket.h $(CopyDir)\include\gtk-3.0\gtk\gtksocket.h&#x0D;&#x0A;
+10 -34
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], [16])
m4_define([gtk_micro_version], [7])
m4_define([gtk_interface_age], [7])
m4_define([gtk_minor_version], [15])
m4_define([gtk_micro_version], [12])
m4_define([gtk_interface_age], [0])
m4_define([gtk_binary_age],
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
m4_define([gtk_version],
@@ -348,7 +348,8 @@ backend_immodules=
have_gio_unix=no
GDK_BACKENDS=
GDK_EXTRA_LIBS=
GDK_EXTRA_CFLAGS=
# expoxy.pc has Cflags: -I${includedir}, but pkg-config swallows that :-(
GDK_EXTRA_CFLAGS="-I${prefix}/include"
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
@@ -473,7 +474,6 @@ if test "$enable_mir_backend" = "yes"; then
GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_MIR"
MIR_PACKAGES="$MIR_DEPENDENCIES"
have_gio_unix=yes
AM_CONDITIONAL(USE_MIR, true)
else
@@ -667,7 +667,7 @@ ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
AM_GLIB_GNU_GETTEXT
AC_MSG_CHECKING([whether xgettext supports ui files])
if $ac_cv_path_XGETTEXT --output=- --color=no --language=Glade $srcdir/gtk/ui/gtkfilechooserwidget.ui > /dev/null 2>&1; then
if $ac_cv_path_XGETTEXT --output=- --language=Glade $srcdir/gtk/ui/gtkfilechooserwidget.ui > /dev/null 2>&1; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
@@ -1660,34 +1660,11 @@ AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes")
# Check for libcanberra (only used in examples)
##################################################
AC_ARG_ENABLE(libcanberra,
[AS_HELP_STRING([--enable-libcanberra],
[enable libcanberra support in examples [default=auto]])],
[enable_libcanberra="$enableval"],
[enable_libcanberra=auto])
AC_MSG_CHECKING([whether to use libcanberra])
if test "$enable_libcanberra" != "no"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
have_libcanberra=no
if test "$enable_libcanberra" != "no"; then
PKG_CHECK_MODULES(LIBCANBERRA, libcanberra-gtk3,
have_libcanberra=yes, have_libcanberra=no)
if test "$enable_libcanberra" = "yes"; then
if test "$have_libcanberra" = "no"; then
AC_MSG_ERROR([--enable-libcanberra specified, but not available])
fi
fi
fi
PKG_CHECK_MODULES(LIBCANBERRA, libcanberra-gtk3,
have_libcanberra=yes, have_libcanberra=no)
if test "$have_libcanberra" = "yes"; then
AC_DEFINE(HAVE_LIBCANBERRA, 1, [define if we have libcanberra])
AC_DEFINE(HAVE_LIBCANBERRA, 1, [define if we have libcanberra])
fi
AM_CONDITIONAL(HAVE_LIBCANBERRA, test "x$have_libcanberra" = "xyes")
##################################################
# Checks for gtk-doc and docbook-tools
@@ -1726,7 +1703,7 @@ if test "$enable_man" != no; then
dnl check for DocBook XSL stylesheets in the local catalog
JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
[DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no])
if test "$have_docbook_style" != yes; then
if test "$have_docbook_dtd" != yes; then
if test "$enable_man" = yes ; then
AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man])
fi
@@ -1961,7 +1938,6 @@ echo " Print backends: $PRINT_BACKENDS"
echo " Dynamic modules: $build_dynamic_modules"
echo " Included immodules: $included_immodules"
echo " colord support: $have_colord"
echo " libcanberra support: $have_libcanberra"
echo " Introspection: $found_introspection"
echo " Debugging: $enable_debug"
echo " Documentation: $enable_gtk_doc"
+1 -1
View File
@@ -173,7 +173,7 @@ dist_appsicon32_DATA = data/32x32/gtk3-demo.png data/32x32/gtk3-demo-symbolic.sy
dist_appsicon48_DATA = data/48x48/gtk3-demo.png data/48x48/gtk3-demo-symbolic.symbolic.png
dist_appsicon256_DATA = data/256x256/gtk3-demo.png data/256x256/gtk3-demo-symbolic.symbolic.png
update_icon_cache = $(top_builddir)/gtk/gtk-update-icon-cache --ignore-theme-index --force
update_icon_cache = gtk-update-icon-cache --ignore-theme-index --force
install-data-hook: install-update-icon-cache
uninstall-hook: uninstall-update-icon-cache
+4 -1
View File
@@ -2,7 +2,7 @@
*
* Demonstrates migrating a window between different displays.
* A display is a mouse and keyboard with some number of
* associated monitors. The neat thing about having multiple
* associated monitors. The neat thing about having multiple
* displays is that they can be on a completely separate
* computers, as long as there is a network connection to the
* computer where the application is running.
@@ -26,6 +26,9 @@
* - Using GtkDialog
*/
#include <string.h>
#undef GDK_DISABLE_DEPRECATED
#include <glib/gi18n.h>
#include <gtk/gtk.h>
-9
View File
@@ -220,9 +220,6 @@ realize (GtkWidget *widget)
{
gtk_gl_area_make_current (GTK_GL_AREA (widget));
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
return;
init_buffers (&position_buffer, NULL);
init_shaders (&program, &mvp_location);
}
@@ -233,9 +230,6 @@ unrealize (GtkWidget *widget)
{
gtk_gl_area_make_current (GTK_GL_AREA (widget));
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
return;
glDeleteBuffers (1, &position_buffer);
glDeleteProgram (program);
}
@@ -277,9 +271,6 @@ static gboolean
render (GtkGLArea *area,
GdkGLContext *context)
{
if (gtk_gl_area_get_error (area) != NULL)
return FALSE;
/* Clear the viewport */
glClearColor (0.5, 0.5, 0.5, 1.0);
glClear (GL_COLOR_BUFFER_BIT);
+8 -23
View File
@@ -128,7 +128,7 @@ key_press_event (GtkWidget *text_view,
return FALSE;
}
/* Links can also be activated by clicking or tapping.
/* Links can also be activated by clicking.
*/
static gboolean
event_after (GtkWidget *text_view,
@@ -136,30 +136,15 @@ event_after (GtkWidget *text_view,
{
GtkTextIter start, end, iter;
GtkTextBuffer *buffer;
gdouble ex, ey;
GdkEventButton *event;
gint x, y;
if (ev->type == GDK_BUTTON_RELEASE)
{
GdkEventButton *event;
if (ev->type != GDK_BUTTON_RELEASE)
return FALSE;
event = (GdkEventButton *)ev;
if (event->button != GDK_BUTTON_PRIMARY)
return FALSE;
event = (GdkEventButton *)ev;
ex = event->x;
ey = event->y;
}
else if (ev->type == GDK_TOUCH_END)
{
GdkEventTouch *event;
event = (GdkEventTouch *)ev;
ex = event->x;
ey = event->y;
}
else
if (event->button != GDK_BUTTON_PRIMARY)
return FALSE;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
@@ -171,13 +156,13 @@ event_after (GtkWidget *text_view,
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
ex, ey, &x, &y);
event->x, event->y, &x, &y);
gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (text_view), &iter, x, y);
follow_if_link (text_view, &iter);
return TRUE;
return FALSE;
}
static gboolean hovering_over_link = FALSE;
+1 -3
View File
@@ -164,7 +164,6 @@ gtk_message_row_update (GtkMessageRow *row)
s = g_date_time_format (t, "%X - %e %b %Y");
gtk_label_set_text (priv->detailed_time_label, s);
g_free (s);
g_date_time_unref (t);
gtk_widget_set_visible (GTK_WIDGET(priv->n_favorites_label),
priv->message->n_favorites != 0);
@@ -296,7 +295,7 @@ gtk_message_row_new (GtkMessage *message)
static int
gtk_message_row_sort (GtkMessageRow *a, GtkMessageRow *b, gpointer data)
{
return b->priv->message->time - a->priv->message->time;
return a->priv->message->time - b->priv->message->time;
}
static void
@@ -359,7 +358,6 @@ do_listbox (GtkWidget *do_widget)
}
g_strfreev (lines);
g_bytes_unref (data);
}
if (!gtk_widget_get_visible (window))
+4 -103
View File
@@ -158,8 +158,9 @@ activate_run (GSimpleAction *action,
GtkTreeIter iter;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
if (gtk_tree_selection_get_selected (selection, &model, &iter))
run_example_for_row (window, model, &iter);
gtk_tree_selection_get_selected (selection, &model, &iter);
run_example_for_row (window, model, &iter);
}
/* Stupid syntax highlighting.
@@ -1026,101 +1027,6 @@ activate (GApplication *app)
g_object_unref (builder);
}
static gboolean
auto_quit (gpointer data)
{
g_application_quit (G_APPLICATION (data));
return G_SOURCE_REMOVE;
}
static void
list_demos (void)
{
Demo *d, *c;
d = gtk_demos;
while (d->title)
{
c = d->children;
if (d->name)
g_print ("%s\n", d->name);
d++;
while (c && c->title)
{
if (c->name)
g_print ("%s\n", c->name);
c++;
}
}
}
static void
command_line (GApplication *app,
GApplicationCommandLine *cmdline)
{
GVariantDict *options;
const gchar *name = NULL;
gboolean autoquit = FALSE;
gboolean list = FALSE;
Demo *d, *c;
GDoDemoFunc func = 0;
GtkWidget *window, *demo;
activate (app);
options = g_application_command_line_get_options_dict (cmdline);
g_variant_dict_lookup (options, "run", "&s", &name);
g_variant_dict_lookup (options, "autoquit", "b", &autoquit);
g_variant_dict_lookup (options, "list", "b", &list);
if (list)
{
list_demos ();
g_application_quit (app);
return;
}
if (name == NULL)
goto out;
window = gtk_application_get_windows (GTK_APPLICATION (app))->data;
d = gtk_demos;
while (d->title)
{
c = d->children;
if (g_strcmp0 (d->name, name) == 0)
{
func = d->func;
goto out;
}
d++;
while (c && c->title)
{
if (g_strcmp0 (c->name, name) == 0)
{
func = c->func;
goto out;
}
c++;
}
}
out:
if (func)
{
demo = (func) (window);
gtk_window_set_transient_for (GTK_WINDOW (demo), GTK_WINDOW (window));
gtk_window_set_modal (GTK_WINDOW (demo), TRUE);
}
if (autoquit)
g_timeout_add_seconds (1, auto_quit, app);
}
int
main (int argc, char **argv)
{
@@ -1140,19 +1046,14 @@ main (int argc, char **argv)
}
/* -- End of hack -- */
app = gtk_application_new ("org.gtk.Demo", G_APPLICATION_NON_UNIQUE|G_APPLICATION_HANDLES_COMMAND_LINE);
app = gtk_application_new ("org.gtk.Demo", G_APPLICATION_NON_UNIQUE);
g_action_map_add_action_entries (G_ACTION_MAP (app),
app_entries, G_N_ELEMENTS (app_entries),
app);
g_application_add_main_option (G_APPLICATION (app), "run", 0, 0, G_OPTION_ARG_STRING, "Run an example", "EXAMPLE");
g_application_add_main_option (G_APPLICATION (app), "list", 0, 0, G_OPTION_ARG_NONE, "List examples", NULL);
g_application_add_main_option (G_APPLICATION (app), "autoquit", 0, 0, G_OPTION_ARG_NONE, "Quit after a delay", NULL);
g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
g_signal_connect (app, "command-line", G_CALLBACK (command_line), NULL);
g_application_run (G_APPLICATION (app), argc, argv);
+8 -388
View File
@@ -1,388 +1,8 @@
1|GTK+ and friends|GTKtoolkit|@breizhodrome yeah, that's for the OpenGL support that has been added recently|1416751697|0||2|1
2|Emmanuele Bassi|ebassi|RT @ebassi: embloggeration happened: http://t.co/9ukkNuSzuc — help out supporting GL on windows and macos in GTK+ 3.16.|1416086824|0|GTKtoolkit|0|9
3|Matthew Waters|ystreet00|RT @ystreet00: .@GTKtoolkit + @gstreamer integration using the new #gtk #opengl support https://t.co/IeBpFjbjes http://t.co/WptPHCfFIb|1416086780|0|GTKtoolkit|0|13
4|Emmanuele Bassi|ebassi|RT @ebassi: embloggeration happened — OpenGL integration lands in GTK+ — http://t.co/sUGwcvZhRg|1413214719|0|GTKtoolkit|0|8
5|Allan Day|allanday|RT @allanday: New Human Interface Guidelines coming for @gnome and @GTKtoolkit . http://t.co/SMNndyo6rl|1408615736|0|GTKtoolkit|0|12
6|Christian Hergert|hergertme|RT @hergertme: being able to set opacity on an individual widget in gtk ... you've come a long way since 2.x days.|1408601183|0|GTKtoolkit|0|2
7|Richard Brown|sysrich|RT @sysrich: hmm, good thing Iike eating with chopsticks #GUADEC http://t.co/7aG9CYpdZg|1406543731|0|GTKtoolkit|0|82
8|Javier Jardón|jjardon|RT @jjardon: #GNOME 3.13.4 has just been released from Strasbourg, this year #GUADEC city. Enjoy! https://t.co/hgHDVOWvRC|1406303072|0|GTKtoolkit|0|6
9|GNOME|gnome|RT @gnome: This year's @guadec schedule has been published. Lots of great talks on there, as usual. https://t.co/rpGPxIRCuB|1405929795|0|GTKtoolkit|0|20
10|GTK+ and friends|GTKtoolkit|New features of GtkInspector : http://t.co/EOgcv1lh8D #gtk #gtk3|1402076874|0||2|3
11|The Valeyard|breizhodrome|RT @breizhodrome: @GTKtoolkit and his multipoint gesture, good thing for mobile applications :) #Gtk|1402076810|0|GTKtoolkit|0|1
12|GTK+ and friends|GTKtoolkit|@Gin_Cheng sorry about that, should be fixed now|1402076785|0||0|0
13|GTK+ and friends|GTKtoolkit|@teadriven sorry about that, should be fixed now|1402076751|0||0|0
14|Javier Jardón|jjardon|RT @jjardon: #GNOME 3.13.2 (developer version) released! Try it, brake it, file bugs! https://t.co/cyCLBCtqKo|1401318926|0|GTKtoolkit|0|2
15|GTK+ and friends|GTKtoolkit|Gtkparasite has been integrated in #GTK+: Introducing gtkinspector: http://t.co/dP3DzgPNM3 #gtk3|1400231807|0||8|11
16|GTK+ and friends|GTKtoolkit|GTK+ 3.12 released! Improvements in Wayland, Broadway, OSX ... New widgets: GtkFlowBox,GtkActionBar and GtkPopover: https://t.co/5hBIlfrxc3|1395842503|0||5|8
17|Javier Jardón|jjardon|RT @jjardon: Second beta of #GNOME 3.12 just released! https://t.co/8oTfZaatVr|1394147916|0|GTKtoolkit|0|3
18|Javier Jardón|jjardon|RT @jjardon: First beta of GNOME 3.12 (3.11.90) has just been released. Enjoy! https://t.co/d5wzYWXUnv #gnome|1393006697|0|GTKtoolkit|0|4
19|GTK+ and friends|GTKtoolkit|Some thoughts on portability by @desrt : http://t.co/zyFT6i4we3 #glib|1392903834|0||1|0
20|GTK+ and friends|GTKtoolkit|Popovers support merged in master: http://t.co/5JE0RLhEDo Thanks @garnacho for getting this done! #gtk3|1390500627|0||5|7
21|GTK+ and friends|GTKtoolkit|The continuous build environment now generates 64-bit #GTK+ Windows bundles! Read the announcement from @tarnyko : https://t.co/wXVOAzCYTt|1386169565|0||6|10
22|GTK+ and friends|GTKtoolkit|GTK+ 3 packages for Windows available! Thanks for the hard work of @tarnyko to make this possible!\nhttp://t.co/U9JgsGoBLm|1382633636|0||7|23
23|GTK+ and friends|GTKtoolkit|Status of support of high resolution displays in #GTK+ (and #GNOME ) http://t.co/SPQN2E6Qxo Thanks to Brion Vibber for the donation!|1372531560|0||2|3
24|Javier Jardón|jjardon|RT @jjardon: Firefox GTK+3 port ready for testing https://t.co/onpxJaTKO5 #gtk #gtk3|1371557291|0|GTKtoolkit|0|22
25|GTK+ and friends|GTKtoolkit|GTK+ 3.8.0 (STABLE) released: wayland, Multi-application Broadway, improved CSS support and more ... http://t.co/RlLmrNPyYs #gtk #gtk3|1364435230|0||0|5
26|Daniel Svensson|dsvensson|RT @dsvensson: Bringing an application up to the new features in GTK 3.x = tons of negative diffs, awesome work by @GTKtoolkit devs <3|1352906611|0|GTKtoolkit|0|3
27|GTK+ and friends|GTKtoolkit|GLib status update and a warning: http://t.co/quQP8dLf #glib|1352905826|0||1|1
28|GTK+ and friends|GTKtoolkit|GProperty status: http://t.co/Nk28V2Rh #glib|1352905797|0||1|1
29|GTK+ and friends|GTKtoolkit|GTK+ 3.6.2 (STABLE) available: http://t.co/ah87o7cC #gtk #gtk3|1352905768|0||1|2
30|GTK+ and friends|GTKtoolkit|GLib 2.34.2 (STABLE) available: http://t.co/yavkTJwr #glib|1352905722|0||2|1
31|GTK+ and friends|GTKtoolkit|GTK+ 3.6.0 (STABLE) released: http://t.co/3NDAT5K9 #gtk #gtk3|1350075620|0||0|4
32|GTK+ and friends|GTKtoolkit|GLib 2.34.0 (STABLE) released: http://t.co/eWRD7hNy #glib|1350075583|0||0|6
33|GTK+ and friends|GTKtoolkit|GLib 2.33.10 (UNSTABLE) released: http://t.co/3BCdOPDy #glib|1347299317|0||2|2
34|Javier Jardón|jjardon|RT @jjardon: GnomeGoals status update: https://t.co/q5j7mJ1c #gnome|1342143404|0|GTKtoolkit|0|1
35|Emmanuele Bassi|ebassi|RT @ebassi: Saturday, 28/07, 11:45 - I'll be talking about Rainbows and Unicorns @ GUADEC https://t.co/WOiF6QU6|1341984820|0|GTKtoolkit|0|2
36|Harvey|cd0|RT @cd0: According to the sourcecode zipball the browser in the samsung smart tvs (UNxxES8xxx) is webkit-gtk 20120109. Not bad. @GTKtoolkit|1341712733|0|GTKtoolkit|0|3
37|Claudio Saavedra|csaavedra|RT @csaavedra: Accelerated compositing in WebKitGTK+: http://t.co/yxl0BooF #webkit #gnome|1341712291|0|GTKtoolkit|0|2
38|GTK+ and friends|GTKtoolkit|GTK+ 3.5.6 (UNSTABLE) released, now featuring GtkSearchEntry and GtkMenuButton http://t.co/adHtm2OA #gtk #gtk3|1341689740|0||0|3
39|GTK+ and friends|GTKtoolkit|GTK+ 3.4.0 (STABLE) released: http://t.co/KPSfJQSg #gtk #gtk3|1332870781|0||0|17
40|Javier Jardón|jjardon|RT @jjardon: GTK+ 2.24.9 (STABLE) released: https://t.co/OgcL5jnR #gtk|1327437929|0|GTKtoolkit|0|2
41|GTK+ and friends|GTKtoolkit|Multitouch is near… by @garnacho http://t.co/68iK8m9S #gtk #gtk3|1327090575|0||1|7
42|GTK+ and friends|GTKtoolkit|@dylanmccall Follow this bug: https://t.co/9vCpBVSm|1326802580|0||0|0
43|GTK+ and friends|GTKtoolkit|@cd0 Nice. Please, report any issue next time ;)|1326802460|0||0|0
44|GTK+ and friends|GTKtoolkit|RFC: new features http://t.co/uiqYWx4O #gtk #gtk3|1326802266|0||1|2
45|GTK+ and friends|GTKtoolkit|@cd0 Did you file a bug?|1326776652|0||0|0
46|GTK+ and friends|GTKtoolkit|@dylanmccall You mean this? http://t.co/BXbocqE9|1326776459|0||0|0
47|GTK+ and friends|GTKtoolkit|@trufae https://t.co/xlq75hDL|1326776153|0||0|0
48|GTK+ and friends|GTKtoolkit|RFC: UI design: http://t.co/Lu8Gnnfg #gtk #gtk3|1326305191|0||2|2
49|GTK+ and friends|GTKtoolkit|#win32 users: GTK+ 2.24.8 bundles available here: http://t.co/WhuY2XoN It not needed to use 2.16 anymore #gtk|1323190462|0||1|4
50|GTK+ and friends|GTKtoolkit|RFC: Model-View-Controller http://t.co/Lmw4lW9V #gtk #gtk3|1321546108|0||1|1
51|GTK+ and friends|GTKtoolkit|RFC:boxes http://t.co/eZABFgTp #gtk #gtk3|1321546061|0||2|1
52|GTK+ and friends|GTKtoolkit|GTK+ 2.24.8 (stable) released: update of the win32 backend, it now works at least as well as the old 2.16.x http://t.co/6wrhs7hm #gtk|1321297367|0||0|2
53|GTK+ and friends|GTKtoolkit|GTK + #Clutter next step(s): http://t.co/UDIezbyW #gtk #gtk4|1318265984|0||3|4
54|GTK+ and friends|GTKtoolkit|Tutorial for #Python, #GStreamer and #GTK 3: http://t.co/hvfRx18E #gtk3|1317781925|0||5|0
55|GTK+ and friends|GTKtoolkit|@jonobacon nice, but pyGTK is deprecated, use pygobject instead|1317353873|0||1|0
56|GTK+ and friends|GTKtoolkit|GTK+ 3.2 (STABLE) released: http://t.co/EqHjTmol #gtk #gtk3|1317043650|0||0|11
57|GTK+ and friends|GTKtoolkit|New D-Bus features in GLib 2.30: http://t.co/rzHui2Q2 #gtk #glib|1316732697|0||3|4
58|Lanedo GmbH|LanedoTweets|RT @TimJanik: New #GTK+ building instructions for #Mac OS X now up in the #GNOME wiki: http://t.co/lLt2fb1B|1316646621|0|GTKtoolkit|0|3
59|GTK+ and friends|GTKtoolkit|GTK+ 3.1.90 (UNSTABLE) released: http://t.co/KRz34jp #gtk #gtk3|1315961535|0||0|3
60|Lanedo GmbH|LanedoTweets|RT @TimJanik: There's a Win32 security advisory for Gtk+, it's recommended to upgrade to latest Gtk+ (2.24.6) if you haven't yet: http:/ ...|1315914861|0|GTKtoolkit|0|5
61|GTK+ and friends|GTKtoolkit|GTK+ 4.0 and #Clutter 2.0: rainbows and unicorns: http://t.co/SKbl0vQ #gtk #gtk4|1314883483|0||2|14
62|GTK+ and friends|GTKtoolkit|Some #Glib plans for the next cycle: http://t.co/a6YybK0 #gtk|1314883427|0||0|3
63|Nat Friedman|natfriedman|RT @natfriedman: Any Gtk+ experts who want to make some consulting money fixing bugs in Gtk/Mac, email me: nat@xamarin.com.|1314355269|0|GTKtoolkit|0|28
64|Kristian Rietveld|krietvel|RT @krietvel: Blog post: 'Merged “treemodel-fix” branch into GTK+: call for testing, blog post series' http://t.co/yAUnneo #gtk|1314096198|0|GTKtoolkit|0|2
65|GTK+ and friends|GTKtoolkit|@ArcherSeven Help improving the patch here: http://t.co/r74hP79|1313493595|0||0|0
66|GTK+ and friends|GTKtoolkit|GTK+ 3.1.12 (UNSTABLE) released: http://t.co/3iPAlNq Try the new Font Dialog! #gtk #gtk3|1313493256|0||0|4
67|GTK+ and friends|GTKtoolkit|@cimi @DanielFore Patches always welcomed!|1313493010|0||0|0
68|GTK+ and friends|GTKtoolkit|a11y branch was merged into master: http://mail.gnome.org/archives/gtk-devel-list/2011-July/msg00004.html #gtk #gtk3|1309962425|0||0|2
69|GTK+ and friends|GTKtoolkit|Another update in the effort to improve #a11y in #gtk: http://mail.gnome.org/archives/gtk-devel-list/2011-June/msg00057.html #gtk3|1309606597|0||0|0
70|GTK+ and friends|GTKtoolkit|@cd0 What is wrong in that page? freetype already appears as a required dependency. Anyway patches always welcomed ;)|1307359139|0||0|0
71|GTK+ and friends|GTKtoolkit|Of course, everyone is welcomed to improve the #gtk website. git repo: http://ur1.ca/4bwbw bugzilla: http://ur1.ca/4bwc1|1307038767|0||0|1
72|GTK+ and friends|GTKtoolkit|Check out the new #gtk website!!: www.gtk.org|1307036644|0||0|4
73|GTK+ and friends|GTKtoolkit|@jikri Take a look to http://live.gnome.org/action/login/GTK+/Roadmap and http://developer.gnome.org/gtk3/stable/gtk-migrating-2-to-3.html|1306673774|0||0|0
74|GTK+ and friends|GTKtoolkit|Introducing Cossa, a GTK+ theme previewer for gedit, by @garnacho http://ur1.ca/4ate8 #gtk #gtk3|1306672611|0||1|5
75|GTK+ and friends|GTKtoolkit|#GProperty, new API for Property and Accessor declaration, by @ebassi : http://ur1.ca/47lgk #gtk #glib|1305717028|0||0|2
76|GTK+ and friends|GTKtoolkit|GLib 2.29.4 (UNSTABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-May/msg00012.html #gtk #glib|1304593138|0||0|2
77|GTK+ and friends|GTKtoolkit|RT @acruiz: Gtk+ FontSelection progress http://bit.ly/iikP2f #gtk #gtk3|1303089979|0||0|1
78|GTK+ and friends|GTKtoolkit|RT @krietvel: New blog post: CoreText backend now in Pango master http://bit.ly/dTE0a1 #gtk #pango #osx|1303089938|0||0|0
79|GTK+ and friends|GTKtoolkit|GTK+ 3.0.9 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00087.html #gtk #gtk3|1302883958|0||0|0
80|GTK+ and friends|GTKtoolkit|GLib 2.28.6 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00074.html #gtk #glib|1302780112|0||0|3
81|GTK+ and friends|GTKtoolkit|GTK+ 3.1.2 (UNSTABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00072.html #gtk #gtk3|1302737279|0||0|2
82|GTK+ and friends|GTKtoolkit|GLib 2.29.2 (UNSTABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00071.html #gtk #glib|1302702936|0||0|3
83|Kristian Høgsberg|hoegsberg|RT @hoegsberg: yay, merged the Wayland GTK+ backend to the master branch - no, it's still not compete.|1302621000|0|GTKtoolkit|0|9
84|GTK+ and friends|GTKtoolkit|Someone willing to help with the client side decorations branch? http://git.gnome.org/browse/gtk+/log/?h=client-side-decorations #gtk #gtk3|1302620918|0||1|1
85|GTK+ and friends|GTKtoolkit|#Wayland GTK+ backend merged in master: http://git.gnome.org/browse/gtk+/commit/?id=c7514e8f0d19a833257497caff413bb4dfae6eb4 #gtk #gtk3|1302620838|0||1|9
86|GTK+ and friends|GTKtoolkit|gtkmm 3.0.0 (STABLE) released: http://mail.gnome.org/archives/gtkmm-list/2011-April/msg00025.html #gtk #cpp|1302355894|0||0|3
87|GTK+ and friends|GTKtoolkit|RT @alex_igalia: WebKit2 MiniBrowser for the GTK+ port running! http://ur1.ca/3t3ov #gtk #webkit|1302261488|0||1|0
88|GTK+ and friends|GTKtoolkit|#GNOME3 is out, using all the power of #gtk3 , congrats everyone! #gtk #gnome|1302219444|0||0|2
89|GTK+ and friends|GTKtoolkit|HTML5 backend update, now with real toplevel windows!! http://blogs.gnome.org/alexl/2011/04/07/broadway-update-2/ #gtk #gtk3|1302218981|0||2|10
90|GTK+ and friends|GTKtoolkit|Glade 3.10 (STABLE) released: With support for GTK+3, pygobject and all the new stuff: http://ur1.ca/3s8wk #rad #gtk|1302032523|0||0|6
91|GTK+ and friends|GTKtoolkit|GTK+ 3.0.8 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00009.html #gtk #gtk3|1301878240|0||0|4
92|GTK+ and friends|GTKtoolkit|GTK+ latest performance improvements (with video): http://blogs.gnome.org/otte/2011/03/30/the-book-was-better/ #gtk #gtk3|1301594293|0||1|6
93|GTK+ and friends|GTKtoolkit|Benjamin Otte is improving GTK+ performance with some impressive results, check latest commits #gtk #gtk3|1301409776|0||1|2
94|Javier Jardón|jjardon|RT @jjardon: Also nice to see that a firefox GTK+3 port was started: https://bugzilla.mozilla.org/show_bug.cgi?id=627699 #gtk #gtk3 #fi ...|1301166992|0|GTKtoolkit|0|8
95|GTK+ and friends|GTKtoolkit|RT @krietvel: Oh yea, I still have to upstream the CoreText backend I wrote for Pango. Completely forgot about that. #gtk|1301149034|0||0|0
96|GTK+ and friends|GTKtoolkit|GTK+ 3.0.5 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-March/msg00099.html #gtk #gtk3|1300925808|0||0|1
97|GTK+ and friends|GTKtoolkit|Nice article of @cgwalters about analyzing memory use in #glib with #SystemTap: http://ur1.ca/3m0ak #gtk|1300672197|0||2|1
98|GTK+ and friends|GTKtoolkit|GLib 2.28.3 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-March/msg00065.html #gtk #glib|1300374677|0||0|2
99|GTK+ and friends|GTKtoolkit|GTK+ HTML backend merged: http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/ #gtk #gtk3|1300334447|0||3|4
100|GTK+ and friends|GTKtoolkit|GTK+ 3.0.3 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-March/msg00059.html #gtk #gtk3|1300151113|0||0|5
101|GTK+ and friends|GTKtoolkit|PyGObject (new gobject introspection-based bindings) 2.28.0 (STABLE) released: http://ur1.ca/3fcsp #python #gtk|1299620983|0||0|1
102|GTK+ and friends|GTKtoolkit|GTK+ team meeting now in #gtk-devel on irc.gimp.net #gtk|1299615099|0||0|1
103|GTK+ and friends|GTKtoolkit|REMINDER: GTK+ Team IRC Meeting - 2011-03-08 at 20:00 UTC: http://ur1.ca/3ezpn Agenda: http://ur1.ca/3ezpp #gtk|1299517986|0||0|0
104|GTK+ and friends|GTKtoolkit|GTK+ 3.0.2 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-March/msg00010.html #gtk|1299517909|0||1|3
105|GTK+ and friends|GTKtoolkit|PyGObject, the new Python introspection based bindings almost ready for the 2.28 stable release: http://ur1.ca/3dfaj #python #gtk|1299081554|0||0|5
106|GTK+ and friends|GTKtoolkit|GTK+ 3.0.1 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00088.html #gtk|1298379744|0||0|4
107|GTK+ and friends|GTKtoolkit|More features/ideas for gtk+ 3.2: pictures: https://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00038.html #gtk|1297815657|0||1|2
108|GTK+ and friends|GTKtoolkit|New features/ideas for gtk+ 3.2: Translucent TextViews : http://blogs.gnome.org/tvb/2011/02/14/translucent-textviews/ #gtk|1297707521|0||1|2
109|GTK+ and friends|GTKtoolkit|Blog post of our tireless maintainer, Matthias Clasen: http://blogs.fedoraproject.org/wp/mclasen/2011/02/10/gtk-3-is-here/ #gtk #gtk3|1297378021|0||0|5
110|GTK+ and friends|GTKtoolkit|Highlights: Cairo-based, XI2, new theming API, Flexible geometry management, Multiple backend support for GDK, easy application support ...|1297373117|0||0|3
111|GTK+ and friends|GTKtoolkit|GTK+ 3.0 released!! : http://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00020.html gtk!|1297372977|0||1|20
112|GTK+ and friends|GTKtoolkit|GLib 2.28.0 (stable) released: https://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00014.html #gtk #glib|1297196093|0||0|2
113|GTK+ and friends|GTKtoolkit|GTK+ 2.99.3 released: latest beta before GTK+3 http://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00004.html #gtk|1296609072|0||1|1
114|GTK+ and friends|GTKtoolkit|Glade 3.9.2 released: off screen, workspace new look, GtkComboBoxText, GtkFileFilter, GtkApplication and more! http://ur1.ca/335is #gtk #rad|1296608221|0||1|0
115|GTK+ and friends|GTKtoolkit|GTK+ 2.24 ( STABLE ) released: This will be the latest 2.x release. http://ur1.ca/32cft #gtk|1296438857|0||2|0
116|GTK+ and friends|GTKtoolkit|More progress on #Glade, the GTK+ #interface #designer: http://ur1.ca/2uzpa Note that Glade 3.8 -> #gtk2 and Glade 3.10-> #gtk3 #gtk|1295186227|0||0|2
117|GTK+ and friends|GTKtoolkit|RT @prcutler RT @fcrozat: First shot at GNOME3 evaluation usb stick : http://bit.ly/i1wM8X #gnome #gnome3 #gnome-shell #opensuse #gnome|1295186033|0||1|0
118|GTK+ and friends|GTKtoolkit|If you want to try the #wayland backend, checkout this branch: http://git.gnome.org/browse/gtk+/log/?h=gdk-backend-wayland #gtk|1294739562|0||1|5
119|GTK+ and friends|GTKtoolkit|GTK+ 2.99.1 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2011-January/msg00005.html #gtk|1294738413|0||0|0
120|GTK+ and friends|GTKtoolkit|GTK+ 2.99: It is now possible to include multiple GDK backends in a single library. Use --enable-{x11,win32,quartz}-backend #gtk|1294344201|0||0|0
121|GTK+ and friends|GTKtoolkit|GTK+ 2.99: The removal of GSEALEd struct members has been completed in this release #gtk|1294344070|0||0|1
122|GTK+ and friends|GTKtoolkit|GTK+ 2.99.0 (unstable) released http://mail.gnome.org/archives/gtk-devel-list/2011-January/msg00001.html #gtk|1294344044|0||0|2
123|GTK+ and friends|GTKtoolkit|GLib 2.27.90 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2011-January/msg00000.html #glib|1294343933|0||0|0
124|GTK+ and friends|GTKtoolkit|Glade 3.9.0 (unstalbe) released: snapshot leading up to Glade 3.10 that will depend on GTK+3 http://ur1.ca/2rir0 #gtk #rad|1294343894|0||0|1
125|GTK+ and friends|GTKtoolkit|Glade 3.7.3 (unstable) released: snapshot leading up to Glade 3.8 that\nwill depend on GTK+ 2.24 http://ur1.ca/2riqg #gtk|1294343835|0||0|0
126|GTK+ and friends|GTKtoolkit|RT @hoegsberg: Multi-backend support in GTK+: http://bit.ly/gDwugJ - switch between #Wayland and X11 by setting GDK_BACKEND #gtk|1294201849|0||0|0
127|GTK+ and friends|GTKtoolkit|RT @krietvel Blog post \"GDK 3.0 on Mac OS X\" http://bit.ly/ihr9kH or how GDK became awesome in GTK+ 3.0. #gtk #osx|1293728637|0||0|1
128|GTK+ and friends|GTKtoolkit|RT @krietvel Blog post \"Refactoring GtkTreeView using GtkCellArea\" http://bit.ly/g9aArE #gtk|1293728607|0||0|0
129|GTK+ and friends|GTKtoolkit|Also, the treeview-refactor branch has been merged too|1293036166|0||1|0
130|GTK+ and friends|GTKtoolkit|New in GTK+ 2.91.7: gdk-backend branch have been merged: the goal is allowing to build a single gdk library that contains multiple backends|1293036118|0||0|0
131|GTK+ and friends|GTKtoolkit|GTK+ 2.91.7 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00155.html #gtk|1293035980|0||1|2
132|GTK+ and friends|GTKtoolkit|GTK+ 2.23.3 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00156.html #gtk|1293035865|0||0|2
133|GTK+ and friends|GTKtoolkit|GLib 2.27.5 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00152.html #gtk #glib|1293035786|0||0|0
134|GTK+ and friends|GTKtoolkit|Glade 3.7.2 (unstable) released: http://lists.ximian.com/pipermail/glade-devel/2010-December/001853.html #gtk #RAD|1292589571|0||0|0
135|Andrea Cimitan|cimi|RT @cimi: reading migration docs, later Murrine will start to be ported over GtkStyleContext (so CSS fun :))|1291813590|0|GTKtoolkit|0|1
136|GTK+ and friends|GTKtoolkit|Work to building multiple backends on the same system started: http://ur1.ca/2ieid #gtk|1291614285|0||0|2
137|GTK+ and friends|GTKtoolkit|RT @garnacho : gtk-style-context landed in GTK+ master, if gnome3 looks temporarily uglier that was me :) #gtk #gnome|1291613819|0||0|0
138|Stormy|storming|RT @storming: Anyone know of any call centers that use GNOME? Potential funding for a11y work if we do ...|1291387291|0|GTKtoolkit|0|4
139|GTK+ and friends|GTKtoolkit|Final part of the Benjamin Otte GTK3 rendering\ncleanup has landed: http://ur1.ca/2hrc9 #gtk|1291375493|0||0|0
140|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.91.5 (unstable) released: http://mail.gnome.org/archives/gtkmm-list/2010-December/msg00000.html #gtk #bindings #cplusplus|1291212942|0||0|0
141|GTK+ and friends|GTKtoolkit|ANNOUNCE: glibmm 2.27.4 (unstable) released: http://ur1.ca/2h77z #glib #bindings #cplusplus|1291212883|0||0|0
142|GTK+ and friends|GTKtoolkit|GtkAppChooser landed in master: https://bugzilla.gnome.org/show_bug.cgi?id=582557#c10 #gtk|1291212784|0||0|0
143|GTK+ and friends|GTKtoolkit|larger changes in GTK+ soon: GtkStyleContext, rendering-cleanup, app-chooser branch, GtkRadioGroup branch, http://ur1.ca/2gs5u #gtk|1291211812|0||2|0
144|GTK+ and friends|GTKtoolkit|New widget: GtkSwitch http://blogs.fedoraproject.org/wp/mclasen/2010/11/29/onoff/ thanks to @ebassi and Matthias Clasen for the review #gtk|1291211711|0||2|1
145|GTK+ and friends|GTKtoolkit|GTK+ html backend (broadway branch) landed: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00103.html #gtk|1291211452|0||0|1
146|GTK+ and friends|GTKtoolkit|GTK+ 2.91.5 (unstalbe) released: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00109.html #gtk|1291211337|0||0|1
147|GTK+ and friends|GTKtoolkit|GLib 2.27.4 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00108.html #gtk #glib|1291211331|0||0|0
148|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.91.4 released: http://mail.gnome.org/archives/gtkmm-list/2010-November/msg00095.html #gtk #cplusplus #bindings|1290451737|0||0|0
149|GTK+ and friends|GTKtoolkit|Introducing GtkCellArea: height-for-width geometry management for GtkTreeViews http://ur1.ca/2e5pe #gtk|1290310899|0||1|2
150|Javier Jardón|jjardon|RT @jjardon: gtk+3 packages landed in #Debian experimental: http://packages.debian.org/experimental/libgtk3.0-0 #gtk|1290036413|0|GTKtoolkit|0|2
151|GTK+ and friends|GTKtoolkit|WIP Porting guide to migrate from GTK+2 to GTK+3: http://ur1.ca/1xbzs #gtk #xfce #lxde #gnome|1290036396|0||4|6
152|GTK+ and friends|GTKtoolkit|#GSettings is fast (really): http://blogs.gnome.org/desrt/2010/11/15/gsettings-is-fast/ #gtk #glib|1289853926|0||1|2
153|GTK+ and friends|GTKtoolkit|Help making Glade ready for GTK+ 3: http://blogs.gnome.org/johannes/2010/11/15/help-making-glade-ready-for-3-0/ #gtk|1289853600|0||1|0
154|GTK+ and friends|GTKtoolkit|Anyone up to fix it? RT @vwduder: I wish #gtk wouldn't actually show the window until all of the contents have been rendered to the drawable|1289434823|0||0|0
155|GTK+ and friends|GTKtoolkit|PyGObject 2.27.0 (unstable) released: http://mail.gnome.org/archives/python-hackers-list/2010-November/msg00013.html #python #bindings #gtk|1289431671|0||0|0
156|GTK+ and friends|GTKtoolkit|glibmm 2.27.3 (unstable) released: http://mail.gnome.org/archives/gtkmm-list/2010-November/msg00058.html #glib #cplusplus #bindings|1289387769|0||0|0
157|GTK+ and friends|GTKtoolkit|GLib 2.27.3 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00043.html #gtk #glib|1289322725|0||0|1
158|GTK+ and friends|GTKtoolkit|GTK+ 2.91.3 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00010.html #gtk|1288758787|0||0|1
159|GTK+ and friends|GTKtoolkit|GLib 2.27.2 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-November/msg00002.html #gtk #glib|1288758720|0||0|0
160|GTK+ and friends|GTKtoolkit|Gtk 3.0 motto: \"We are fixing it!\"|1288630204|0||1|4
161|GTK+ and friends|GTKtoolkit|Recent Openismus contributions to @GtkToolkit http://bit.ly/amuAdX Thank you guys!|1288343314|0||0|0
162|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.91.2 (unstable) released: http://mail.gnome.org/archives/gtkmm-list/2010-October/msg00058.html #gtk #cplusplus|1288098381|0||0|0
163|GTK+ and friends|GTKtoolkit|ANNOUNCE: glibmm (unstable) 2.27.1 released: http://mail.gnome.org/archives/gtkmm-list/2010-October/msg00059.html #gtk #cplusplus|1288098335|0||0|0
164|GTK+ and friends|GTKtoolkit|GTK+ 2.91.2 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-October/msg00230.html #gtk|1288058960|0||0|0
165|GTK+ and friends|GTKtoolkit|GLib 2.27.1 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-October/msg00222.html #gtk #glib|1288049934|0||0|1
166|GTK+ and friends|GTKtoolkit|@garnacho shows off 3.0 CSS awesomness as a result of his work at #gtkhackfest http://bit.ly/aV99F|1288015424|0||0|0
167|GTK+ and friends|GTKtoolkit|GtkGrid landed:new container similar to GtkTable without unnecessary restrictions.It does height-for-width geometry management. #gtkhackfest|1287759681|0||0|1
168|GTK+ and friends|GTKtoolkit|RT @bertogg: The GTK+ artillery: http://flic.kr/p/8M16nu http://flic.kr/p/8M16d7 #gtkhackfest #gtk|1287744902|0||0|0
169|GTK+ and friends|GTKtoolkit|GtkScrollable interface landed in master: http://git.gnome.org/browse/gtk+/commit/?id=55196a705f00564a44647bfc97981db0a783369a #gtk|1287744793|0||0|0
170|Kristian Rietveld|krietvel|RT @krietvel: Blogged on \"Optimizing legacy code\". Or \"Color space conversion is more expensive than you might think\". http://bit.ly/duA ...|1287711819|0|GTKtoolkit|0|1
171|GTK+ and friends|GTKtoolkit|Rounded corners in GtkEntry (thanks Boram Park!) http://ur1.ca/257f0 #gtk #gtkhackfest|1287711709|0||0|6
172|Berto Garcia|bertogg|RT @bertogg: Ryan and Benjamin discussing GtkStyle at the Hercules Tower #gtkhackfest http://twitgoo.com/1pw774|1287708209|0|GTKtoolkit|0|1
173|GTK+ and friends|GTKtoolkit|RT @bertogg Working late at night #gtkhackfest http://twitgoo.com/1pvw46 #gtk|1287602614|0||0|0
174|GTK+ and friends|GTKtoolkit|WIP docs of the new theme API : http://mail.gnome.org/archives/gtk-devel-list/2010-October/msg00134.html #gtkhackfest #gtk|1287564745|0||0|0
175|GTK+ and friends|GTKtoolkit|GtkApplication landed in master: http://ur1.ca/24fhe Feedback welcome #gtk #gtkhackfest|1287564609|0||0|0
176|Emmanuele Bassi|ebassi|RT @ebassi: lots of discussions at the #gtkhackfest - it's great to see the roadmap for 4.0 take shape|1287564383|0|GTKtoolkit|0|2
177|Berto Garcia|bertogg|RT @bertogg: Update from the GTK+ Hackfest 2010: http://blogs.igalia.com/berto/2010/10/19/gtk-hackfest-2010/ #gtkhackfest|1287564380|0|GTKtoolkit|0|3
178|Berto Garcia|bertogg|RT @bertogg: Photos from the #gtkhackfest in Coruña: http://www.flickr.com/photos/tags/gtkhackfest2010/ #igalia #gnome|1287564365|0|GTKtoolkit|0|2
179|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.91.1 released: http://mail.gnome.org/archives/gtkmm-list/2010-October/msg00033.html #gtk #cplusplus|1287478956|0||1|0
180|GTK+ and friends|GTKtoolkit|The #gtkhackfest started today. Thanks a lot to the event sponsors: #igalia, #lanedo, #codethink and the #GNOME foundation.|1287447826|0||0|2
181|GTK+ and friends|GTKtoolkit|#gtkhackfest started today at the #igalia offices in A Coruña http://live.gnome.org/Hackfests/GTK2010 #gnome #gtk|1287422775|0||0|0
182|GTK+ and friends|GTKtoolkit|libnotify, gtk API changes in 2.91.1: http://mail.gnome.org/archives/desktop-devel-list/2010-October/msg00193.html #gtk #gnome #xfce #lxde|1287324866|0||0|0
183|GTK+ and friends|GTKtoolkit|GTK+ 2.91.1 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-October/msg00127.html #gtk|1287324761|0||0|1
184|GTK+ and friends|GTKtoolkit|GTK+ 2.23.0 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-October/msg00128.html #gtk|1287324697|0||0|1
185|GTK+ and friends|GTKtoolkit|RT @bratschegnome: Backported gtk window resize grips to 2.x and posted to ppa:bratsche/gtk for any #ubuntu people who want to use/test it.|1287156390|0||0|1
186|GTK+ and friends|GTKtoolkit|Resize grip in all the GtkWindows now: http://blogs.fedoraproject.org/wp/mclasen/2010/10/09/getting-a-grip/ thanks to @bratschegnome #gtk|1286600672|0||0|1
187|GTK+ and friends|GTKtoolkit|@judsontwit You have some tips for porting here: http://live.gnome.org/PyGObject/IntrospectionPorting No many changes needed #python|1286298188|0||0|0
188|GTK+ and friends|GTKtoolkit|@UstunOzgur take a look here: http://live.gnome.org/PyGTK and here: http://live.gnome.org/PyGObject|1286297979|0||0|0
189|Kristian Rietveld|krietvel|RT @krietvel: Just pushed the last patch that finishes the transition of the OS X backend to the new rendering goodness. #gtk|1286297494|0|GTKtoolkit|0|1
190|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.91.0 (#C++ bindings) released: http://mail.gnome.org/archives/gtkmm-list/2010-October/msg00000.html #gtk|1286128646|0||0|1
191|GTK+ and friends|GTKtoolkit|GTK+ 2.91.0 (unstable) released: http://ur1.ca/1xbzr The rendering cleanup work has landed. Porting guide here: http://ur1.ca/1xbzs #gtk|1286073059|0||0|0
192|GTK+ and friends|GTKtoolkit|Anyone up to the challenge of writing a WebP gdkpixbuf loader?|1285950573|0||0|3
193|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: Clutter 1.4.0 - new stable release! grab it while it's hot, on www.clutter-project.org|1285731448|0|GTKtoolkit|0|10
194|GTK+ and friends|GTKtoolkit|We strongly recommend not using PyGTK for new projects and to port existing applications from #PyGTK to #PyGObject #python #gtk|1285721997|0||5|39
195|GTK+ and friends|GTKtoolkit|ANNOUNCE: PyGObject 2.26.0 released:http://mail.gnome.org/archives/python-hackers-list/2010-September/msg00019.html #gtk #python #bindings|1285721968|0||0|0
196|GTK+ and friends|GTKtoolkit|ANNOUNCE: GLib 2.26.0 (STABLE) released: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00284.html #glib #gtk|1285721379|0||0|0
197|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm 2.22.0 (STABLE) released: http://mail.gnome.org/archives/gtkmm-list/2010-September/msg00095.html #gtk #c++ #bindings|1285721312|0||0|0
198|GTK+ and friends|GTKtoolkit|PyGTK 2.22.0 released: http://ur1.ca/1sc2n Note that new and existing PyGtk applications are recommended to use PyGObject|1285596826|0||0|0
199|GTK+ and friends|GTKtoolkit|GTK+ 2.22.0 ( STABLE ) released: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00263.html #gtk|1285286958|0||2|5
200|GTK+ and friends|GTKtoolkit|Last call for the people interested in attending the #GTK+ hackfest in A Coruña: Please sign up at latest tomorrow! http://ur1.ca/1r2gt|1285255897|0||0|2
201|GTK+ and friends|GTKtoolkit|#GLib status update: GLib 2.25.17 and 2.27.0 released: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00232.html #gtk|1285245997|0||0|0
202|GTK+ and friends|GTKtoolkit|Thoughts about #GtkTreeView refactoring: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00260.html #gtk|1285245546|0||0|1
203|GTK+ and friends|GTKtoolkit|GTK+ 2.21.8 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00204.html #gtk|1284485086|0||0|0
204|GTK+ and friends|GTKtoolkit|New GObject API added: g_object_class_install_properties(), an efficient way to install properties: http://ur1.ca/1mh3s #gobject #glib #gtk|1284484816|0||0|0
205|GTK+ and friends|GTKtoolkit|legacy-free grid container proposed by @havocp: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00089.html #gtk|1283965732|0||0|1
206|GTK+ and friends|GTKtoolkit|Minutes of the #GTK team meeting - 2010-09-07: http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00115.html|1283965715|0||0|0
207|GTK+ and friends|GTKtoolkit|New work to get #DirectFB backend in a good state, thanks Lionel Landwerlin! #gtk http://ur1.ca/1k0hx|1283965546|0||0|0
208|GTK+ and friends|GTKtoolkit|GTK+ 2.21.7 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00291.html #gtk|1283198533|0||0|0
209|GTK+ and friends|GTKtoolkit|GObject Introspection status: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00254.html #gtk #glib|1282939837|0||1|2
210|GTK+ and friends|GTKtoolkit|GDateTime, the new time & date API just landed in Glib: https://bugzilla.gnome.org/show_bug.cgi?id=50076#c85 #gtk #glib|1282699797|0||0|1
211|GTK+ and friends|GTKtoolkit|CSS-like styling for #GTK+ thanks to Carlos Garnacho: http://blogs.gnome.org/carlosg/2010/08/23/css-like-styling-for-gtk/ #gtk|1282602303|0||0|3
212|GTK+ and friends|GTKtoolkit|RT @migueldeicaza: Gtk+ getting cascading stylesheets: http://blogs.gnome.org/carlosg/2010/08/23/css-like-styling-for-gtk/|1282594548|0||0|1
213|andreasn1|andreasn1|RT @andreasn1: ♺ @hbons: thanks to gtk+ maintainer mclasen we can now ditch icon-naming-utils :)|1282356193|0|GTKtoolkit|0|2
214|GTK+ and friends|GTKtoolkit|GTK+ schedule: glib 2.26 and #gtk+ 2.22 for #GNOME 2.32 (Sep'10). glib 2.28, gtk+ 2.24 and gtk+ 3.0 for Dec'10 http://ur1.ca/16o49|1282256544|0||0|0
215|GTK+ and friends|GTKtoolkit|@thomasvs I saw someone with an N900 in my lift yesterday, had the same thought|1282217985|0||0|0
216|Simón P.|spenap|RT @spenap: GObject Introspection has landed in Grilo! http://bit.ly/9f4DAa #mswl #igalia #pygobject #gobject-introspection|1282166595|0|GTKtoolkit|0|4
217|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ Team Meeting - 2010-08-17: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00155.html #gtk|1282094165|0||0|0
218|GTK+ and friends|GTKtoolkit|GTK+ 2.90.6 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00146.html #gtk|1282061092|0||0|0
219|Emmanuele Bassi|ebassi|RT @ebassi: http://bit.ly/9gabxR - @cluttertoolkit + gobject-introspection + pygobject. say goodbye to pyclutter!|1282043493|0|GTKtoolkit|0|3
220|GTK+ and friends|GTKtoolkit|GTK+ 2.21.6 (unstable) Relased: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00127.html #gtk|1282006494|0||0|0
221|Stormy|storming|RT @storming: Novell is looking for a GNOME developer to work on SUSE Linux. http://linkd.in/bEAUUj|1282001084|0|GTKtoolkit|0|19
222|Tommi Komulainen|tko|RT @tko: I want my libglib-gslist.so and libglib-glist.so .. and some popcorn. maybe just popcorn|1282000936|0|GTKtoolkit|0|1
223|GTK+ and friends|GTKtoolkit|GLib 2.25.14 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00123.html #gtk|1282000398|0||0|0
224|Emmanuele Bassi|ebassi|RT @ebassi: I'm pretty pleased with the API that landed in json-glib for 0.12|1281810990|0|GTKtoolkit|0|1
225|GTK+ and friends|GTKtoolkit|The @ebassi implementation to support common licenses in about dialog has been added to #GTK: http://ur1.ca/11u5a|1281436699|0||0|0
226|GTK+ and friends|GTKtoolkit|Web inspector support lands in #WebKitGtk+ check the screencast demo http://blog.kov.eti.br/?p=118|1281376660|0||1|0
227|GTK+ and friends|GTKtoolkit|#GTK+ #Python developers are recommended to use the\nGObject-Introspection features available in PyGObject. http://live.gnome.org/PyGObject|1281362391|0||0|0
228|GTK+ and friends|GTKtoolkit|PyGTK 2.21.0 (unstable) released: http://ur1.ca/11gse . 2.22 will be the last release in the PyGTK series.|1281362089|0||0|0
229|GTK+ and friends|GTKtoolkit|#GTK+ Hackfest, October 18-22, A Coruña, Spain. http://ur1.ca/11f6u . Add yourself if you are interested in attending http://ur1.ca/11f6v|1281350218|0||0|4
230|GTK+ and friends|GTKtoolkit|Benjamin Otte's proposal for GTK+ drawing API: gtk_widget_draw(): http://ur1.ca/11f5m #gtk|1281350013|0||2|0
231|GTK+ and friends|GTKtoolkit|Some drawing APIs have been deprecated in GTK+ 2.22. Start porting your drawing to Cairo! http://ur1.ca/11f4t|1281349855|0||0|0
232|GTK+ and friends|GTKtoolkit|GLib 2.24.2 (stable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00057.html #gtk|1281349547|0||0|0
233|GTK+ and friends|GTKtoolkit|glib (unstable) 2.25.13 released: http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00052.html #gtk|1281201884|0||0|0
234|GTK+ and friends|GTKtoolkit|glib 2.25.12 is here! http://mail.gnome.org/archives/gtk-devel-list/2010-July/msg00052.html There have been many API changes in GDBus.|1280601329|0||0|0
235|Chema Casanova|txenoo|RT @txenoo: Dispoñible a foto de grupo de #guadeces2010 http://www.flickr.com/photos/davizin/4822344878/ gracias a David Cabrero|1280002637|0|GTKtoolkit|0|2
236|Andrea Cimitan|cimi|RT @cimi: Gtk+ 3.0 theming engines... let's start the discussion :)|1279678340|0|GTKtoolkit|0|1
237|Alberto Ruiz|acruiz|RT @acruiz: Marker support in GtkScrollbar http://bit.ly/cKUTeW|1279580539|0|GTKtoolkit|0|2
238|GTK+ and friends|GTKtoolkit|RT @ebassi: today I moved #clutter-gtk to depend on #gtk3; tomorrow w I'll fix the double-events bug; on wednesday I'll rework the API|1279561116|0||0|0
239|Sandy Armstrong|sandyarmstrong|RT @sandyarmstrong: @awafaa gconf is obsolete, fool|1279301600|0|GTKtoolkit|0|1
240|Jonh Wendell|jwendell|RT @jwendell: #vinagre ported to GtkApplication :) !gtk|1279228583|0|GTKtoolkit|0|1
241|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: #clutter 1.3.8 is the first snapshot with cally, the accessibility library for clutter apps and toolkits|1278972910|0|GTKtoolkit|0|4
242|GTK+ and friends|GTKtoolkit|GTK+ 2.90.5 released: http://mail.gnome.org/archives/gtk-devel-list/2010-July/msg00021.html #gtk|1278952963|0||0|0
243|GTK+ and friends|GTKtoolkit|Glib 2.25.11 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-July/msg00019.html #gtk|1278952925|0||0|0
244|Johan Dahlin|johandahlin|RT @johandahlin: New blog post: Using LLVM to speed up function invocation in a dynamic language binding http://bit.ly/dA6IjH|1278620689|0|GTKtoolkit|0|4
245|GTK+ and friends|GTKtoolkit|GTK+ bindings for #Falcon announced: http://mail.gnome.org/archives/gtk-list/2010-June/msg00183.html #gtk|1278000421|0||0|0
246|GTK+ and friends|GTKtoolkit|#GSettings / #dconf is ready: http://mail.gnome.org/archives/desktop-devel-list/2010-June/msg00226.html . Please port your modules! #gtk|1277909398|0||0|1
247|GTK+ and friends|GTKtoolkit|More work in height-for-width layout system for GTK+ : http://blogs.gnome.org/tvb/2010/06/30/gtk-learns-height-for-width-episode-ii/ #gtk|1277909313|0||0|0
248|GTK+ and friends|GTKtoolkit|GLib 2.25.10 (unstable) released: http://ur1.ca/0ee7o WARNING: There have been API changes in GDBus. #gtk|1277685452|0||0|1
249|GTK+ and friends|GTKtoolkit|gdk-pixbuf is now a standalone package: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00172.html #gtk|1277685365|0||0|1
250|GTK+ and friends|GTKtoolkit|GTK+ 2.90.4 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00182.html #gtk|1277685274|0||0|0
251|GTK+ and friends|GTKtoolkit|GTK+ 2.21.3 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00183.html #gtk|1277685237|0||0|0
252|GTK+ and friends|GTKtoolkit|We are open to fix API that make the life of #bindings harder but only by addition+rename, or addition+deprecation. File bugs, please #gtk|1277312749|0||0|0
253|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ team IRC meeting - 2010-06-22: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00155.html #gtk|1277312445|0||0|0
254|GTK+ and friends|GTKtoolkit|GTK+ team IRC meeting 2010-06-22. In #gtk-devel on irc.gnome.org at 20:00 UTC. Agenda: http://ur1.ca/q6jh #gtk|1277226823|0||0|0
255|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: the new #clutter website is now live: http://www.clutter-project.org|1276948072|0|GTKtoolkit|0|5
256|GTK+ and friends|GTKtoolkit|Proposed #GNOME goal: Port your #PyGTK to the new #PyGI bindings http://bit.ly/cvfzO8|1276941335|0||1|2
257|Christian Hergert|hergertme|RT @vwduder: im sad because @ebassi doesn't like my in/out param comments :-)|1276904611|0|GTKtoolkit|0|1
258|Guillaume Mazoyer|gmazoyer|RT @gmazoyer: ♺ @GTKtoolkit: #java bindings version 4.0.16 released: http://article.gmane.org/gmane.comp.gnome.bindings.java/1796 #gtk|1276889421|0|GTKtoolkit|0|1
259|GTK+ and friends|GTKtoolkit|#java bindings version 4.0.16 released: http://article.gmane.org/gmane.comp.gnome.bindings.java/1796 #gtk|1276885917|0||0|0
260|GTK+ and friends|GTKtoolkit|RT @cwiiis: MxIconTheme and MxIcon respect system's icon theme (and changes) now in #mx master :) Made possible by @thosw's XSettings work|1276883019|0||0|0
261|GTK+ and friends|GTKtoolkit|#javascript mailing list just created. Discuss its usage in GObject libraries: GTK+, Glib ... http://ur1.ca/08lwz by @jwendell #gtk|1276842639|0||0|0
262|GTK+ and friends|GTKtoolkit|Note fot Win32 users: XP theming is back in 2.90.3 . Please test. #gtk|1276829697|0||0|0
263|GTK+ and friends|GTKtoolkit|GTK+ 2.90.3 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00137.html #gtk|1276829633|0||0|0
264|GTK+ and friends|GTKtoolkit|GLib 2.25.9 (unstable) released: http://ur1.ca/08hrl WARNING: API changes in GDBus, GSettings and GApplication #gtk|1276829581|0||0|0
265|scaroo|scaroo|RT @scaroo: #SeedKit does RGBA window with css shadows and stuff : http://dl.dropbox.com/u/5746554/seedkit-does-rgba.png|1276734086|0|GTKtoolkit|0|1
266|scaroo|scaroo|RT @scaroo: Great #SeedKit showcase from @cldx3000 : http://bit.ly/cRDosJ :D|1276734071|0|GTKtoolkit|0|1
267|Lluis Sanchez Gual|slluis|RT @slluis: MonoDevelop 2.4 released! http://monodevelop.com/Download/MonoDevelop_2.4_Released|1276699438|0|GTKtoolkit|0|35
268|GTK+ and friends|GTKtoolkit|RT @bertogg: GNOME Developer Training at GUADEC, with Claudio Saavedra, Fernando Herrera, Dave Neary and me: http://is.gd/cPkpJ|1276687240|0||0|0
269|SparkleShare|SparkleShare|RT @sparkleshare: Let's start sparkling!|1276619215|0|GTKtoolkit|0|7
270|Haakon Sporsheim|haaspors|RT @haakonsporsheim: I built my first app for #android today using jni and #glib :P Sweet :)|1276472258|0|GTKtoolkit|0|4
271|GTK+ and friends|GTKtoolkit|Converting libraries and plugins to use GTK+3: http://mail.gnome.org/archives/desktop-devel-list/2010-June/msg00142.html #gtk|1276390360|0||1|0
272|GTK+ and friends|GTKtoolkit|Call to GNOME maintainers: #GNOME 2.31.4 to ship GTK+ 2.90: http://bit.ly/bnuk3e #gtk|1276390311|0||0|0
273|GTK+ and friends|GTKtoolkit|API changes in GLib master: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00079.html #gtk|1276390197|0||1|0
274|GTK+ and friends|GTKtoolkit|GLib 2.25.8 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00036.html #gtk|1276390151|0||0|0
275|Johan Dahlin|johandahlin|RT @johandahlin: is adding introspection support for GstMiniObject and other weird instantitiable GTypes. Still left: gjs/pygi support.|1276384704|0|GTKtoolkit|0|3
276|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: So, yes: we dropped the copyright waiver on Clutter and Cogl. Contributions welcome!|1276281694|0|GTKtoolkit|0|12
277|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtkmm (C++ GTK+ bindings) 2.90 (unstable) released: http://ur1.ca/06nhn #gtk|1276182909|0||0|0
278|Juanje Ojeda |juanjeojeda|RT @juanjeojeda: Progress on Gtk+ multitouch support: http://bit.ly/amIUiL #gtk #multitouch /via @garnacho|1276158728|0|GTKtoolkit|0|2
279|GTK+ and friends|GTKtoolkit|GTK+ 2.90.2 (unstable) released: http://ur1.ca/06k6o Feedback about GtkApplication apreciated #gtk|1276141907|0||0|0
280|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ team IRC meeting - 2010-06-08: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00044.html #gtk|1276040191|0||0|0
281|GTK+ and friends|GTKtoolkit|RT @bratschegnome: @federicomena http://mzl.la/9PoFhD is nice I used to have CSD whr you can drag gtk+ from anywr in a window|1276038852|0||0|0
282|GTK+ and friends|GTKtoolkit|GTK+ team IRC meeting 2010-06-08.In #gtk-devel on irc.gnome.org at 20:00 UTC.Agenda: http://ur1.ca/q6jh Everyone is invited to attend|1276010278|0||0|0
283|GTK+ and friends|GTKtoolkit|ANNOUNCE: glibmm (C++ Glib bindings) 2.25.1 (unstable) released: http://ur1.ca/067ff #gtk|1276007921|0||0|0
284|GTK+ and friends|GTKtoolkit|GLib 2.25.8 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-June/msg00036.html #gtk|1276003038|0||0|1
285|GTK+ and friends|GTKtoolkit|New version of #pygi (the new #python bindings based in #GObjectIntrospection) released: http://ur1.ca/0623c|1275945620|0||0|3
286|GTK+ and friends|GTKtoolkit|RT @ebassi: aaaand GBinding (a libexo-like binding between object properties) is mostly done: http://ur1.ca/05fz1 #gtk #glib|1275653238|0||1|0
287|GTK+ and friends|GTKtoolkit|RT @ebassi: plus, I have a GIO branch with GController and friends|1275653044|0||0|0
288|GTK+ and friends|GTKtoolkit|RT @ebassi submitted my patch for creating a GObjectController and get bulk notification #gtk|1275653008|0||0|0
289|GTK+ and friends|GTKtoolkit|GTK+ 2.21.1 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00157.html #gtk|1275271768|0||0|0
290|GTK+ and friends|GTKtoolkit|#dtrace and #systemtap support added to #Glib. Enjoy! https://bugzilla.gnome.org/show_bug.cgi?id=606044 #gtk|1275056183|0||0|2
291|GTK+ and friends|GTKtoolkit|GTK+ 2.90.1 (unstable) released: http://ur1.ca/03hbv . Multiple input device support, flippable widgets and more ...|1274845319|0||1|0
292|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ team IRC meeting - 2010-05-25: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00147.html #gtk #meeting|1274826674|0||0|0
293|GTK+ and friends|GTKtoolkit|[REMINDER] GTK+ team IRC meeting 2010-05-25 at 20:00 UTC. Join us in #gtk-devel on irc.gnome.org. Agenda: http://ur1.ca/q6jh #gtk #meeting|1274801128|0||0|1
294|GTK+ and friends|GTKtoolkit|Gtk2Hs 0.11.0 (Haskell bindings) released: http://haskell.org/gtk2hs/archives/2010/05/25/gtk2hs-0110-released/ #gtk #haskell|1274800929|0||0|0
295|GTK+ and friends|GTKtoolkit|dconf 0.3.1 released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00145.html #gtk|1274800819|0||0|0
296|GTK+ and friends|GTKtoolkit|GLib 2.25.7 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00144.html #gtk|1274800611|0||0|0
297|GTK+ and friends|GTKtoolkit|XI2 @garnacho 's branch ready for review (xi2-for-master): http://mail.gnome.org/archives/gtk-devel-list/2010-May/thread.html #gtk|1274472793|0||0|0
298|GTK+ and friends|GTKtoolkit|ANNOUNCE: gtk-doc 1.15 released: http://mail.gnome.org/archives/gtk-doc-list/2010-May/msg00000.html #gtk|1274446357|0||0|0
299|GTK+ and friends|GTKtoolkit|Ryan Lortie (@desrt) just released #dconf 0.3: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00128.html #gtk|1274311034|0||0|0
300|GTK+ and friends|GTKtoolkit|GLib 2.25.6 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00127.html #gtk|1274310863|0||0|0
301|GTK+ and friends|GTKtoolkit|GLib 2.25.6 (unstable) released:|1274310818|0||0|0
302|GTK+ and friends|GTKtoolkit|GLib 2.25.5 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00078.html #gtk|1273891783|0||0|0
303|GTK+ and friends|GTKtoolkit|Glade 3.7.1 released with lot of improvements: http://ur1.ca/011bc Thanks to #Openismus who helped sponsor this release #gtk|1273885948|0||0|0
304|GTK+ and friends|GTKtoolkit|GDBus merged in Glib master http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00066.html #gtk|1273837079|0||0|1
305|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ team IRC meeting - 2010-05-11 : http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00047.html #gtk|1273636581|0||0|0
306|GTK+ and friends|GTKtoolkit|[REMINDER] GTK+ team IRC meeting - 2010-05-11 at 20:00 UTC. Join us in #gtk-devel on irc.gnome.org. Agenda: http://ur1.ca/q6jh #gtk #meeting|1273606386|0||0|0
307|GTK+ and friends|GTKtoolkit|GTK+ 2.90.0 (unstable) released. This is the first development release leading toward 3.0. http://ur1.ca/006p2 #gtk #gtk3|1273553873|0||0|5
308|GTK+ and friends|GTKtoolkit|Changes in GTK+ master that affect third parties: http://mail.gnome.org/archives/devel-announce-list/2010-May/msg00001.html #gtk #gtk3|1273531549|0||0|0
309|GTK+ and friends|GTKtoolkit|Have dark themes is more easy now thanks to Bastian Nocera work: http://bit.ly/dBJzgn #gtk|1273531264|0||0|2
310|GTK+ and friends|GTKtoolkit|GTK+ 2.21.0 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00026.html #gtk|1273285878|0||0|0
311|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ IRC team meeting - 2010-05-04: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00010.html #gtk|1273024620|0||0|0
312|GTK+ and friends|GTKtoolkit|GTK+ 2.20.1 (stable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00004.html #gtk|1272983158|0||0|0
313|GTK+ and friends|GTKtoolkit|GLib 2.24.1 (stable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-May/msg00005.html #gtk|1272983138|0||0|0
314|GTK+ and friends|GTKtoolkit|Next GTK+ team meeting: 2010-05-04 at 20:00 UTC. More info and agenda: http://ur1.ca/q6jh . As always, everyone is invited to attend. #gtk|1272848781|0||1|0
315|GTK+ and friends|GTKtoolkit|#Perl bindings: Gtk2 1.230 (unstable) available: http://mail.gnome.org/archives/gtk-perl-list/2010-April/msg00120.html #gtk|1272341271|0||0|0
316|Emmanuele Bassi|ebassi|RT @ebassi: for the first time in ages I was able to work a bit on #gtkperl and add missing 2.16 and 2.18 wrappers|1272139155|0|GTKtoolkit|0|1
317|GTK+ and friends|GTKtoolkit|GLib 2.25.3 (unstable) released with more #GSettings fixes: http://mail.gnome.org/archives/gtk-devel-list/2010-April/msg00090.html #gtk|1272118354|0||0|1
318|GTK+ and friends|GTKtoolkit|GLib 2.25.2 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-April/msg00079.html|1272028911|0||0|0
319|GTK+ and friends|GTKtoolkit|GTK+ Learns height-for-width geometry. Thanks Tristan Van Berkom and #Openismus for sponsoring him! http://ur1.ca/wiz3 #gtk|1271969484|0||1|2
320|GTK+ and friends|GTKtoolkit|#GSettings porting guide available: http://ur1.ca/w2xl . Feedback welcomed!: http://ur1.ca/w2xn #gtk|1271777672|0||4|4
321|GTK+ and friends|GTKtoolkit|Major change in Glib 2.25.0: #GSettings framework has been merged. This provides the API to replace #GConf.|1271715090|0||0|0
322|GTK+ and friends|GTKtoolkit|GLib 2.25.0 (unstable) released: http://mail.gnome.org/archives/gtk-devel-list/2010-April/msg00066.html #gtk|1271714608|0||0|1
323|GTK+ and friends|GTKtoolkit|GSettings status update by Matthias Clasen: http://blogs.fedoraproject.org/wp/mclasen/2010/04/17/gsettings/ #gtk #gsettingshackfest|1271519572|0||0|0
324|GTK+ and friends|GTKtoolkit|GNOME Python Hackfest: Day 1 (by John (J5) Palmieri): http://www.j5live.com/2010/04/14/gnome-python-hackfest-day-1/ #python #pythonhackfest|1271291950|0||0|1
325|GTK+ and friends|GTKtoolkit|Colin Walters: PyGTK, PyGI and PyGTK-on-PyGI #python #pythonhackfest http://ur1.ca/v5kw|1271291792|0||0|0
326|GTK+ and friends|GTKtoolkit|Python Hackfest started.Ttwo concrete goals: porting PyGObject to #Python 3.x and giving a push to PyGI. http://ur1.ca/v5jc|1271291075|0||0|0
327|GTK+ and friends|GTKtoolkit|GSettings Hackfest: Day 1 (by Vincent UNTZ) http://www.vuntz.net/journal/post/2010/04/13/GSettings-Hackfest:-Day-1 #gtk|1271290824|0||0|0
328|GTK+ and friends|GTKtoolkit|GSettings Hackfest started. Thanks to #Novell for sponsoring.Also to #RedHat, #Codethink and #Lanedo for sending people! http://ur1.ca/v5i4|1271290481|0||1|0
329|GTK+ and friends|GTKtoolkit|Xan Lopez from #Igalia attends the WebKit Contribution Meeting at the Apple HQ in Cupertino http://bit.ly/bHCqcC|1271247431|0||0|2
330|GTK+ and friends|GTKtoolkit|Kristian Rietveld advances the #GTK+ Quartz/Mac OS X backend http://bit.ly/cJzV2o|1271247006|0||2|0
331|GTK+ and friends|GTKtoolkit|#Openismus sponsors Tristan Van Berkom to complete the work on #GTK+ Natural Layout http://bit.ly/9FD3JC|1271246851|0||0|1
332|GTK+ and friends|GTKtoolkit|RT @bilboed Having trouble reading GObject or GStreamer code ? Here's a small step-by-step rundown : http://is.gd/bk7mD|1270738689|0||0|1
333|GTK+ and friends|GTKtoolkit|Colin Walters shares his thoughts about the new #GTK+ application class and its relationship with #GNOME 3 http://bit.ly/cvcHIG|1270482931|0||0|0
334|Lucas Rocha|lucasratmundo|RT @lucasratmundo: GNOME Shell has been officially proposed as a GNOME module: http://bit.ly/d1yKE2|1269993362|0|GTKtoolkit|0|3
335|Johan Dahlin|johandahlin|RT @johandahlin: New blog post http://blogs.gnome.org/johan/2010/03/30/bridging-the-development-gap-between-desktop-and-web/|1269993352|0|GTKtoolkit|0|1
336|GTK+ and friends|GTKtoolkit|New Glib STABLE release: 2.24 http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00149.html #gtk|1269892314|0||0|0
337|GTK+ and friends|GTKtoolkit|Help the GNOME Foundation to hire a sysadmin for GNOME! http://www.gnome.org/friends|1269658993|0||0|1
338|GTK+ and friends|GTKtoolkit|Our friends from #Openismus sponsor #Glade 3 improvements http://bit.ly/9GqLDl|1269656334|0||0|0
339|GTK+ and friends|GTKtoolkit|♺ @johandahlin: just commited the last remaining piece for cairo support in #gjs. World domination here we come|1269646821|0||0|0
340|FedericoMenaQuintero|federicomena|RT @federicomena: Yay, the patch for glade is done - https://bugzilla.gnome.org/show_bug.cgi?id=594231|1269616128|0|GTKtoolkit|0|1
341|Jorge Castro|castrojo|RT @castrojo: Become a Friend of GNOME: http://wp.me/poAPi-da|1269616083|0|GTKtoolkit|0|2
342|Johan Dahlin|johandahlin|RT @johandahlin: just commited the last remaining piece for cairo support in #gjs. World domination here we come|1269616001|0|GTKtoolkit|0|2
343|Jono Bacon|jonobacon|RT @jonobacon: New Acire and Python Snippets website! http://is.gd/aZGnF - still a work in progress, working on it as we speak! #pythons ...|1269615964|0|GTKtoolkit|0|5
344|GTK+ and friends|GTKtoolkit|Python Snippets: project to gather an archive of simple Python (with GTK+) examples http://ur1.ca/rru1 !gtk @jonobacon|1269555086|0||0|2
345|GTK+ and friends|GTKtoolkit|#yorbafoundation is hiring #Vala/#Gtk+ developers and summer interns in California to create multimedia apps http://yorba.org/jobs|1269479714|0||0|1
346|GTK+ and friends|GTKtoolkit|♺ @ploum: now that I have to use Qt and Qt documentation, I've only one word : #gtk rocks ! ( yeah for #gnome people)|1269441827|0||0|2
347|GTK+ and friends|GTKtoolkit|Minutes of the GTK+ Team Meeting: http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00134.html #gtk|1269391167|0||0|0
348|GTK+ and friends|GTKtoolkit|New GTK+ STABLE release: 2.20 http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00132.html #gtk|1269374138|0||1|1
349|GTK+ and friends|GTKtoolkit|Reminder: GTK+ meeting today at 20:00 UTC. Where: #gtk-devel on irc.gnome.orgAgenda: http://live.gnome.org/GTK+/Meetings|1269358583|0||0|0
350|GTK+ and friends|GTKtoolkit|GLib 2.23.6 (development branch) released: http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00131.html #gtk|1269264623|0||0|0
351|GNOME|gnome|RT @gnome: RT @rubenv GNOME was accepted for Google Summer of Code 2010! Looking for an IT student job that earns a lot? http://bit.ly/c ...|1269106193|0|GTKtoolkit|0|5
352|FedericoMenaQuintero|federicomena|RT @federicomena: Untested code is broken code, even if it compiles. #yay #me|1269106077|0|GTKtoolkit|0|1
353|Summer of Code|gsoc|RT @gsoc: Mentor organizations for #GSoC have been announced! http://bit.ly/bVMPWe|1268956782|0|GTKtoolkit|0|31
354|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: just released clutter-gtk 0.10.4 - depending on clutter 1.2 and gtk+ 2.19|1268956726|0|GTKtoolkit|0|1
355|GTK+ and friends|GTKtoolkit|Support for Class private data will be available in Glib 2.24: https://bugzilla.gnome.org/show_bug.cgi?id=521707|1268848373|0||0|2
356|GTK+ and friends|GTKtoolkit|GTK+ team IRC meeting: March 23, at 20:00. http://ur1.ca/q6jg . Agenda: http://ur1.ca/q6jh #gtk|1268845861|0||0|1
357|GTK+ and friends|GTKtoolkit|GTK+ 2.18.9 (stable branch) released: http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00115.html #gtk|1268844918|0||0|0
358|GTK+ and friends|GTKtoolkit|GLib 2.22.5 released: http://mail.gnome.org/archives/gtk-devel-list/2010-March/thread.html #gtk|1268748183|0||0|0
359|GTK+ and friends|GTKtoolkit|GTK+ 2.18.8 released: http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00078.html #gtk|1268700945|0||0|0
360|GTK+ and friends|GTKtoolkit|@chrisblizzard There's a .zip bundle indeed http://bit.ly/9ZkQCM|1268698714|0||0|0
361|Alberto Ruiz|acruiz|RT @acruiz: libmodel and GTK+ from Codethink Labs! http://aruiz.synaptia.net/siliconisland/2010/03/libmodel-and-gtk-from-codethink-labs.html|1268698629|0|GTKtoolkit|0|3
362|GTK+ and friends|GTKtoolkit|New version of the User Interface Designer #Glade released: 3.7.0 http://ur1.ca/phww #gtk|1268458482|0||0|0
363|GTK+ and friends|GTKtoolkit|GTK+ 2.19.7 released: http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00044.html #gtk|1268174602|0||0|0
364|GTK+ and friends|GTKtoolkit|#GTK + future idea: automatic composite widgets using #GtkBuilder under the hood http://ur1.ca/oxly|1268157762|0||0|0
365|GTK+ and friends|GTKtoolkit|GLib 2.23.5 is released, congrats to @desrt for his first release http://bit.ly/a3th6S|1268070995|0||0|1
366|GTK+ and friends|GTKtoolkit|The first #PyGTK hackfest ever has been announced, 3.0 and Introspection are the major themes http://bit.ly/9Bd31g|1267875279|0||1|1
367|GTK+ and friends|GTKtoolkit|Kristian Rietveld gives an update of the GTK+/Quartz MacOSX native port http://bit.ly/cZ84VN|1267832356|0||2|0
368|Jono Bacon|jonobacon|RT @jonobacon: Merged in more python-snippets: desktop widget, drag and open in PyGTK, GStreamer video playback, and a bunch of fixes! h ...|1267831925|0|GTKtoolkit|0|3
369|GTK+ and friends|GTKtoolkit|#Openismus is looking for C/C++ GTK+/Qt trainees http://bit.ly/c16WEp|1267831840|0||0|0
370|Clutter Toolkit|cluttertoolkit|RT @cluttertoolkit: clutter 1.2.0 - first stable release, with lots of new API - http://bit.ly/ckdS6R|1267561885|0|GTKtoolkit|0|9
371|GTK+ and friends|GTKtoolkit|#Lanedo is hiring GTK+/GNOME hackers! http://bit.ly/d6fTWQ|1267560392|0||0|1
372|GTK+ and friends|GTKtoolkit|You can help to make a difference too, help the #GTK+ maintainers to improve the documetnation infrastructure! http://bit.ly/dmJifE|1267538283|0||0|1
373|GTK+ and friends|GTKtoolkit|Designers bring back excitement around the #GNOME project http://bit.ly/9Zcx8c|1267202696|0||0|1
374|GTK+ and friends|GTKtoolkit|#webkit #gtk gets ARGB support, allowing it to set a transparent background! http://bit.ly/cBeouj|1267146282|0||0|2
375|GTK+ and friends|GTKtoolkit|Follow GNOME TV on Vimeo http://is.gd/96PlT|1267050829|0||0|1
376|GTK+ and friends|GTKtoolkit|Extensive article on the state of #WebKitGtk http://is.gd/95En2|1267031517|0||0|0
377|GTK+ and friends|GTKtoolkit|@ploum Are you hitting !PyGTK or !GTK+ bugs? Are they already reported upstream?|1267029810|0||0|0
378|GTK+ and friends|GTKtoolkit|#GNUStep gets #GTK+ theming http://is.gd/95vHl more at http://is.gd/95wt8|1267029498|0||0|1
379|GTK+ and friends|GTKtoolkit|GTK+ 2.19.6 released: http://mail.gnome.org/archives/gtk-devel-list/2010-February/msg00050.html #gtk|1266966985|0||0|0
380|GTK+ and friends|GTKtoolkit|Did you know that #GTK+ is the official toolkit for the #LiMo software stack? http://bit.ly/cuEdHx|1266925406|0||0|0
381|GTK+ and friends|GTKtoolkit|@lmedinas publishes a #javascript #example on how to put an status icon with #Gtk+ http://bit.ly/9py1uC Thanks a lot Luis!|1266886644|0||1|1
382|GTK+ and friends|GTKtoolkit|♺ @ebassi: I should really finish up the GDom API as well|1266880653|0||0|0
383|GTK+ and friends|GTKtoolkit|♺ @ebassi: I hope to work on this for the next GIO release, and the GTK+ side for 3.0|1266880641|0||0|0
384|GTK+ and friends|GTKtoolkit|♺ @ebassi: just updated the ApplicationClass design wiki page with the stuff @Cwiiis did for Mx - http://bit.ly/cfAOJk|1266880559|0||0|0
385|GTK+ and friends|GTKtoolkit|#GTK+ Kick Start tutorial for #Vala http://www.vimeo.com/9617309 OGG: http://bit.ly/czegmp|1266874471|0||0|1
386|GTK+ and friends|GTKtoolkit|@migheldeicaza shows off #monodevelop on #macosx deploying and debugging #gtk sharp apps on a #MeeGo device http://bit.ly/9XR0Pg|1266874171|0||1|1
387|GTK+ and friends|GTKtoolkit|#GTK+ is the first toolkit to expose the #Xorg multitouch stack through #XI2 http://bit.ly/9tniKu - Nice work @garnacho!|1266863259|0||0|1
388|GTK+ and friends|GTKtoolkit|This is the official GTK+ first micropost!|1266856657|0||0|1
1|GTK+ and friends|@GTKtoolkit|GTK+ 3.8.0 (STABLE) released: wayland, Multi-application Broadway, improved CSS support and more ... http://ur1.ca/d6yms #gtk #gtk3|1364338800|0||4|2
2|Daniel Svensson|@dsvensson|Bringing an application up to the new features in GTK 3.x = tons of negative diffs, awesome work by @GTKtoolkit devs <3|1382565600|0|GTK+ and friends|0|1
3|GTK+ and friends|@GTKtoolkit|GLib status update and a warning: http://ur1.ca/awsm1 #glib|1384383600
4|GTK+ and friends|@GTKtoolkit|GProperty status: http://ur1.ca/awslh #glib|1384383300
5|GTK+ and friends|@GTKtoolkit|GTK+ 3.6.2 (STABLE) available: http://ur1.ca/awsl2 #gtk #gtk3|1384383000
6|GTK+ and friends|@GTKtoolkit|GLib 2.34.2 (STABLE) available: http://ur1.ca/awskn #glib|1384383000
7|GTK+ and friends|@GTKtoolkit|GTK+ 3.6.0 (STABLE) released: http://ur1.ca/aj4e0 #gtk #gtk3|1381528800
8|GTK+ and friends|@GTKtoolkit|GLib 2.34.0 (STABLE) released: http://ur1.ca/aj4du #glib|1381522800
+1 -1
View File
@@ -47,7 +47,7 @@ dist_appsicon32_DATA = data/32x32/gtk3-widget-factory.png data/32x32/gtk3-widget
dist_appsicon48_DATA = data/48x48/gtk3-widget-factory.png data/48x48/gtk3-widget-factory-symbolic.symbolic.png
dist_appsicon256_DATA = data/256x256/gtk3-widget-factory.png data/256x256/gtk3-widget-factory-symbolic.symbolic.png
update_icon_cache = $(top_builddir)/gtk/gtk-update-icon-cache --ignore-theme-index --force
update_icon_cache = gtk-update-icon-cache --ignore-theme-index --force
install-data-hook: install-update-icon-cache
uninstall-hook: uninstall-update-icon-cache
-2
View File
@@ -261,8 +261,6 @@ GTKDOC_LIBS = \
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS=--output-format=xml --name-space=gtk
MKHTML_OPTIONS="--path=\"$(abs_srcdir):$(top_srcdir)/examples\""
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
content_files = \
version.xml \
-17
View File
@@ -31,9 +31,6 @@
<cmdsynopsis>
<command>gtk3-demo</command>
<arg choice="opt">--help</arg>
<arg choice="opt">--list</arg>
<arg choice="opt">--run <replaceable>EXAMPLE</replaceable></arg>
<arg choice="opt">--autoquit</arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -56,20 +53,6 @@ other used resources, such as ui files and icons.
<term><option>-h</option>, <option>--help</option></term>
<listitem><para>Show help options</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--list</option></term>
<listitem><para>List available examples.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-run <replaceable>EXAMPLE</replaceable></option></term>
<listitem><para>Run the named example. Use <option>--list</option> to
see the available examples.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--autoquit</option></term>
<listitem><para>Quit after a short timeout. This is intended for use
with <option>--run</option>, e.g. when profiling.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
+6 -20
View File
@@ -825,33 +825,19 @@ map_named_shm (char *name, gsize size)
int fd;
void *ptr;
char *filename = NULL;
fd = shm_open (name, O_RDONLY, 0600);
fd = shm_open(name, O_RDONLY, 0600);
if (fd == -1)
{
filename = g_build_filename (g_get_tmp_dir (), name, NULL);
fd = open (filename, O_RDONLY);
if (fd == -1)
{
perror ("Failed to map shm");
g_free (filename);
return NULL;
}
perror ("Failed to shm_open");
return NULL;
}
ptr = mmap (0, size, PROT_READ, MAP_SHARED, fd, 0);
ptr = mmap(0, size, PROT_READ, MAP_SHARED, fd, 0);
(void) close (fd);
(void) close(fd);
if (filename)
{
unlink (filename);
g_free (filename);
}
else
shm_unlink (name);
shm_unlink (name);
return ptr;
+9 -36
View File
@@ -524,11 +524,10 @@ _gdk_broadway_server_window_set_transient_for (GdkBroadwayServer *server,
}
static void *
map_named_shm (char *name, gsize size, gboolean *is_shm)
map_named_shm (char *name, gsize size)
{
#ifdef G_OS_UNIX
char *filename = NULL;
int fd;
void *ptr;
int res;
@@ -536,24 +535,10 @@ map_named_shm (char *name, gsize size, gboolean *is_shm)
fd = shm_open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
if (fd == -1)
{
if (errno == EEXIST)
return NULL;
filename = g_build_filename (g_get_tmp_dir (), name, NULL);
fd = open (filename, O_RDWR | O_CREAT | O_EXCL, 0600);
g_free (filename);
if (fd == -1)
{
if (errno != EEXIST)
g_error ("Unable to allocate shared mem for window");
return NULL;
}
else
*is_shm = FALSE;
if (errno != EEXIST)
g_error ("Unable to allocate shared mem for window");
return NULL;
}
else
*is_shm = TRUE;
res = ftruncate (fd, size);
g_assert (res != -1);
@@ -562,10 +547,7 @@ map_named_shm (char *name, gsize size, gboolean *is_shm)
res = posix_fallocate (fd, 0, size);
if (res != 0 && errno == ENOSPC)
{
if (filename)
unlink (filename);
else
shm_unlink (name);
shm_unlink (name);
g_error ("Not enough shared memory for window surface");
}
#endif
@@ -597,7 +579,6 @@ map_named_shm (char *name, gsize size, gboolean *is_shm)
return NULL;
}
*is_shm = TRUE;
res = ftruncate (fd, size);
g_assert (res != -1);
@@ -633,7 +614,7 @@ make_valid_fs_char (char c)
/* name must have at least space for 34 bytes */
static gpointer
create_random_shm (char *name, gsize size, gboolean *is_shm)
create_random_shm (char *name, gsize size)
{
guint32 r;
int i, o;
@@ -657,7 +638,7 @@ create_random_shm (char *name, gsize size, gboolean *is_shm)
}
name[o++] = 0;
ptr = map_named_shm (name, size, is_shm);
ptr = map_named_shm (name, size);
if (ptr)
return ptr;
}
@@ -669,7 +650,6 @@ typedef struct {
char name[36];
void *data;
gsize data_size;
gboolean is_shm;
} BroadwayShmSurfaceData;
static void
@@ -680,14 +660,7 @@ shm_data_destroy (void *_data)
#ifdef G_OS_UNIX
munmap (data->data, data->data_size);
if (data->is_shm)
shm_unlink (data->name);
else
{
char *filename = g_build_filename (g_get_tmp_dir (), data->name, NULL);
unlink (filename);
g_free (filename);
}
shm_unlink (data->name);
#elif defined(G_OS_WIN32)
@@ -716,7 +689,7 @@ _gdk_broadway_server_create_surface (int width,
data = g_new (BroadwayShmSurfaceData, 1);
data->data_size = width * height * sizeof (guint32);
data->data = create_random_shm (data->name, data->data_size, &data->is_shm);
data->data = create_random_shm (data->name, data->data_size);
surface = cairo_image_surface_create_for_data ((guchar *)data->data,
CAIRO_FORMAT_ARGB32, width, height, width * sizeof (guint32));
+7 -7
View File
@@ -61,24 +61,24 @@ struct _GdkColor
#define GDK_TYPE_COLOR (gdk_color_get_type ())
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_get_type)
GDK_DEPRECATED_IN_3_14
GType gdk_color_get_type (void) G_GNUC_CONST;
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_copy)
GDK_DEPRECATED_IN_3_14
GdkColor *gdk_color_copy (const GdkColor *color);
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_free)
GDK_DEPRECATED_IN_3_14
void gdk_color_free (GdkColor *color);
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_hash)
GDK_DEPRECATED_IN_3_14
guint gdk_color_hash (const GdkColor *color);
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_equal)
GDK_DEPRECATED_IN_3_14
gboolean gdk_color_equal (const GdkColor *colora,
const GdkColor *colorb);
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_parse)
GDK_DEPRECATED_IN_3_14
gboolean gdk_color_parse (const gchar *spec,
GdkColor *color);
GDK_DEPRECATED_IN_3_14_FOR(gdk_rgba_to_string)
GDK_DEPRECATED_IN_3_14
gchar * gdk_color_to_string (const GdkColor *color);
-8
View File
@@ -130,7 +130,6 @@ static int gdk_initialized = 0; /* 1 if the library is initi
*/
static gchar *gdk_progclass = NULL;
static gboolean gdk_progclass_overridden;
static GMutex gdk_threads_mutex;
@@ -209,7 +208,6 @@ static gboolean
gdk_arg_class_cb (const char *key, const char *value, gpointer user_data, GError **error)
{
gdk_set_program_class (value);
gdk_progclass_overridden = TRUE;
return TRUE;
}
@@ -1027,16 +1025,10 @@ gdk_get_program_class (void)
* Sets the program class. The X11 backend uses the program class to set
* the class name part of the `WM_CLASS` property on
* toplevel windows; see the ICCCM.
*
* The program class can still be overridden with the --class command
* line option.
*/
void
gdk_set_program_class (const char *program_class)
{
if (gdk_progclass_overridden)
return;
g_free (gdk_progclass);
gdk_progclass = g_strdup (program_class);
+3 -4
View File
@@ -52,8 +52,7 @@ get_vertex_type_name (int type)
}
static guint
create_shader (int type,
const char *code)
create_shader (int type, const char const *code)
{
guint shader;
int status;
@@ -86,8 +85,8 @@ create_shader (int type,
static void
make_program (GdkGLContextProgram *program,
const char *vertex_shader_code,
const char *fragment_shader_code)
const char const *vertex_shader_code,
const char const *fragment_shader_code)
{
guint vertex_shader, fragment_shader;
int status;
+3 -3
View File
@@ -255,14 +255,14 @@ gdk_gl_context_class_init (GdkGLContextClass *klass)
/**
* GdkGLContext:display:
*
* The #GdkDisplay used to create the #GdkGLContext.
* The #GdkWindow the gl context is bound to.
*
* Since: 3.16
*/
obj_pspecs[PROP_DISPLAY] =
g_param_spec_object ("display",
P_("Display"),
P_("The GDK display used to create the GL context"),
P_("The GDK display the context is from"),
GDK_TYPE_DISPLAY,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
@@ -294,7 +294,7 @@ gdk_gl_context_class_init (GdkGLContextClass *klass)
obj_pspecs[PROP_SHARED_CONTEXT] =
g_param_spec_object ("shared-context",
P_("Shared context"),
P_("The GL context this context shares data with"),
P_("The GL context this context share data with"),
GDK_TYPE_GL_CONTEXT,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
+1 -7
View File
@@ -669,12 +669,6 @@ gdk_offscreen_window_set_opacity (GdkWindow *window, gdouble opacity)
{
}
static gboolean
gdk_offscreen_window_beep (GdkWindow *window)
{
return FALSE;
}
static void
gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
{
@@ -707,7 +701,7 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
impl_class->destroy_foreign = NULL;
impl_class->get_shape = NULL;
impl_class->get_input_shape = NULL;
impl_class->beep = gdk_offscreen_window_beep;
impl_class->beep = NULL;
impl_class->focus = NULL;
impl_class->set_type_hint = NULL;
+2 -8
View File
@@ -619,10 +619,7 @@ gdk_screen_get_height (GdkScreen *screen)
* @screen: a #GdkScreen
*
* Gets the width of @screen in millimeters.
*
* Note that this value is somewhat ill-defined when the screen
* has multiple monitors of different resolution. It is recommended
* to use the monitor dimensions instead.
* Note that on some X servers this value will not be correct.
*
* Returns: the width of @screen in millimeters.
*
@@ -641,10 +638,7 @@ gdk_screen_get_width_mm (GdkScreen *screen)
* @screen: a #GdkScreen
*
* Returns the height of @screen in millimeters.
*
* Note that this value is somewhat ill-defined when the screen
* has multiple monitors of different resolution. It is recommended
* to use the monitor dimensions instead.
* Note that on some X servers this value will not be correct.
*
* Returns: the heigth of @screen in millimeters.
*
-4
View File
@@ -207,10 +207,6 @@ typedef enum
* reserved values such as %GDK_MODIFIER_RESERVED_13_MASK. Your code
* should preserve and ignore them. You can use %GDK_MODIFIER_MASK to
* remove all reserved values.
*
* Also note that the GDK X backend interprets button press events for button
* 4-7 as scroll events, so %GDK_BUTTON4_MASK and %GDK_BUTTON5_MASK will never
* be set.
*/
typedef enum
{
+5 -25
View File
@@ -3111,6 +3111,7 @@ gdk_window_end_paint (GdkWindow *window)
{
surface = gdk_window_ref_impl_surface (window);
cr = cairo_create (surface);
cairo_surface_destroy (surface);
cairo_set_source_surface (cr, window->current_paint.surface, 0, 0);
gdk_cairo_region (cr, window->current_paint.region);
@@ -3122,7 +3123,6 @@ gdk_window_end_paint (GdkWindow *window)
cairo_destroy (cr);
cairo_surface_flush (surface);
cairo_surface_destroy (surface);
}
}
@@ -5979,25 +5979,10 @@ gdk_window_set_background_rgba (GdkWindow *window,
const GdkRGBA *rgba)
{
cairo_pattern_t *pattern;
GdkRGBA prev_rgba;
g_return_if_fail (GDK_IS_WINDOW (window));
g_return_if_fail (rgba != NULL);
/*
* If the new RGBA matches the previous pattern, ignore the change so that
* we do not invalidate the window contents.
*/
if ((window->background != NULL) &&
(cairo_pattern_get_type (window->background) == CAIRO_PATTERN_TYPE_SOLID) &&
(cairo_pattern_get_rgba (window->background,
&prev_rgba.red,
&prev_rgba.green,
&prev_rgba.blue,
&prev_rgba.alpha) == CAIRO_STATUS_SUCCESS) &&
gdk_rgba_equal (&prev_rgba, rgba))
return;
pattern = cairo_pattern_create_rgba (rgba->red, rgba->green,
rgba->blue, rgba->alpha);
@@ -9758,8 +9743,6 @@ gdk_window_set_geometry_hints (GdkWindow *window,
const GdkGeometry *geometry,
GdkWindowHints geom_mask)
{
g_return_if_fail (geometry != NULL || geom_mask == 0);
GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_geometry_hints (window, geometry, geom_mask);
}
@@ -11101,10 +11084,7 @@ gdk_window_get_unscaled_size (GdkWindow *window,
impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
if (impl_class->get_unscaled_size)
{
impl_class->get_unscaled_size (window, unscaled_width, unscaled_height);
return;
}
return impl_class->get_unscaled_size (window, unscaled_width, unscaled_height);
}
scale = gdk_window_get_scale_factor (window);
@@ -11120,9 +11100,9 @@ gdk_window_get_unscaled_size (GdkWindow *window,
/**
* gdk_window_set_opaque_region:
* @window: a top-level or non-native #GdkWindow
* @region: (allow-none): a region, or %NULL
* @region: a region
*
* For optimisation purposes, compositing window managers may
* For optimizization purposes, compositing window managers may
* like to not draw obscured regions of windows, or turn off blending
* during for these regions. With RGB windows with no transparency,
* this is just the shape of the window, but with ARGB32 windows, the
@@ -11131,7 +11111,7 @@ gdk_window_get_unscaled_size (GdkWindow *window,
*
* This function only works for toplevel windows.
*
* GTK+ will update this property automatically if
* GTK+ will automatically update this property automatically if
* the @window background is opaque, as we know where the opaque regions
* are. If your window background is not opaque, please update this
* property in your #GtkWidget::style-updated handler.
+3 -3
View File
@@ -30,13 +30,13 @@
#define GDK_TYPE_MIR_WINDOW (gdk_mir_window_get_type ())
#define GDK_IS_MIR_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_MIR_WINDOW))
GDK_AVAILABLE_IN_3_16
GDK_AVAILABLE_IN_3_10
GType gdk_mir_display_get_type (void);
GDK_AVAILABLE_IN_3_16
GDK_AVAILABLE_IN_3_10
MirConnection *gdk_mir_display_get_mir_connection (GdkDisplay *display);
GDK_AVAILABLE_IN_3_16
GDK_AVAILABLE_IN_3_10
GType gdk_mir_window_get_type (void);
GDK_AVAILABLE_IN_3_16
-2
View File
@@ -33,8 +33,6 @@ libgdk_quartz_la_SOURCES = \
gdkdnd-quartz.h \
gdkevents-quartz.c \
gdkeventloop-quartz.c \
gdkglcontext-quartz.c \
gdkglcontext-quartz.h \
gdkglobals-quartz.c \
gdkkeys-quartz.c \
gdkprivate-quartz.h \
-39
View File
@@ -1,39 +0,0 @@
/* GDK - The GIMP Drawing Kit
*
* gdkglcontext-quartz.c: Quartz specific OpenGL wrappers
*
* Copyright © 2014 Emmanuele Bassi
* Copyright © 2014 Alexander Larsson
* Copyright © 2014 Brion Vibber
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gdkglcontext-quartz.h"
#include "gdkintl.h"
GdkGLContext *
gdk_quartz_window_create_gl_context (GdkWindow *window,
gboolean attached,
GdkGLContext *share,
GError **error)
{
/* FIXME: implement */
g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
"Not implemented on OS X");
return NULL;
}
-41
View File
@@ -1,41 +0,0 @@
/* GDK - The GIMP Drawing Kit
*
* gdkglcontext-quartz.h: Private Quartz specific OpenGL wrappers
*
* Copyright © 2014 Emmanuele Bassi
* Copyright © 2014 Red Hat, Int
* Copyright © 2014 Brion Vibber
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GDK_QUARTZ_GL_CONTEXT__
#define __GDK_QUARTZ_GL_CONTEXT__
#include "gdkglcontextprivate.h"
#include "gdkvisual.h"
#include "gdkwindow.h"
#include "gdkinternals.h"
#include "gdkmain.h"
G_BEGIN_DECLS
GdkGLContext * gdk_quartz_window_create_gl_context (GdkWindow *window,
gboolean attach,
GdkGLContext *share,
GError **error);
G_END_DECLS
#endif /* __GDK_QUARTZ_GL_CONTEXT__ */
+1 -13
View File
@@ -25,7 +25,6 @@
#include "gdkwindowimpl.h"
#include "gdkprivate-quartz.h"
#include "gdkglcontext-quartz.h"
#include "gdkquartzscreen.h"
#include "gdkquartzcursor.h"
@@ -1863,17 +1862,7 @@ gdk_quartz_window_set_geometry_hints (GdkWindow *window,
if (geom_mask & GDK_HINT_ASPECT)
{
NSSize size;
if (geometry->min_aspect != geometry->max_aspect)
{
g_warning ("Only equal minimum and maximum aspect ratios are supported on Mac OS. Using minimum aspect ratio...");
}
size.width = geometry->min_aspect;
size.height = 1.0;
[impl->toplevel setContentAspectRatio:size];
/* FIXME: Implement */
}
if (geom_mask & GDK_HINT_WIN_GRAVITY)
@@ -2955,7 +2944,6 @@ gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass)
impl_class->change_property = _gdk_quartz_window_change_property;
impl_class->delete_property = _gdk_quartz_window_delete_property;
impl_class->create_gl_context = gdk_quartz_window_create_gl_context;
impl_quartz_class->get_context = gdk_window_impl_quartz_get_context;
impl_quartz_class->release_context = gdk_window_impl_quartz_release_context;
+6 -36
View File
@@ -95,9 +95,6 @@ struct _GdkWaylandDeviceData
struct wl_surface *pointer_surface;
guint current_output_scale;
GSList *pointer_surface_outputs;
/* Source/dest for non-local dnd */
GdkWindow *foreign_dnd_window;
};
struct _GdkWaylandDevice
@@ -211,13 +208,10 @@ gdk_wayland_device_update_window_cursor (GdkWaylandDeviceData *wd)
wd->enter_serial,
wd->pointer_surface,
x, y);
if (buffer)
{
wl_surface_attach (wd->pointer_surface, buffer, 0, 0);
wl_surface_set_buffer_scale (wd->pointer_surface, scale);
wl_surface_damage (wd->pointer_surface, 0, 0, w, h);
wl_surface_commit (wd->pointer_surface);
}
wl_surface_attach (wd->pointer_surface, buffer, 0, 0);
wl_surface_set_buffer_scale (wd->pointer_surface, scale);
wl_surface_damage (wd->pointer_surface, 0, 0, w, h);
wl_surface_commit (wd->pointer_surface);
if (wd->grab_cursor)
{
@@ -629,10 +623,8 @@ data_device_enter (void *data,
dnd_owner = gdk_selection_owner_get_for_display (device->display, gdk_drag_get_selection (device->drop_context));
if (!dnd_owner)
dnd_owner = device->foreign_dnd_window;
_gdk_wayland_drag_context_set_source_window (device->drop_context, dnd_owner);
if (dnd_owner)
_gdk_wayland_drag_context_set_source_window (device->drop_context, dnd_owner);
_gdk_wayland_drag_context_set_dest_window (device->drop_context,
dest_window, serial);
@@ -1846,26 +1838,6 @@ static const struct wl_surface_listener pointer_surface_listener = {
pointer_surface_leave
};
static GdkWindow *
create_foreign_dnd_window (GdkDisplay *display)
{
GdkWindowAttr attrs;
GdkScreen *screen;
guint mask;
screen = gdk_display_get_default_screen (display);
attrs.x = attrs.y = 0;
attrs.width = attrs.height = 1;
attrs.wclass = GDK_INPUT_OUTPUT;
attrs.window_type = GDK_WINDOW_TEMP;
attrs.visual = gdk_screen_get_system_visual (screen);
mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
return gdk_window_new (gdk_screen_get_root_window (screen), &attrs, mask);
}
void
_gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
guint32 id,
@@ -1885,7 +1857,6 @@ _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
device->device_manager = device_manager;
device->touches = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) g_free);
device->foreign_dnd_window = create_foreign_dnd_window (display);
device->wl_seat = wl_seat;
wl_seat_add_listener (device->wl_seat, &seat_listener, device);
@@ -1927,7 +1898,6 @@ _gdk_wayland_device_manager_remove_seat (GdkDeviceManager *manager,
/* FIXME: destroy data_device */
g_clear_object (&device->keyboard_settings);
g_hash_table_destroy (device->touches);
gdk_window_destroy (device->foreign_dnd_window);
g_free (device);
break;
-2
View File
@@ -193,13 +193,11 @@ gdk_registry_handle_global (void *data,
output =
wl_registry_bind (display_wayland->wl_registry, id, &wl_output_interface, MIN (version, 2));
_gdk_wayland_screen_add_output (display_wayland->screen, id, output, MIN (version, 2));
wl_display_roundtrip (display_wayland->wl_display);
}
else if (strcmp (interface, "wl_seat") == 0)
{
seat = wl_registry_bind (display_wayland->wl_registry, id, &wl_seat_interface, MIN (version, 4));
_gdk_wayland_device_manager_add_seat (gdk_display->device_manager, id, seat);
wl_display_roundtrip (display_wayland->wl_display);
}
else if (strcmp (interface, "wl_data_device_manager") == 0)
{
+1 -5
View File
@@ -236,8 +236,7 @@ gdk_wayland_drag_context_drop_reply (GdkDragContext *context,
gboolean accepted,
guint32 time_)
{
if (!accepted)
gdk_wayland_drop_context_set_status (context, accepted);
gdk_wayland_drop_context_set_status (context, accepted);
}
static void
@@ -419,9 +418,6 @@ _gdk_wayland_drag_context_set_dest_window (GdkDragContext *context,
GdkWindow *dest_window,
uint32_t serial)
{
if (context->dest_window)
g_object_unref (context->dest_window);
context->dest_window = dest_window ? g_object_ref (dest_window) : NULL;
GDK_WAYLAND_DRAG_CONTEXT (context)->serial = serial;
gdk_wayland_drop_context_update_targets (context);
+1 -28
View File
@@ -1001,52 +1001,25 @@ _gdk_wayland_screen_init (GdkWaylandScreen *screen_wayland)
static void
update_screen_size (GdkWaylandScreen *screen_wayland)
{
gboolean emit_changed = FALSE;
gint width, height;
gint width_mm, height_mm;
gint i;
width = height = 0;
width_mm = height_mm = 0;
for (i = 0; i < screen_wayland->monitors->len; i++)
{
GdkWaylandMonitor *monitor = screen_wayland->monitors->pdata[i];
/* XXX: Largely assuming here that monitor areas
* are contiguous and never overlap.
*/
if (monitor->geometry.x > 0)
width_mm += monitor->width_mm;
else
width_mm = MAX (width_mm, monitor->width_mm);
if (monitor->geometry.y > 0)
height_mm += monitor->height_mm;
else
height_mm = MAX (height_mm, monitor->height_mm);
width = MAX (width, monitor->geometry.x + monitor->geometry.width);
height = MAX (height, monitor->geometry.y + monitor->geometry.height);
}
if (screen_wayland->width_mm != width_mm ||
screen_wayland->height_mm != height_mm)
{
emit_changed = TRUE;
screen_wayland->width_mm = width_mm;
screen_wayland->height_mm = height_mm;
}
if (screen_wayland->width != width ||
screen_wayland->height != height)
{
emit_changed = TRUE;
screen_wayland->width = width;
screen_wayland->height = height;
g_signal_emit_by_name (screen_wayland, "size-changed");
}
if (emit_changed)
g_signal_emit_by_name (screen_wayland, "size-changed");
}
static void
-1
View File
@@ -216,7 +216,6 @@ static struct {
#endif
{ "help", IDC_HELP },
{ "ibeam", IDC_IBEAM },
{ "left_ptr_watch", IDC_APPSTARTING },
{ "sizeall", IDC_SIZEALL },
{ "sizenesw", IDC_SIZENESW },
{ "sizens", IDC_SIZENS },
+3 -51
View File
@@ -135,8 +135,6 @@ static UINT sync_timer = 0;
static int debug_indent = 0;
static int both_shift_pressed[2]; /* to store keycodes for shift keys */
static void
assign_object (gpointer lhsp,
gpointer rhs)
@@ -1839,7 +1837,6 @@ gdk_event_translate (MSG *msg,
RECT rect, *drag, orig_drag;
POINT point;
MINMAXINFO *mmi;
LONG style;
HWND hwnd;
HCURSOR hcursor;
BYTE key_state[256];
@@ -2111,38 +2108,6 @@ gdk_event_translate (MSG *msg,
fill_key_event_string (event);
/* Only one release key event is fired when both shift keys are pressed together
and then released. In order to send the missing event, press events for shift
keys are recorded and sent together when the release event occurs.
Other modifiers (e.g. ctrl, alt) don't have this problem. */
if (msg->message == WM_KEYDOWN && msg->wParam == VK_SHIFT)
{
int pressed_shift = msg->lParam & 0xffffff; /* mask shift modifier */
if (both_shift_pressed[0] == 0)
both_shift_pressed[0] = pressed_shift;
else if (both_shift_pressed[0] != pressed_shift)
both_shift_pressed[1] = pressed_shift;
}
if (msg->message == WM_KEYUP && msg->wParam == VK_SHIFT)
{
if (both_shift_pressed[0] != 0 && both_shift_pressed[1] != 0)
{
gint tmp_retval;
MSG fake_release = *msg;
int pressed_shift = msg->lParam & 0xffffff;
if (both_shift_pressed[0] == pressed_shift)
fake_release.lParam = both_shift_pressed[1];
else
fake_release.lParam = both_shift_pressed[0];
both_shift_pressed[0] = both_shift_pressed[1] = 0;
gdk_event_translate (&fake_release, &tmp_retval);
}
both_shift_pressed[0] = both_shift_pressed[1] = 0;
}
/* Reset MOD1_MASK if it is the Alt key itself */
if (msg->wParam == VK_MENU)
event->key.state &= ~GDK_MOD1_MASK;
@@ -2484,7 +2449,6 @@ gdk_event_translate (MSG *msg,
break;
case WM_MOUSEWHEEL:
case WM_MOUSEHWHEEL:
GDK_NOTE (EVENTS, g_print (" %d", (short) HIWORD (msg->wParam)));
/* WM_MOUSEWHEEL is delivered to the focus window. Work around
@@ -2535,13 +2499,8 @@ gdk_event_translate (MSG *msg,
event = gdk_event_new (GDK_SCROLL);
event->scroll.window = window;
if (msg->message == WM_MOUSEWHEEL)
event->scroll.direction = (((short) HIWORD (msg->wParam)) > 0) ?
GDK_SCROLL_UP : GDK_SCROLL_DOWN;
else if (msg->message == WM_MOUSEHWHEEL)
event->scroll.direction = (((short) HIWORD (msg->wParam)) > 0) ?
GDK_SCROLL_RIGHT : GDK_SCROLL_LEFT;
event->scroll.direction = (((short) HIWORD (msg->wParam)) > 0) ?
GDK_SCROLL_UP : GDK_SCROLL_DOWN;
event->scroll.time = _gdk_win32_get_next_tick (msg->time);
event->scroll.x = (gint16) point.x;
event->scroll.y = (gint16) point.y;
@@ -3085,8 +3044,6 @@ gdk_event_translate (MSG *msg,
mmi->ptMaxPosition.x, mmi->ptMaxPosition.y,
mmi->ptMaxSize.x, mmi->ptMaxSize.y));
style = GetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE);
if (impl->hint_flags & GDK_HINT_MIN_SIZE)
{
rect.left = rect.top = 0;
@@ -3115,10 +3072,7 @@ gdk_event_translate (MSG *msg,
mmi->ptMaxTrackSize.x = maxw > 0 && maxw < G_MAXSHORT ? maxw : G_MAXSHORT;
mmi->ptMaxTrackSize.y = maxh > 0 && maxh < G_MAXSHORT ? maxh : G_MAXSHORT;
}
/* Assume that these styles are incompatible with CSD,
* so there's no reason for us to override the defaults.
*/
else if ((style & (WS_BORDER | WS_THICKFRAME)) == 0)
else
{
HMONITOR winmon;
MONITORINFO moninfo;
@@ -3131,8 +3085,6 @@ gdk_event_translate (MSG *msg,
{
mmi->ptMaxTrackSize.x = moninfo.rcWork.right - moninfo.rcWork.left;
mmi->ptMaxTrackSize.y = moninfo.rcWork.bottom - moninfo.rcWork.top;
mmi->ptMaxPosition.x = moninfo.rcWork.left;
mmi->ptMaxPosition.y = moninfo.rcWork.top;
}
else
{
-2
View File
@@ -164,8 +164,6 @@ handle_special (guint vk,
*ksymp = GDK_KEY_Meta_R; break;
case VK_APPS:
*ksymp = GDK_KEY_Menu; break;
case VK_DECIMAL:
*ksymp = GDK_KEY_KP_Decimal; break;
case VK_MULTIPLY:
*ksymp = GDK_KEY_KP_Multiply; break;
case VK_ADD:
-1
View File
@@ -758,7 +758,6 @@ _gdk_win32_message_to_string (UINT msg)
CASE (WM_MBUTTONUP);
CASE (WM_MBUTTONDBLCLK);
CASE (WM_MOUSEWHEEL);
CASE (WM_MOUSEHWHEEL);
CASE (WM_XBUTTONDOWN);
CASE (WM_XBUTTONUP);
CASE (WM_XBUTTONDBLCLK);
-3
View File
@@ -90,9 +90,6 @@
#ifndef WM_APPCOMMAND
#define WM_APPCOMMAND 0x319
#endif
#ifndef WM_MOUSEHWHEEL
#define WM_MOUSEHWHEEL 0x20E
#endif
#ifndef CF_DIBV5
#define CF_DIBV5 17
+39 -46
View File
@@ -499,13 +499,10 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
XIButtonState button_state = { 0 };
XIModifierState mod_state;
XIGroupState group_state;
Bool retval;
display = gdk_device_get_display (device);
screen = gdk_display_get_default_screen (display);
gdk_x11_display_error_trap_push (display);
/* This function really only works if the mouse pointer is held still
* during its operation. If it moves from one leaf window to another
* than we'll end up with inaccurate values for win_x, win_y
@@ -552,18 +549,18 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
/* Free previous button mask, if any */
g_free (button_state.mask);
retval = XIQueryPointer (xdisplay,
device_xi2->device_id,
xwindow,
&root, &child,
&xroot_x, &xroot_y,
&xwin_x, &xwin_y,
&button_state,
&mod_state,
&group_state);
if (!retval)
gdk_x11_display_error_trap_push (display);
XIQueryPointer (xdisplay,
device_xi2->device_id,
xwindow,
&root, &child,
&xroot_x, &xroot_y,
&xwin_x, &xwin_y,
&button_state,
&mod_state,
&group_state);
if (gdk_x11_display_error_trap_pop (display))
continue;
if (child != None)
{
pointer_window = child;
@@ -612,16 +609,17 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
last = xwindow;
free (button_state.mask);
retval = XIQueryPointer (xdisplay,
device_xi2->device_id,
xwindow,
&root, &xwindow,
&xroot_x, &xroot_y,
&xwin_x, &xwin_y,
&button_state,
&mod_state,
&group_state);
if (!retval)
gdk_x11_display_error_trap_push (display);
XIQueryPointer (xdisplay,
device_xi2->device_id,
xwindow,
&root, &xwindow,
&xroot_x, &xroot_y,
&xwin_x, &xwin_y,
&button_state,
&mod_state,
&group_state);
if (gdk_x11_display_error_trap_pop (display))
break;
if (get_toplevel && last != root &&
@@ -635,25 +633,10 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
gdk_x11_display_ungrab (display);
if (gdk_x11_display_error_trap_pop (display) == 0)
{
window = gdk_x11_window_lookup_for_display (display, last);
impl = NULL;
if (window)
impl = GDK_WINDOW_IMPL_X11 (window->impl);
if (mask)
*mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
free (button_state.mask);
}
else
{
window = NULL;
if (mask)
*mask = 0;
}
window = gdk_x11_window_lookup_for_display (display, last);
impl = NULL;
if (window)
impl = GDK_WINDOW_IMPL_X11 (window->impl);
if (win_x)
*win_x = (window) ? (xwin_x / impl->window_scale) : -1;
@@ -661,6 +644,10 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
if (win_y)
*win_y = (window) ? (xwin_y / impl->window_scale) : -1;
if (mask)
*mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
free (button_state.mask);
return window;
}
@@ -775,10 +762,10 @@ _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state,
{
gint len, i;
/* We're only interested in the first 3 buttons */
len = MIN (3, buttons_state->mask_len * 8);
/* We're only interested in the first 5 buttons */
len = MIN (5, buttons_state->mask_len * 8);
for (i = 1; i <= len; i++)
for (i = 0; i < len; i++)
{
if (!XIMaskIsSet (buttons_state->mask, i))
continue;
@@ -794,6 +781,12 @@ _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state,
case 3:
state |= GDK_BUTTON3_MASK;
break;
case 4:
state |= GDK_BUTTON4_MASK;
break;
case 5:
state |= GDK_BUTTON5_MASK;
break;
default:
break;
}
+2 -43
View File
@@ -1108,47 +1108,6 @@ find_frame_timings (GdkFrameClock *clock,
return NULL;
}
/* _NET_WM_FRAME_DRAWN and _NET_WM_FRAME_TIMINGS messages represent time
* as a "high resolution server time" - this is the server time interpolated
* to microsecond resolution. The advantage of this time representation
* is that if X server is running on the same computer as a client, and
* the Xserver uses 'clock_gettime(CLOCK_MONOTONIC, ...)' for the server
* time, the client can detect this, and all such clients will share a
* a time representation with high accuracy. If there is not a common
* time source, then the time synchronization will be less accurate.
*/
gint64
server_time_to_monotonic_time (GdkX11Display *display_x11,
gint64 server_time)
{
if (display_x11->server_time_query_time == 0 ||
(!display_x11->server_time_is_monotonic_time &&
server_time > display_x11->server_time_query_time + 10*1000*1000)) /* 10 seconds */
{
gint64 current_server_time = gdk_x11_get_server_time (display_x11->leader_gdk_window);
gint64 current_server_time_usec = (gint64)current_server_time * 1000;
gint64 current_monotonic_time = g_get_monotonic_time ();
display_x11->server_time_query_time = current_monotonic_time;
/* If the server time is within a second of the monotonic time,
* we assume that they are identical. This seems like a big margin,
* but we want to be as robust as possible even if the system
* is under load and our processing of the server response is
* delayed.
*/
if (current_server_time_usec > current_monotonic_time - 1000*1000 &&
current_server_time_usec < current_monotonic_time + 1000*1000)
display_x11->server_time_is_monotonic_time = TRUE;
display_x11->server_time_offset = current_server_time_usec - current_monotonic_time;
}
if (display_x11->server_time_is_monotonic_time)
return server_time;
else
return server_time - display_x11->server_time_offset;
}
GdkFilterReturn
_gdk_wm_protocols_filter (GdkXEvent *xev,
GdkEvent *event,
@@ -1181,7 +1140,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
guint32 d3 = xevent->xclient.data.l[3];
guint64 serial = ((guint64)d1 << 32) | d0;
gint64 frame_drawn_time = server_time_to_monotonic_time (GDK_X11_DISPLAY (display), ((guint64)d3 << 32) | d2);
gint64 frame_drawn_time = ((guint64)d3 << 32) | d2;
gint64 refresh_interval, presentation_time;
GdkFrameClock *clock = gdk_window_get_frame_clock (win);
@@ -1469,7 +1428,7 @@ _gdk_x11_display_open (const gchar *display_name)
gdk_event_init (display);
attr.window_type = GDK_WINDOW_TOPLEVEL;
attr.wclass = GDK_INPUT_ONLY;
attr.wclass = GDK_INPUT_OUTPUT;
attr.x = 10;
attr.y = 10;
attr.width = 10;
-6
View File
@@ -130,12 +130,6 @@ struct _GdkX11Display
gint glx_error_base;
gint glx_event_base;
/* Translation between X server time and system-local monotonic time */
gint64 server_time_query_time;
gint64 server_time_offset;
guint server_time_is_monotonic_time : 1;
guint have_glx : 1;
/* GLX extensions we check */
+10 -31
View File
@@ -309,9 +309,9 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
{
Display *display = cairo_xlib_surface_get_display (surface);
Screen *screen = cairo_xlib_surface_get_screen (surface);
Visual *visual = cairo_xlib_surface_get_visual (surface);
Visual *visual = cairo_xlib_surface_get_visual (surface);;
GdkGLXPixmap *glx_pixmap;
GLXFBConfig *fbconfigs, config;
GLXFBConfig *fbconfigs;
int nfbconfigs;
XVisualInfo *visinfo;
VisualID visualid;
@@ -326,9 +326,6 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
None
};
if (visual == NULL)
return NULL;
with_alpha = cairo_surface_get_content (surface) == CAIRO_CONTENT_COLOR_ALPHA;
y_inverted = FALSE;
@@ -396,7 +393,6 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
if (value == TRUE)
y_inverted = TRUE;
config = fbconfigs[i];
break;
}
@@ -411,7 +407,7 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
glx_pixmap = g_slice_new0 (GdkGLXPixmap);
glx_pixmap->y_inverted = y_inverted;
glx_pixmap->display = display;
glx_pixmap->drawable = glXCreatePixmap (display, config,
glx_pixmap->drawable = glXCreatePixmap (display, fbconfigs[i],
cairo_xlib_surface_get_drawable (surface),
pixmap_attributes);
@@ -436,11 +432,6 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
double sx, sy;
float uscale, vscale;
GdkTexturedQuad *quads;
GdkX11Display *display_x11;
display_x11 = GDK_X11_DISPLAY (gdk_gl_context_get_display (paint_context));
if (!display_x11->has_glx_texture_from_pixmap)
return FALSE;
if (cairo_surface_get_type (surface) != CAIRO_SURFACE_TYPE_XLIB)
return FALSE;
@@ -470,6 +461,7 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glGenTextures (1, &texture_id);
glBindTexture (target, texture_id);
glEnable (target);
glTexParameteri (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
@@ -534,6 +526,7 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glXReleaseTexImageEXT (glx_pixmap->display, glx_pixmap->drawable,
GLX_FRONT_LEFT_EXT);
glDisable (target);
glDeleteTextures (1, &texture_id);
glx_pixmap_destroy(glx_pixmap);
@@ -565,25 +558,17 @@ create_gl3_context (GdkDisplay *display,
GLX_CONTEXT_FLAGS_ARB, flags,
None,
};
GLXContext res;
GdkX11GLContext *share_x11 = NULL;
if (share != NULL)
share_x11 = GDK_X11_GL_CONTEXT (share);
gdk_x11_display_error_trap_push (display);
res = glXCreateContextAttribsARB (gdk_x11_display_get_xdisplay (display),
config,
share_x11 != NULL ? share_x11->glx_context : NULL,
True,
attrib_list);
if (gdk_x11_display_error_trap_pop (display))
return NULL;
return res;
return glXCreateContextAttribsARB (gdk_x11_display_get_xdisplay (display),
config,
share_x11 != NULL ? share_x11->glx_context : NULL,
True,
attrib_list);
}
static gboolean
@@ -1221,12 +1206,6 @@ gdk_x11_display_make_gl_context_current (GdkDisplay *display,
}
context_x11 = GDK_X11_GL_CONTEXT (context);
if (context_x11->glx_context == NULL)
{
g_critical ("No GLX context associated to the GdkGLContext; you must "
"call gdk_gl_context_realize() first.");
return FALSE;
}
GDK_NOTE (OPENGL,
g_print ("Making GLX context current to drawable %lu\n",
+5 -5
View File
@@ -2963,15 +2963,15 @@ gdk_window_x11_set_background (GdkWindow *window,
{
GdkWindow *parent;
/* X throws BadMatch if the parent has a different depth when
/* X throws BadMatch if the parent has a different visual when
* using ParentRelative */
parent = gdk_window_get_parent (window);
if (parent && window->depth != parent->depth)
XSetWindowBackgroundPixmap (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window), None);
else
if (parent && gdk_window_get_visual (parent) == gdk_window_get_visual (window))
XSetWindowBackgroundPixmap (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window), ParentRelative);
else
XSetWindowBackgroundPixmap (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window), None);
return;
}
+13 -3
View File
@@ -397,9 +397,12 @@ gtk_private_h_sources = \
gtkcsskeyframesprivate.h \
gtkcsslookupprivate.h \
gtkcssmatcherprivate.h \
gtkcssnodeprivate.h \
gtkcssnodedeclarationprivate.h \
gtkcssnodeutilsprivate.h \
gtkcssnumbervalueprivate.h \
gtkcssparserprivate.h \
gtkcsspathnodeprivate.h \
gtkcsspositionvalueprivate.h \
gtkcssproviderprivate.h \
gtkcssrepeatvalueprivate.h \
@@ -415,10 +418,12 @@ gtk_private_h_sources = \
gtkcssstyleprivate.h \
gtkcssstylepropertyprivate.h \
gtkcsstransformvalueprivate.h \
gtkcsstransientnodeprivate.h \
gtkcsstransitionprivate.h \
gtkcsstypedvalueprivate.h \
gtkcssunsetvalueprivate.h \
gtkcssvalueprivate.h \
gtkcsswidgetnodeprivate.h \
gtkcustompaperunixdialog.h \
gtkdialogprivate.h \
gtkentryprivate.h \
@@ -627,9 +632,12 @@ gtk_base_c_sources = \
gtkcsskeyframes.c \
gtkcsslookup.c \
gtkcssmatcher.c \
gtkcssnode.c \
gtkcssnodedeclaration.c \
gtkcssnodeutils.c \
gtkcssnumbervalue.c \
gtkcssparser.c \
gtkcsspathnode.c \
gtkcsspositionvalue.c \
gtkcssprovider.c \
gtkcssrepeatvalue.c \
@@ -647,11 +655,13 @@ gtk_base_c_sources = \
gtkcssstyleproperty.c \
gtkcssstylepropertyimpl.c \
gtkcsstransformvalue.c \
gtkcsstransientnode.c \
gtkcsstransition.c \
gtkcsstypedvalue.c \
gtkcssunsetvalue.c \
gtkcssvalue.c \
gtkcsstypes.c \
gtkcssvalue.c \
gtkcsswidgetnode.c \
gtkdialog.c \
gtkdrawingarea.c \
gtkeditable.c \
@@ -1122,7 +1132,7 @@ gtktypebuiltins.c: $(gtk_public_h_sources) $(a11y_h_sources) $(deprecated_h_sour
&& cp xgen-gtbc gtktypebuiltins.c \
&& rm -f xgen-gtbc
gtk.gresource.xml: Makefile.am
gtk.gresource.xml: Makefile.am inspector/Makefile.inc
$(AM_V_GEN) echo "<?xml version='1.0' encoding='UTF-8'?>" > $@; \
echo "<gresources>" >> $@; \
echo " <gresource prefix='/org/gtk/libgtk'>" >> $@; \
@@ -1331,7 +1341,7 @@ distclean-local:
if HAVE_INTROSPECTION
introspection_files = \
$(filter-out %private.h gtktextdisplay.h gtktextlayout.h gtkx.h, $(gtkinclude_HEADERS) $(a11yinclude_HEADERS) $(deprecatedinclude_HEADERS)) \
$(filter-out %win32.c, $(gtk_base_c_sources)) \
$(filter-out %win32.c %quartz.c, $(gtk_base_c_sources)) \
gtkprintoperation-unix.c \
gtktypebuiltins.h \
gtktypebuiltins.c
+3 -6
View File
@@ -113,8 +113,7 @@ gtk_boolean_cell_accessible_ref_state_set (AtkObject *accessible)
}
static void
gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal)
gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell)
{
GtkBooleanCellAccessible *boolean_cell = GTK_BOOLEAN_CELL_ACCESSIBLE (cell);
gboolean active;
@@ -132,16 +131,14 @@ gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell,
{
boolean_cell->priv->cell_value = !boolean_cell->priv->cell_value;
if (emit_signal)
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, active);
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, active);
}
if (boolean_cell->priv->cell_sensitive != sensitive)
{
boolean_cell->priv->cell_sensitive = !boolean_cell->priv->cell_sensitive;
if (emit_signal)
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_SENSITIVE, sensitive);
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, sensitive);
}
}
+3 -7
View File
@@ -419,23 +419,19 @@ _gtk_cell_accessible_state_changed (GtkCellAccessible *cell,
/*
* gtk_cell_accessible_update_cache:
* @cell: the cell that is changed
* @emit_signal: whether or not to notify the ATK bridge
*
* Notifies the cell that the values in the data in the row that
* is used to feed the cell renderer with has changed. The
* cell_changed function of @cell is called to send update
* notifications for the properties it takes from its cell
* renderer. If @emit_signal is TRUE, also notify the ATK bridge
* of the change. The bridge should be notified when an existing
* cell changes; not when a newly-created cell is being set up.
* renderer.
*
* Note that there is no higher granularity available about which
* properties changed, so you will need to make do with this
* function.
**/
void
_gtk_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal)
_gtk_cell_accessible_update_cache (GtkCellAccessible *cell)
{
GtkCellAccessibleClass *klass;
@@ -444,5 +440,5 @@ _gtk_cell_accessible_update_cache (GtkCellAccessible *cell,
klass = GTK_CELL_ACCESSIBLE_GET_CLASS (cell);
if (klass->update_cache)
klass->update_cache (cell, emit_signal);
klass->update_cache (cell);
}
+1 -2
View File
@@ -48,8 +48,7 @@ struct _GtkCellAccessible
struct _GtkCellAccessibleClass
{
GtkAccessibleClass parent_class;
void (*update_cache) (GtkCellAccessible *cell,
gboolean emit_signal);
void (*update_cache) (GtkCellAccessible *cell);
};
GDK_AVAILABLE_IN_ALL
+1 -2
View File
@@ -25,8 +25,7 @@ G_BEGIN_DECLS
void _gtk_cell_accessible_state_changed (GtkCellAccessible *cell,
GtkCellRendererState added,
GtkCellRendererState removed);
void _gtk_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal);
void _gtk_cell_accessible_update_cache (GtkCellAccessible *cell);
void _gtk_cell_accessible_initialize (GtkCellAccessible *cell,
GtkWidget *widget,
AtkObject *parent);
+2 -3
View File
@@ -64,14 +64,13 @@ gtk_container_cell_accessible_ref_child (AtkObject *obj,
}
static void
gtk_container_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal)
gtk_container_cell_accessible_update_cache (GtkCellAccessible *cell)
{
GtkContainerCellAccessible *container = GTK_CONTAINER_CELL_ACCESSIBLE (cell);
GList *l;
for (l = container->priv->children; l; l = l->next)
_gtk_cell_accessible_update_cache (l->data, emit_signal);
_gtk_cell_accessible_update_cache (l->data);
}
static void
+37 -23
View File
@@ -87,8 +87,7 @@ static void add_attr (PangoAttrList *attr_li
/* Misc */
static void gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal);
static void gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell);
static void atk_text_interface_init (AtkTextIface *iface);
@@ -133,12 +132,12 @@ gtk_text_cell_accessible_get_name (AtkObject *atk_obj)
}
static void
gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell,
gboolean emit_signal)
gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell)
{
GtkTextCellAccessible *text_cell = GTK_TEXT_CELL_ACCESSIBLE (cell);
AtkObject *obj = ATK_OBJECT (cell);
gint text_length;
gboolean rv = FALSE;
gint temp_length;
gchar *text;
GtkCellRenderer *renderer;
@@ -150,33 +149,48 @@ gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell,
g_object_get (renderer, "text", &text, NULL);
g_object_unref (renderer);
if (text == NULL)
text = g_strdup ("");
text_length = g_utf8_strlen (text, -1);
if (g_strcmp0 (text_cell->priv->cell_text, text) != 0)
if (text_cell->priv->cell_text)
{
if (text_cell->priv->cell_length && emit_signal)
if (text == NULL || g_strcmp0 (text_cell->priv->cell_text, text) != 0)
{
g_signal_emit_by_name (cell, "text-changed::delete",
0, text_cell->priv->cell_length);
g_free (text_cell->priv->cell_text);
temp_length = text_cell->priv->cell_length;
text_cell->priv->cell_text = NULL;
text_cell->priv->cell_length = 0;
g_signal_emit_by_name (cell, "text-changed::delete", 0, temp_length);
if (obj->name == NULL)
g_object_notify (G_OBJECT (obj), "accessible-name");
if (text)
rv = TRUE;
}
}
else
rv = TRUE;
g_free (text_cell->priv->cell_text);
text_cell->priv->cell_text = g_strdup (text);
text_cell->priv->cell_length = text_length;
if (text_length && emit_signal)
if (rv)
{
if (text == NULL)
{
g_signal_emit_by_name (cell, "text-changed::insert",
0, text_cell->priv->cell_length);
text_cell->priv->cell_text = g_strdup ("");
text_cell->priv->cell_length = 0;
}
else
{
text_cell->priv->cell_text = g_strdup (text);
text_cell->priv->cell_length = g_utf8_strlen (text, -1);
}
if (obj->name == NULL && emit_signal)
g_object_notify (G_OBJECT (obj), "accessible-name");
}
g_free (text);
if (rv)
{
g_signal_emit_by_name (cell, "text-changed::insert",
0, text_cell->priv->cell_length);
if (obj->name == NULL)
g_object_notify (G_OBJECT (obj), "accessible-name");
}
}
static void
-8
View File
@@ -509,11 +509,6 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
GdkWindow *window;
gint x_widget, y_widget, x_window, y_window;
*x = 0;
*y = 0;
*width = 0;
*height = 0;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
return;
@@ -524,9 +519,6 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
gtk_text_view_get_iter_location (view, &iter, &rectangle);
window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET);
if (window == NULL)
return;
gdk_window_get_origin (window, &x_widget, &y_widget);
*height = rectangle.height;
+2 -2
View File
@@ -425,7 +425,7 @@ create_cell (GtkTreeView *treeview,
cell_info_new (accessible, tree, node, column, cell);
set_cell_data (treeview, accessible, cell);
_gtk_cell_accessible_update_cache (cell, FALSE);
_gtk_cell_accessible_update_cache (cell);
return cell;
}
@@ -1705,7 +1705,7 @@ _gtk_tree_view_accessible_changed (GtkTreeView *treeview,
continue;
set_cell_data (treeview, accessible, cell);
_gtk_cell_accessible_update_cache (cell, TRUE);
_gtk_cell_accessible_update_cache (cell);
}
g_signal_emit_by_name (accessible, "visible-data-changed");
-44
View File
@@ -136,15 +136,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
widget_class->get_preferred_height_for_width = gtk_alignment_get_preferred_height_for_width;
widget_class->get_preferred_height_and_baseline_for_width = gtk_alignment_get_preferred_height_and_baseline_for_width;
/**
* GtkAlignment:xalign:
*
* Horizontal position of child in available space. A value of 0.0
* will flush the child left (or right, in RTL locales); a value
* of 1.0 will flush the child right (or left, in RTL locales).
*
* Deprecated: 3.14: Use gtk_widget_set_halign() on the child instead
*/
g_object_class_install_property (gobject_class,
PROP_XALIGN,
g_param_spec_float("xalign",
@@ -155,15 +146,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
0.5,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkAlignment:yalign:
*
* Vertical position of child in available space. A value of 0.0
* will flush the child to the top; a value of 1.0 will flush the
* child to the bottom.
*
* Deprecated: 3.14: Use gtk_widget_set_valign() on the child instead
*/
g_object_class_install_property (gobject_class,
PROP_YALIGN,
g_param_spec_float("yalign",
@@ -173,15 +155,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
1.0,
0.5,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkAlignment:xscale:
*
* If available horizontal space is bigger than needed, how much
* of it to use for the child. A value of 0.0 means none; a value
* of 1.0 means all.
*
* Deprecated: 3.14: Use gtk_widget_set_hexpand() on the child instead
*/
g_object_class_install_property (gobject_class,
PROP_XSCALE,
g_param_spec_float("xscale",
@@ -191,15 +164,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
1.0,
1.0,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkAlignment:yscale:
*
* If available vertical space is bigger than needed, how much
* of it to use for the child. A value of 0.0 means none; a value
* of 1.0 means all.
*
* Deprecated: 3.14: Use gtk_widget_set_vexpand() on the child instead
*/
g_object_class_install_property (gobject_class,
PROP_YSCALE,
g_param_spec_float("yscale",
@@ -217,8 +181,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
* The padding to insert at the top of the widget.
*
* Since: 2.4
*
* Deprecared: 3.14: Use gtk_widget_set_margin_top() instead
*/
g_object_class_install_property (gobject_class,
PROP_TOP_PADDING,
@@ -236,8 +198,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
* The padding to insert at the bottom of the widget.
*
* Since: 2.4
*
* Deprecated: 3.14: Use gtk_widget_set_margin_bottom() instead
*/
g_object_class_install_property (gobject_class,
PROP_BOTTOM_PADDING,
@@ -255,8 +215,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
* The padding to insert at the left of the widget.
*
* Since: 2.4
*
* Deprecated: 3.14: Use gtk_widget_set_margin_start() instead
*/
g_object_class_install_property (gobject_class,
PROP_LEFT_PADDING,
@@ -274,8 +232,6 @@ gtk_alignment_class_init (GtkAlignmentClass *class)
* The padding to insert at the right of the widget.
*
* Since: 2.4
*
* Deprecated: 3.14: Use gtk_widget_set_margin_end() instead
*/
g_object_class_install_property (gobject_class,
PROP_RIGHT_PADDING,
+2 -1
View File
@@ -47,7 +47,8 @@
* doing automatic flipping between #GTK_ARROW_LEFT and #GTK_ARROW_RIGHT,
* depending on the text direction. To get the same effect with an image,
* use the icon names pan-start-symbolic and pan-end-symbolic, which
* react to the text direction.
* react to the text direction instead of pan-left-symbolic and
* pan-right-symbolic which don't.
*/
#include "config.h"
+2 -2
View File
@@ -1111,7 +1111,7 @@ gtk_font_selection_size_activate (GtkWidget *w,
const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
if (priv->size != new_size)
gtk_font_selection_set_size (fontsel, new_size);
@@ -1130,7 +1130,7 @@ gtk_font_selection_size_focus_out (GtkWidget *w,
const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
gtk_font_selection_set_size (fontsel, new_size);
+5 -11
View File
@@ -305,18 +305,16 @@ gtk_gradient_resolve (GtkGradient *gradient,
cairo_pattern_t *
_gtk_gradient_resolve_full (GtkGradient *gradient,
GtkStyleProviderPrivate *provider,
GtkCssStyle *values,
GtkCssStyle *parent_values,
GtkCssDependencies *dependencies)
GtkCssStyle *style,
GtkCssStyle *parent_style)
{
cairo_pattern_t *pattern;
guint i;
g_return_val_if_fail (gradient != NULL, NULL);
g_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), NULL);
g_return_val_if_fail (GTK_IS_CSS_STYLE (values), NULL);
g_return_val_if_fail (parent_values == NULL || GTK_IS_CSS_STYLE (parent_values), NULL);
g_return_val_if_fail (*dependencies == 0, NULL);
g_return_val_if_fail (GTK_IS_CSS_STYLE (style), NULL);
g_return_val_if_fail (parent_style == NULL || GTK_IS_CSS_STYLE (parent_style), NULL);
if (gradient->radius0 == 0 && gradient->radius1 == 0)
pattern = cairo_pattern_create_linear (gradient->x0, gradient->y0,
@@ -332,21 +330,17 @@ _gtk_gradient_resolve_full (GtkGradient *gradient,
ColorStop *stop;
GtkCssValue *val;
GdkRGBA rgba;
GtkCssDependencies stop_deps;
stop = &g_array_index (gradient->stops, ColorStop, i);
/* if color resolving fails, assume transparency */
val = _gtk_css_color_value_resolve (_gtk_symbolic_color_get_css_value (stop->color),
provider,
gtk_css_style_get_value (values, GTK_CSS_PROPERTY_COLOR),
GTK_CSS_DEPENDS_ON_COLOR,
&stop_deps,
gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR),
NULL);
if (val)
{
rgba = *_gtk_css_rgba_value_get_rgba (val);
*dependencies = _gtk_css_dependencies_union (*dependencies, stop_deps);
_gtk_css_value_unref (val);
}
else
+2 -3
View File
@@ -25,9 +25,8 @@ G_BEGIN_DECLS
cairo_pattern_t * _gtk_gradient_resolve_full (GtkGradient *gradient,
GtkStyleProviderPrivate *provider,
GtkCssStyle *values,
GtkCssStyle *parent_values,
GtkCssDependencies *dependencies);
GtkCssStyle *style,
GtkCssStyle *parent_style);
GtkGradient * _gtk_gradient_transition (GtkGradient *start,
GtkGradient *end,
+2 -2
View File
@@ -77,7 +77,7 @@ struct _GtkHandleBoxPrivate
{
/* Properties */
GtkPositionType handle_position;
gint snap_edge;
GtkPositionType snap_edge;
GtkShadowType shadow_type;
gboolean child_detached;
/* Properties */
@@ -1051,7 +1051,7 @@ gtk_handle_box_get_snap_edge (GtkHandleBox *handle_box)
{
g_return_val_if_fail (GTK_IS_HANDLE_BOX (handle_box), (GtkPositionType)-1);
return (GtkPositionType)handle_box->priv->snap_edge;
return handle_box->priv->snap_edge;
}
/**
+3 -3
View File
@@ -2945,17 +2945,17 @@ gtk_icon_factory_buildable_custom_tag_end (GtkBuildable *buildable,
}
if (source_data->icon_name)
gtk_icon_source_set_icon_name (icon_source, source_data->icon_name);
if ((gint)source_data->size != -1)
if (source_data->size != -1)
{
gtk_icon_source_set_size (icon_source, source_data->size);
gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
}
if ((gint)source_data->direction != -1)
if (source_data->direction != -1)
{
gtk_icon_source_set_direction (icon_source, source_data->direction);
gtk_icon_source_set_direction_wildcarded (icon_source, FALSE);
}
if ((gint)source_data->state != -1)
if (source_data->state != -1)
{
gtk_icon_source_set_state (icon_source, source_data->state);
gtk_icon_source_set_state_wildcarded (icon_source, FALSE);
+5 -36
View File
@@ -79,35 +79,6 @@
* consider using icons in menu items only sparingly, and for "objects" (or
* "nouns") elements only, like bookmarks, files, and links; "actions" (or
* "verbs") should not have icons.
*
* Furthermore, if you would like to display keyboard accelerator, you must
* pack the accel label into the box using gtk_box_pack_end() and align the
* label, otherwise the accelerator will not display correctly. The following
* code snippet adds a keyboard accelerator to the menu item, with a key
* binding of Ctrl+M:
*
* |[<!-- language="C" -->
* GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
* GtkWidget *icon = gtk_image_new_from_icon_name ("folder-music-symbolic", GTK_ICON_SIZE_MENU);
* GtkWidget *label = gtk_accel_label_new ("Music");
* GtkWidget *menu_item = gtk_menu_item_new ();
* GtkAccelGroup *accel_group = gtk_accel_group_new ();
*
* gtk_container_add (GTK_CONTAINER (box), icon);
*
* gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
* gtk_label_set_xalign (GTK_LABEL (label), 0.0);
*
* gtk_widget_add_accelerator (menu_item, "activate", accel_group,
* GDK_KEY_m, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
* gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), menu_item);
*
* gtk_box_pack_end (GTK_BOX (box), label, TRUE, TRUE, 0);
*
* gtk_container_add (GTK_CONTAINER (menu_item), box);
*
* gtk_widget_show_all (menu_item);
* ]|
*/
@@ -217,8 +188,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
*
* Child widget to appear next to the menu text.
*
* Deprecated: 3.10: Use a #GtkMenuItem containing a #GtkBox with
* a #GtkAccelLabel and a #GtkImage instead
* Deprecated: 3.10
*/
g_object_class_install_property (gobject_class,
PROP_IMAGE,
@@ -235,7 +205,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
*
* Since: 2.16
*
* Deprecated: 3.10: Use a named icon from the #GtkIconTheme instead
* Deprecated: 3.10
*/
g_object_class_install_property (gobject_class,
PROP_USE_STOCK,
@@ -255,8 +225,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
*
* Since: 2.16
*
* Deprecated: 3.10: Use a #GtkMenuItem containing a #GtkBox with
* a #GtkAccelLabel and a #GtkImage instead
* Deprecated: 3.10
*/
g_object_class_install_property (gobject_class,
PROP_ALWAYS_SHOW_IMAGE,
@@ -273,7 +242,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
*
* Since: 2.16
*
* Deprecated: 3.10: Use gtk_widget_add_accelerator() instead
* Deprecated: 3.10
*/
g_object_class_install_property (gobject_class,
PROP_ACCEL_GROUP,
@@ -934,7 +903,7 @@ gtk_image_menu_item_new_with_mnemonic (const gchar *label)
*
* Returns: a new #GtkImageMenuItem.
*
* Deprecated: 3.10: Use gtk_menu_item_new_with_mnemonic() instead.
* Deprecated: 3.10: Use gtk_menu_item_new() instead.
*/
GtkWidget*
gtk_image_menu_item_new_from_stock (const gchar *stock_id,
-37
View File
@@ -98,16 +98,6 @@ gtk_misc_class_init (GtkMiscClass *class)
widget_class->realize = gtk_misc_realize;
/**
* GtkMisc:xalign:
*
* The horizontal alignment. A value of 0.0 means left alignment (or right
* on RTL locales); a value of 1.0 means right alignment (or left on RTL
* locales).
*
* Deprecated: 3.14: Use gtk_widget_set_halign() instead. If you are using
* #GtkLabel, use #GtkLabel:xalign instead.
*/
g_object_class_install_property (gobject_class,
PROP_XALIGN,
g_param_spec_float ("xalign",
@@ -118,15 +108,6 @@ gtk_misc_class_init (GtkMiscClass *class)
0.5,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkMisc:yalign:
*
* The vertical alignment. A value of 0.0 means top alignment;
* a value of 1.0 means bottom alignment.
*
* Deprecated: 3.14: Use gtk_widget_set_valign() instead. If you are using
* #GtkLabel, use #GtkLabel:yalign instead.
*/
g_object_class_install_property (gobject_class,
PROP_YALIGN,
g_param_spec_float ("yalign",
@@ -137,15 +118,6 @@ gtk_misc_class_init (GtkMiscClass *class)
0.5,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkMisc:xpad:
*
* The amount of space to add on the left and right of the widget, in
* pixels.
*
* Deprecated: 3.14: Use gtk_widget_set_margin_start() and
* gtk_widget_set_margin_end() instead
*/
g_object_class_install_property (gobject_class,
PROP_XPAD,
g_param_spec_int ("xpad",
@@ -156,15 +128,6 @@ gtk_misc_class_init (GtkMiscClass *class)
0,
GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
/**
* GtkMisc:ypad:
*
* The amount of space to add on the top and bottom of the widget, in
* pixels.
*
* Deprecated: 3.14: Use gtk_widget_set_margin_top() and
* gtk_widget_set_margin_bottom() instead
*/
g_object_class_install_property (gobject_class,
PROP_YPAD,
g_param_spec_int ("ypad",
+1 -1
View File
@@ -95,7 +95,7 @@ real_add (const GtkStockItem *items,
gpointer old_key, old_value;
const GtkStockItem *item = &items[i];
if (replace_primary && (guint)item->modifier == PRIMARY_MODIFIER)
if (replace_primary && item->modifier == PRIMARY_MODIFIER)
{
item = gtk_stock_item_copy (item);
((GtkStockItem *)item)->modifier = (NON_STATIC_MASK |
-2
View File
@@ -306,8 +306,6 @@ gtk_symbolic_color_resolve (GtkSymbolicColor *color,
v = _gtk_css_color_value_resolve (color->value,
GTK_STYLE_PROVIDER_PRIVATE (props),
current,
0,
NULL,
NULL);
_gtk_css_value_unref (current);
if (v == NULL)
-1
View File
@@ -2288,7 +2288,6 @@ add_credits_section (GtkAboutDialog *about,
label = gtk_label_new (str->str);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
g_signal_connect_swapped (label, "activate-link",
G_CALLBACK (emit_activate_link), about);
g_string_free (str, TRUE);
+6 -6
View File
@@ -39,7 +39,7 @@
*
* The action will be looked up in action groups that are found among
* the widgets ancestors. Most commonly, these will be the actions with
* the win. or app. prefix that are associated with the #GtkApplicationWindow
* the "win" or "app" prefix that are associated with the #GtkApplicationWindow
* or "GtkApplication, but other action groups that are added with
* gtk_widget_insert_action_group() will be consulted as well.
*
@@ -54,10 +54,10 @@
/**
* GtkActionableInterface:
* @get_action_name: virtual function for gtk_actionable_get_action_name()
* @set_action_name: virtual function for gtk_actionable_set_action_name()
* @get_action_target_value: virtual function for gtk_actionable_get_action_target_value()
* @set_action_target_value: virtual function for gtk_actionable_set_action_target_value()
* @get_action_name: virtual pointer for gtk_actionable_get_action_name()
* @set_action_name: virtual pointer for gtk_actionable_set_action_name()
* @get_action_target_value: virtual pointer for gtk_actionable_get_action_target_value()
* @set_action_target_value: virtual pointer for gtk_actionable_set_action_target_value()
*
* The interface vtable for #GtkActionable.
**/
@@ -161,7 +161,7 @@ gtk_actionable_get_action_target_value (GtkActionable *actionable)
* The target value has two purposes. First, it is used as the
* parameter to activation of the action associated with the
* #GtkActionable widget. Second, it is used to determine if the widget
* should be rendered as active the widget is active if the state
* should be rendered as active - the widget is active if the state
* is equal to the given target.
*
* Consider the example of associating a set of buttons with a #GAction
+1 -1
View File
@@ -415,7 +415,7 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
return;
GTK_NOTE(ACTIONS,
if (action_name == NULL || !strchr (action_name, '.'))
if (!strchr (action_name, '.'))
g_message ("actionhelper: action name %s doesn't look like 'app.' or 'win.' "
"which means that it will probably not work properly.", action_name));
+15 -19
View File
@@ -69,7 +69,7 @@
* that the GDK lock be held while invoking actions locally with
* g_action_group_activate_action(). The same applies to actions
* associated with #GtkApplicationWindow and to the activate and
* open #GApplication methods.
* 'open' #GApplication methods.
*
* ## Automatic resources ## {#automatic-resources}
*
@@ -113,8 +113,8 @@
* session while inhibitors are present.
*
* ## See Also ## {#seealso}
* [HowDoI: Using GtkApplication](https://wiki.gnome.org/HowDoI/GtkApplication),
* [Getting Started with GTK+: Basics](https://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.3)
* HowDoI: [Using GtkApplication] (https://wiki.gnome.org/HowDoI/GtkApplication)
* [Getting Started with GTK+: Basics] (https://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.3)
*/
enum {
@@ -506,9 +506,7 @@ gtk_application_focus_in_event_cb (GtkWindow *window,
priv->windows = g_list_concat (link, priv->windows);
}
if (application->priv->impl)
gtk_application_impl_active_window_changed (application->priv->impl, window);
gtk_application_impl_active_window_changed (application->priv->impl, window);
g_object_notify (G_OBJECT (application), "active-window");
return FALSE;
@@ -1128,7 +1126,7 @@ gtk_application_get_window_by_id (GtkApplication *application,
*
* The active window is the one that was most recently focused (within
* the application). This window may not have the focus at the moment
* if another application has it this is just the most
* if another application has it -- this is just the most
* recently-focused window within this application.
*
* Returns: (transfer none): the active window
@@ -1371,12 +1369,12 @@ gtk_application_get_app_menu (GtkApplication *application)
* each window, or at the top of the screen. In some environments, if
* both the application menu and the menubar are set, the application
* menu will be presented as if it were the first item of the menubar.
* Other environments treat the two as completely separate for example,
* the application menu may be rendered by the desktop shell while the
* menubar (if set) remains in each individual window.
* Other environments treat the two as completely separate -- for
* example, the application menu may be rendered by the desktop shell
* while the menubar (if set) remains in each individual window.
*
* Use the base #GActionMap interface to add actions, to respond to the
* user selecting these menu items.
* Use the base #GActionMap interface to add actions, to respond to the user
* selecting these menu items.
*
* Since: 3.4
*/
@@ -1632,11 +1630,11 @@ normalise_detailed_name (const gchar *detailed_action_name)
* @application: a #GtkApplication
* @detailed_action_name: a detailed action name, specifying an action
* and target to associate accelerators with
* @accels: (array zero-terminated=1): a list of accelerators in the format
* understood by gtk_accelerator_parse()
* @accels: (array zero-terminated=1): a list of accelerators in the format understood by
* gtk_accelerator_parse()
*
* Sets zero or more keyboard accelerators that will trigger the
* given action. The first item in @accels will be the primary
* given action. The first item in @accels will be the primary
* accelerator, which may be displayed in the UI.
*
* To remove all accelerators for an action, use an empty, zero-terminated
@@ -1780,16 +1778,14 @@ void
gtk_application_handle_window_realize (GtkApplication *application,
GtkWindow *window)
{
if (application->priv->impl)
gtk_application_impl_handle_window_realize (application->priv->impl, window);
gtk_application_impl_handle_window_realize (application->priv->impl, window);
}
void
gtk_application_handle_window_map (GtkApplication *application,
GtkWindow *window)
{
if (application->priv->impl)
gtk_application_impl_handle_window_map (application->priv->impl, window);
gtk_application_impl_handle_window_map (application->priv->impl, window);
}
/**
+3 -2
View File
@@ -96,7 +96,8 @@
*
* menubar = G_MENU_MODEL (gtk_builder_get_object (builder,
* "menubar"));
* gtk_application_set_menubar (G_APPLICATION (app), menubar);
* gtk_application_set_menubar (G_APPLICATION (app),
* menubar);
* g_object_unref (builder);
*
* ...
@@ -117,7 +118,7 @@
* Attribute values can be translated using gettext, like other #GtkBuilder
* content. `<attribute>` elements can be marked for translation with a
* `translatable="yes"` attribute. It is also possible to specify message
* context and translator comments, using the context and comments attributes.
* context and translator comments,using the context and comments attributes.
* To make use of this, the #GtkBuilder must have been given the gettext
* domain to use.
*/
+1 -1
View File
@@ -1132,7 +1132,7 @@ gtk_button_box_size_allocate (GtkWidget *widget,
/**
* gtk_button_box_new:
* @orientation: the box's orientation.
* @orientation: the box' orientation.
*
* Creates a new #GtkButtonBox.
*
+127 -77
View File
@@ -77,6 +77,8 @@
#include "gtkbox.h"
#include "gtkboxprivate.h"
#include "gtkcssnodeprivate.h"
#include "gtkcssnodeutilsprivate.h"
#include "gtkintl.h"
#include "gtkorientable.h"
#include "gtkorientableprivate.h"
@@ -435,14 +437,12 @@ static gboolean
gtk_box_draw (GtkWidget *widget,
cairo_t *cr)
{
GtkStyleContext *context;
GtkAllocation alloc;
context = gtk_widget_get_style_context (widget);
gtk_widget_get_allocation (widget, &alloc);
gtk_render_background (context, cr, 0, 0, alloc.width, alloc.height);
gtk_render_frame (context, cr, 0, 0, alloc.width, alloc.height);
gtk_css_node_draw (gtk_widget_get_css_node (widget),
cr,
gtk_widget_get_allocated_width (widget),
gtk_widget_get_allocated_height (widget),
NULL,
widget);
return GTK_WIDGET_CLASS (gtk_box_parent_class)->draw (widget, cr);
}
@@ -472,9 +472,13 @@ count_expand_children (GtkBox *box,
}
static void
gtk_box_size_allocate_no_center (GtkWidget *widget,
GtkAllocation *allocation)
gtk_box_size_allocate_no_center (GtkCssNode *cssnode,
const GtkAllocation *allocation,
int baseline,
GtkAllocation *out_clip,
gpointer data)
{
GtkWidget *widget = GTK_WIDGET (data);
GtkBox *box = GTK_BOX (widget);
GtkBoxPrivate *private = box->priv;
GtkBoxChild *child;
@@ -484,12 +488,12 @@ gtk_box_size_allocate_no_center (GtkWidget *widget,
GtkTextDirection direction;
GtkAllocation child_allocation;
GtkAllocation child_clip;
GtkRequestedSize *sizes;
gint child_minimum_baseline, child_natural_baseline;
gint minimum_above, natural_above;
gint minimum_below, natural_below;
gboolean have_baseline;
gint baseline;
GtkPackType packing;
@@ -499,8 +503,7 @@ gtk_box_size_allocate_no_center (GtkWidget *widget,
gint x = 0, y = 0, i;
gint child_size;
gtk_widget_set_allocation (widget, allocation);
*out_clip = *allocation;
count_expand_children (box, &nvis_children, &nexpand_children);
@@ -679,7 +682,6 @@ gtk_box_size_allocate_no_center (GtkWidget *widget,
}
}
baseline = gtk_widget_get_allocated_baseline (widget);
if (baseline == -1 && have_baseline)
{
gint height = MAX (1, allocation->height);
@@ -798,18 +800,21 @@ gtk_box_size_allocate_no_center (GtkWidget *widget,
}
}
gtk_widget_size_allocate_with_baseline (child->widget, &child_allocation, baseline);
gtk_widget_get_clip (child->widget, &child_clip);
gdk_rectangle_union (out_clip, out_clip, &child_clip);
i++;
}
}
_gtk_widget_set_simple_clip (widget, NULL);
}
static void
gtk_box_size_allocate_with_center (GtkWidget *widget,
GtkAllocation *allocation)
gtk_box_size_allocate_with_center (GtkCssNode *cssnode,
const GtkAllocation *allocation,
int baseline,
GtkAllocation *out_clip,
gpointer data)
{
GtkWidget *widget = GTK_WIDGET (data);
GtkBox *box = GTK_BOX (widget);
GtkBoxPrivate *priv = box->priv;
GtkBoxChild *child;
@@ -817,14 +822,13 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
gint nvis[2];
gint nexp[2];
GtkTextDirection direction;
GtkAllocation child_allocation;
GtkAllocation child_allocation, child_clip;
GtkRequestedSize *sizes[2];
GtkRequestedSize center_req;
gint child_minimum_baseline, child_natural_baseline;
gint minimum_above, natural_above;
gint minimum_below, natural_below;
gboolean have_baseline;
gint baseline;
gint idx[2];
gint center_pos;
gint center_size;
@@ -838,8 +842,6 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
gint x = 0, y = 0, i;
gint child_size;
gtk_widget_set_allocation (widget, allocation);
nvis[0] = nvis[1] = 0;
nexp[0] = nexp[1] = 0;
for (children = priv->children; children; children = children->next)
@@ -871,6 +873,8 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
min_size[0] = nat_size[0] = nvis[0] * priv->spacing;
min_size[1] = nat_size[1] = nvis[1] * priv->spacing;
*out_clip = *allocation;
/* Retrieve desired size for visible children. */
idx[0] = idx[1] = 0;
for (children = priv->children; children; children = children->next)
@@ -1025,7 +1029,6 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
}
}
baseline = gtk_widget_get_allocated_baseline (widget);
if (baseline == -1 && have_baseline)
{
gint height = MAX (1, allocation->height);
@@ -1139,6 +1142,8 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
}
}
gtk_widget_size_allocate_with_baseline (child->widget, &child_allocation, baseline);
gtk_widget_get_clip (child->widget, &child_clip);
gdk_rectangle_union (out_clip, out_clip, &child_clip);
i++;
}
@@ -1170,9 +1175,10 @@ gtk_box_size_allocate_with_center (GtkWidget *widget,
child_allocation.y = center_pos;
child_allocation.height = center_size;
}
gtk_widget_size_allocate_with_baseline (priv->center->widget, &child_allocation, baseline);
_gtk_widget_set_simple_clip (widget, NULL);
gtk_widget_size_allocate_with_baseline (priv->center->widget, &child_allocation, baseline);
gtk_widget_get_clip (priv->center->widget, &child_clip);
gdk_rectangle_union (out_clip, out_clip, &child_clip);
}
static void
@@ -1180,12 +1186,20 @@ gtk_box_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkBox *box = GTK_BOX (widget);
GtkAllocation clip;
if (box->priv->center &&
gtk_widget_get_visible (box->priv->center->widget))
gtk_box_size_allocate_with_center (widget, allocation);
else
gtk_box_size_allocate_no_center (widget, allocation);
gtk_widget_set_allocation (widget, allocation);
gtk_css_node_allocate (gtk_widget_get_css_node (widget),
allocation,
gtk_widget_get_allocated_baseline (widget),
&clip,
box->priv->center && gtk_widget_get_visible (box->priv->center->widget)
? gtk_box_size_allocate_with_center
: gtk_box_size_allocate_no_center,
box);
gtk_widget_set_clip (widget, &clip);
}
static GType
@@ -1434,17 +1448,25 @@ gtk_box_buildable_init (GtkBuildableIface *iface)
}
static void
gtk_box_invalidate_order_foreach (GtkWidget *widget)
gtk_box_invalidate_order_foreach (GtkWidget *widget,
gpointer prev)
{
_gtk_widget_invalidate_style_context (widget, GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_SIBLING_POSITION);
GtkCssNode **previous = prev;
GtkCssNode *cur = gtk_widget_get_css_node (widget);
if (*previous)
gtk_css_node_set_after (cur, *previous);
*previous = cur;
}
static void
gtk_box_invalidate_order (GtkBox *box)
{
GtkCssNode *previous = NULL;
gtk_container_foreach (GTK_CONTAINER (box),
(GtkCallback) gtk_box_invalidate_order_foreach,
NULL);
gtk_box_invalidate_order_foreach,
&previous);
}
static void
@@ -1490,8 +1512,8 @@ gtk_box_pack (GtkBox *box,
gtk_widget_freeze_child_notify (child);
gtk_box_invalidate_order (box);
gtk_widget_set_parent (child, GTK_WIDGET (box));
gtk_box_invalidate_order (box);
g_signal_connect (child, "notify::visible",
G_CALLBACK (box_child_visibility_notify_cb), box);
@@ -1657,22 +1679,6 @@ gtk_box_get_size (GtkWidget *widget,
*natural_baseline = nat_baseline;
}
static void
gtk_box_get_preferred_width (GtkWidget *widget,
gint *minimum_size,
gint *natural_size)
{
gtk_box_get_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size, NULL, NULL);
}
static void
gtk_box_get_preferred_height (GtkWidget *widget,
gint *minimum_size,
gint *natural_size)
{
gtk_box_get_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size, NULL, NULL);
}
static void
gtk_box_compute_size_for_opposing_orientation (GtkBox *box,
gint avail_size,
@@ -1956,19 +1962,74 @@ gtk_box_compute_size_for_orientation (GtkBox *box,
*natural_size = required_natural;
}
static void
gtk_box_get_preferred_size (GtkCssNode *cssnode,
GtkOrientation orientation,
gint for_size,
gint *minimum,
gint *natural,
gint *minimum_baseline,
gint *natural_baseline,
gpointer data)
{
GtkWidget *widget = data;
GtkBox *box = GTK_BOX (widget);
GtkBoxPrivate *priv = box->priv;
if (for_size < 0)
{
gtk_box_get_size (widget, orientation, minimum, natural, minimum_baseline, natural_baseline);
}
else
{
if (priv->orientation == orientation)
gtk_box_compute_size_for_orientation (box, for_size, minimum, natural);
else
gtk_box_compute_size_for_opposing_orientation (box, for_size, minimum, natural, minimum_baseline, natural_baseline);
}
}
static void
gtk_box_get_preferred_width (GtkWidget *widget,
gint *minimum_size,
gint *natural_size)
{
gtk_css_node_get_preferred_size (gtk_widget_get_css_node (widget),
GTK_ORIENTATION_HORIZONTAL,
-1,
minimum_size, natural_size,
NULL, NULL,
gtk_box_get_preferred_size,
widget);
}
static void
gtk_box_get_preferred_height (GtkWidget *widget,
gint *minimum_size,
gint *natural_size)
{
gtk_css_node_get_preferred_size (gtk_widget_get_css_node (widget),
GTK_ORIENTATION_VERTICAL,
-1,
minimum_size, natural_size,
NULL, NULL,
gtk_box_get_preferred_size,
widget);
}
static void
gtk_box_get_preferred_width_for_height (GtkWidget *widget,
gint height,
gint *minimum_width,
gint *natural_width)
{
GtkBox *box = GTK_BOX (widget);
GtkBoxPrivate *private = box->priv;
if (private->orientation == GTK_ORIENTATION_VERTICAL)
gtk_box_compute_size_for_opposing_orientation (box, height, minimum_width, natural_width, NULL, NULL);
else
gtk_box_compute_size_for_orientation (box, height, minimum_width, natural_width);
gtk_css_node_get_preferred_size (gtk_widget_get_css_node (widget),
GTK_ORIENTATION_HORIZONTAL,
height,
minimum_width, natural_width,
NULL, NULL,
gtk_box_get_preferred_size,
widget);
}
static void
@@ -1979,24 +2040,13 @@ gtk_box_get_preferred_height_and_baseline_for_width (GtkWidget *widget,
gint *minimum_baseline,
gint *natural_baseline)
{
GtkBox *box = GTK_BOX (widget);
GtkBoxPrivate *private = box->priv;
if (width < 0)
gtk_box_get_size (widget, GTK_ORIENTATION_VERTICAL, minimum_height, natural_height, minimum_baseline, natural_baseline);
else
{
if (private->orientation == GTK_ORIENTATION_HORIZONTAL)
gtk_box_compute_size_for_opposing_orientation (box, width, minimum_height, natural_height, minimum_baseline, natural_baseline);
else
{
if (minimum_baseline)
*minimum_baseline = -1;
if (natural_baseline)
*natural_baseline = -1;
gtk_box_compute_size_for_orientation (box, width, minimum_height, natural_height);
}
}
gtk_css_node_get_preferred_size (gtk_widget_get_css_node (widget),
GTK_ORIENTATION_VERTICAL,
width,
minimum_height, natural_height,
minimum_baseline, natural_baseline,
gtk_box_get_preferred_size,
widget);
}
static void
+1 -2
View File
@@ -203,7 +203,6 @@
*
* Additionally, since 3.10 a special <template> tag has been added
* to the format allowing one to define a widget classs components.
* See the [GtkWidget documentation][composite-templates] for details.
*/
#include "config.h"
@@ -2431,7 +2430,7 @@ gtk_builder_add_callback_symbols (GtkBuilder *builder,
}
/**
* gtk_builder_lookup_callback_symbol: (skip)
* gtk_builder_lookup_callback_symbol:
* @builder: a #GtkBuilder
* @callback_name: The name of the callback
*
-3
View File
@@ -1216,8 +1216,6 @@ end_element (GMarkupParseContext *context,
PropertyInfo *prop_info = state_pop_info (data, PropertyInfo);
CommonInfo *info = state_peek_info (data, CommonInfo);
g_assert (info != NULL);
/* Normal properties */
if (strcmp (info->tag.name, "object") == 0 ||
strcmp (info->tag.name, "template") == 0)
@@ -1254,7 +1252,6 @@ end_element (GMarkupParseContext *context,
{
SignalInfo *signal_info = state_pop_info (data, SignalInfo);
ObjectInfo *object_info = (ObjectInfo*)state_peek_info (data, CommonInfo);
g_assert (object_info != NULL);
signal_info->object_name = g_strdup (object_info->id);
object_info->signals =
g_slist_prepend (object_info->signals, signal_info);
+43 -84
View File
@@ -25,32 +25,6 @@
#include <math.h>
#include <string.h>
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
#define get_box_filter_size(radius) ((int)(GAUSSIAN_SCALE_FACTOR * (radius)))
/* Sadly, clang is picky about get_box_filter_size(2) not being a
* constant expression, thus we have to use precomputed values.
*/
#define BOX_FILTER_SIZE_2 3
#define BOX_FILTER_SIZE_3 5
#define BOX_FILTER_SIZE_4 7
#define BOX_FILTER_SIZE_5 9
#define BOX_FILTER_SIZE_6 11
#define BOX_FILTER_SIZE_7 13
#define BOX_FILTER_SIZE_8 15
#define BOX_FILTER_SIZE_9 16
#define BOX_FILTER_SIZE_10 18
/* This applies a single box blur pass to a horizontal range of pixels;
* since the box blur has the same weight for all pixels, we can
* implement an efficient sliding window algorithm where we add
@@ -86,37 +60,18 @@ blur_xspan (guchar *row,
* only divide down after all three passes. (SSE parallel implementation
* of the divide step is possible.)
*/
#define BLUR_ROW_KERNEL(D) \
for (i = -(D) + offset; i < row_width + offset; i++) \
{ \
if (i >= 0 && i < row_width) \
sum += row[i]; \
\
if (i >= offset) \
{ \
if (i >= (D)) \
sum -= row[i - (D)]; \
\
tmp_buffer[i - offset] = (sum + (D) / 2) / (D); \
} \
} \
break;
/* We unroll the values for d for radius 2-10 to avoid a generic
* divide operation (not radius 1, because its a no-op) */
switch (d)
for (i = -d + offset; i < row_width + offset; i++)
{
case BOX_FILTER_SIZE_2: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_2);
case BOX_FILTER_SIZE_3: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_3);
case BOX_FILTER_SIZE_4: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_4);
case BOX_FILTER_SIZE_5: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_5);
case BOX_FILTER_SIZE_6: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_6);
case BOX_FILTER_SIZE_7: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_7);
case BOX_FILTER_SIZE_8: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_8);
case BOX_FILTER_SIZE_9: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_9);
case BOX_FILTER_SIZE_10: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_10);
default: BLUR_ROW_KERNEL (d);
if (i >= 0 && i < row_width)
sum += row[i];
if (i >= offset)
{
if (i >= d)
sum -= row[i - d];
tmp_buffer[i - offset] = (sum + d / 2) / d;
}
}
memcpy (row, tmp_buffer, row_width);
@@ -185,35 +140,45 @@ flip_buffer (guchar *dst_buffer,
#undef BLOCK_SIZE
}
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
static int
get_box_filter_size (double radius)
{
return GAUSSIAN_SCALE_FACTOR * radius;
}
static void
_boxblur (guchar *buffer,
int width,
int height,
int radius,
GtkBlurFlags flags)
_boxblur (guchar *buffer,
int width,
int height,
int radius)
{
guchar *flipped_buffer;
int d = get_box_filter_size (radius);
flipped_buffer = g_malloc (width * height);
if (flags & GTK_BLUR_Y)
{
/* Step 1: swap rows and columns */
flip_buffer (flipped_buffer, buffer, width, height);
/* Step 1: swap rows and columns */
flip_buffer (flipped_buffer, buffer, width, height);
/* Step 2: blur rows (really columns) */
blur_rows (flipped_buffer, buffer, height, width, d);
/* Step 2: blur rows (really columns) */
blur_rows (flipped_buffer, buffer, height, width, d);
/* Step 3: swap rows and columns */
flip_buffer (buffer, flipped_buffer, height, width);
}
/* Step 3: swap rows and columns */
flip_buffer (buffer, flipped_buffer, height, width);
if (flags & GTK_BLUR_X)
{
/* Step 4: blur rows */
blur_rows (buffer, flipped_buffer, width, height, d);
}
/* Step 4: blur rows */
blur_rows (buffer, flipped_buffer, width, height, d);
g_free (flipped_buffer);
}
@@ -227,8 +192,7 @@ _boxblur (guchar *buffer,
*/
void
_gtk_cairo_blur_surface (cairo_surface_t* surface,
double radius_d,
GtkBlurFlags flags)
double radius_d)
{
int radius = radius_d;
@@ -236,12 +200,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE);
g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8);
/* The code doesn't actually do any blurring for radius 1, as it
* ends up with box filter size 1 */
if (radius <= 1)
return;
if ((flags & (GTK_BLUR_X|GTK_BLUR_Y)) == 0)
if (radius == 0)
return;
/* Before we mess with the surface, execute any pending drawing. */
@@ -250,7 +209,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
_boxblur (cairo_image_surface_get_data (surface),
cairo_image_surface_get_stride (surface),
cairo_image_surface_get_height (surface),
radius, flags);
radius);
/* Inform cairo we altered the surface contents. */
cairo_surface_mark_dirty (surface);
+1 -9
View File
@@ -29,16 +29,8 @@
G_BEGIN_DECLS
typedef enum {
GTK_BLUR_NONE = 0,
GTK_BLUR_X = 1<<0,
GTK_BLUR_Y = 1<<1,
GTK_BLUR_REPEAT = 1<<2
} GtkBlurFlags;
void _gtk_cairo_blur_surface (cairo_surface_t *surface,
double radius,
GtkBlurFlags flags);;
double radius);
int _gtk_cairo_blur_compute_pixels (double radius);
G_END_DECLS
+1 -3
View File
@@ -209,9 +209,7 @@ popup_edit (GtkWidget *widget,
focus = editor->priv->a_entry;
}
if (popup == editor->priv->current_popup)
dismiss_current_popup (editor);
else if (popup)
if (popup)
{
dismiss_current_popup (editor);
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor));
+4 -17
View File
@@ -41,7 +41,6 @@ struct _GtkColorSwatchPrivate
guint has_color : 1;
guint use_alpha : 1;
guint selectable : 1;
guint has_menu : 1;
GdkWindow *event_window;
@@ -53,8 +52,7 @@ enum
{
PROP_ZERO,
PROP_RGBA,
PROP_SELECTABLE,
PROP_HAS_MENU
PROP_SELECTABLE
};
enum
@@ -84,7 +82,6 @@ gtk_color_swatch_init (GtkColorSwatch *swatch)
swatch->priv = gtk_color_swatch_get_instance_private (swatch);
swatch->priv->use_alpha = TRUE;
swatch->priv->selectable = TRUE;
swatch->priv->has_menu = TRUE;
gtk_widget_set_can_focus (GTK_WIDGET (swatch), TRUE);
gtk_widget_set_has_window (GTK_WIDGET (swatch), FALSE);
@@ -360,7 +357,7 @@ swatch_key_press (GtkWidget *widget,
event->keyval == GDK_KEY_KP_Enter ||
event->keyval == GDK_KEY_KP_Space)
{
if (swatch->priv->has_color &&
if (swatch->priv->has_color &&
swatch->priv->selectable &&
(gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_SELECTED) == 0)
gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_SELECTED, FALSE);
@@ -520,7 +517,7 @@ tap_action (GtkGestureMultiPress *gesture,
}
else if (button == GDK_BUTTON_SECONDARY)
{
if (swatch->priv->has_color && swatch->priv->has_menu)
if (swatch->priv->has_color)
do_popup (GTK_WIDGET (swatch), button, gtk_get_current_event_time ());
}
}
@@ -578,7 +575,7 @@ swatch_realize (GtkWidget *widget)
gtk_widget_set_window (widget, window);
g_object_ref (window);
swatch->priv->event_window =
swatch->priv->event_window =
gdk_window_new (window,
&attributes, attributes_mask);
gtk_widget_register_window (widget, swatch->priv->event_window);
@@ -644,9 +641,6 @@ swatch_get_property (GObject *object,
case PROP_SELECTABLE:
g_value_set_boolean (value, gtk_color_swatch_get_selectable (swatch));
break;
case PROP_HAS_MENU:
g_value_set_boolean (value, swatch->priv->has_menu);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -669,9 +663,6 @@ swatch_set_property (GObject *object,
case PROP_SELECTABLE:
gtk_color_swatch_set_selectable (swatch, g_value_get_boolean (value));
break;
case PROP_HAS_MENU:
swatch->priv->has_menu = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -737,14 +728,10 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
g_object_class_install_property (object_class, PROP_SELECTABLE,
g_param_spec_boolean ("selectable", P_("Selectable"), P_("Whether the swatch is selectable"),
TRUE, GTK_PARAM_READWRITE));
g_object_class_install_property (object_class, PROP_HAS_MENU,
g_param_spec_boolean ("has-menu", P_("Has Menu"), P_("Whether the swatch should offer customization"),
TRUE, GTK_PARAM_READWRITE));
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_COLOR_SWATCH_ACCESSIBLE);
}
/* Public API {{{1 */
GtkWidget *
+2 -13
View File
@@ -1689,7 +1689,7 @@ gtk_container_add (GtkContainer *container,
{
g_warning ("Attempting to add a widget with type %s to a container of "
"type %s, but the widget is already inside a container of type %s, "
"please remove the widget from its existing container first." ,
"please use gtk_widget_reparent()" ,
g_type_name (G_OBJECT_TYPE (widget)),
g_type_name (G_OBJECT_TYPE (container)),
g_type_name (G_OBJECT_TYPE (parent)));
@@ -1846,19 +1846,8 @@ gtk_container_idle_sizer (GdkFrameClock *clock,
*/
if (container->priv->restyle_pending)
{
GtkBitmask *empty;
gint64 current_time;
empty = _gtk_bitmask_new ();
current_time = g_get_monotonic_time ();
container->priv->restyle_pending = FALSE;
_gtk_style_context_validate (gtk_widget_get_style_context (GTK_WIDGET (container)),
current_time,
0,
empty);
_gtk_bitmask_free (empty);
gtk_css_node_validate (gtk_widget_get_css_node (GTK_WIDGET (container)));
}
/* we may be invoked with a container_resize_queue of NULL, because
+22 -16
View File
@@ -63,6 +63,21 @@ gtk_css_animated_style_get_section (GtkCssStyle *style,
return gtk_css_style_get_section (animated->style, id);
}
static gboolean
gtk_css_animated_style_is_static (GtkCssStyle *style)
{
GtkCssAnimatedStyle *animated = GTK_CSS_ANIMATED_STYLE (style);
GSList *list;
for (list = animated->animations; list; list = list->next)
{
if (!_gtk_style_animation_is_static (list->data, animated->current_time))
return FALSE;
}
return TRUE;
}
static void
gtk_css_animated_style_dispose (GObject *object)
{
@@ -101,6 +116,7 @@ gtk_css_animated_style_class_init (GtkCssAnimatedStyleClass *klass)
style_class->get_value = gtk_css_animated_style_get_value;
style_class->get_section = gtk_css_animated_style_get_section;
style_class->is_static = gtk_css_animated_style_is_static;
}
static void
@@ -410,6 +426,9 @@ gtk_css_animated_style_new (GtkCssStyle *base_style,
gtk_internal_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), NULL);
gtk_internal_return_val_if_fail (previous_style == NULL || GTK_IS_CSS_STYLE (previous_style), NULL);
if (timestamp == 0)
return g_object_ref (base_style);
animations = NULL;
if (previous_style != NULL)
@@ -441,6 +460,9 @@ gtk_css_animated_style_new_advance (GtkCssAnimatedStyle *source,
gtk_internal_return_val_if_fail (GTK_IS_CSS_ANIMATED_STYLE (source), NULL);
gtk_internal_return_val_if_fail (GTK_IS_CSS_STYLE (base), NULL);
if (timestamp == 0)
return g_object_ref (source->style);
animations = NULL;
for (l = source->animations; l; l = l->next)
{
@@ -466,19 +488,3 @@ gtk_css_animated_style_new_advance (GtkCssAnimatedStyle *source,
return GTK_CSS_STYLE (result);
}
gboolean
gtk_css_animated_style_is_static (GtkCssAnimatedStyle *style)
{
GSList *list;
gtk_internal_return_val_if_fail (GTK_IS_CSS_ANIMATED_STYLE (style), TRUE);
for (list = style->animations; list; list = list->next)
{
if (!_gtk_style_animation_is_static (list->data, style->current_time))
return FALSE;
}
return TRUE;
}
-2
View File
@@ -68,8 +68,6 @@ void gtk_css_animated_style_set_animated_value(GtkCssAnimated
GtkCssValue * gtk_css_animated_style_get_intrinsic_value (GtkCssAnimatedStyle *style,
guint id);
gboolean gtk_css_animated_style_is_static (GtkCssAnimatedStyle *style);
G_END_DECLS
#endif /* __GTK_CSS_ANIMATED_STYLE_PRIVATE_H__ */
+2 -6
View File
@@ -47,20 +47,16 @@ gtk_css_value_array_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *result;
GtkCssValue *i_value;
guint i, j;
GtkCssDependencies child_deps;
result = NULL;
for (i = 0; i < value->n_values; i++)
{
i_value = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style, &child_deps);
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
i_value = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style);
if (result == NULL &&
i_value != value->values[i])
+3 -8
View File
@@ -45,25 +45,20 @@ gtk_css_value_bg_size_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *x, *y;
GtkCssDependencies x_deps, y_deps;
if (value->x == NULL && value->y == NULL)
return _gtk_css_value_ref (value);
x_deps = y_deps = 0;
x = y = NULL;
if (value->x)
x = _gtk_css_value_compute (value->x, property_id, provider, style, parent_style, &x_deps);
x = _gtk_css_value_compute (value->x, property_id, provider, style, parent_style);
if (value->y)
y = _gtk_css_value_compute (value->y, property_id, provider, style, parent_style, &y_deps);
*dependencies = _gtk_css_dependencies_union (x_deps, y_deps);
y = _gtk_css_value_compute (value->y, property_id, provider, style, parent_style);
return _gtk_css_bg_size_value_new (value->x ? x : NULL,
value->y ? y : NULL);
+2 -5
View File
@@ -46,11 +46,9 @@ gtk_css_value_border_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *computed;
GtkCssDependencies child_deps;
gboolean changed = FALSE;
guint i;
@@ -61,8 +59,7 @@ gtk_css_value_border_compute (GtkCssValue *value,
{
if (value->values[i])
{
computed->values[i] = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style, &child_deps);
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
computed->values[i] = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style);
changed |= (computed->values[i] != value->values[i]);
}
}
+9 -36
View File
@@ -124,8 +124,7 @@ gtk_css_value_color_get_fallback (guint property_id,
property_id,
provider,
style,
parent_style,
NULL);
parent_style);
default:
if (property_id < GTK_CSS_PROPERTY_N_PROPERTIES)
g_warning ("No fallback color defined for property '%s'",
@@ -138,20 +137,13 @@ GtkCssValue *
_gtk_css_color_value_resolve (GtkCssValue *color,
GtkStyleProviderPrivate *provider,
GtkCssValue *current,
GtkCssDependencies current_deps,
GtkCssDependencies *dependencies,
GSList *cycle_list)
{
GtkCssDependencies unused;
GtkCssValue *value;
g_return_val_if_fail (color != NULL, NULL);
g_return_val_if_fail (provider == NULL || GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL);
if (dependencies == NULL)
dependencies = &unused;
*dependencies = 0;
switch (color->type)
{
case COLOR_TYPE_LITERAL:
@@ -170,7 +162,7 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
if (named == NULL)
return NULL;
value = _gtk_css_color_value_resolve (named, provider, current, current_deps, dependencies, &cycle);
value = _gtk_css_color_value_resolve (named, provider, current, &cycle);
if (value == NULL)
return NULL;
}
@@ -182,12 +174,10 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
GtkHSLA hsla;
GdkRGBA shade;
val = _gtk_css_color_value_resolve (color->sym_col.shade.color, provider, current, current_deps, dependencies, cycle_list);
val = _gtk_css_color_value_resolve (color->sym_col.shade.color, provider, current, cycle_list);
if (val == NULL)
return NULL;
*dependencies = _gtk_css_dependencies_union (*dependencies, 0);
_gtk_hsla_init_from_rgba (&hsla, _gtk_css_rgba_value_get_rgba (val));
_gtk_hsla_shade (&hsla, &hsla, color->sym_col.shade.factor);
@@ -204,11 +194,10 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
GtkCssValue *val;
GdkRGBA alpha;
val = _gtk_css_color_value_resolve (color->sym_col.alpha.color, provider, current, current_deps, dependencies, cycle_list);
val = _gtk_css_color_value_resolve (color->sym_col.alpha.color, provider, current, cycle_list);
if (val == NULL)
return NULL;
*dependencies = _gtk_css_dependencies_union (*dependencies, 0);
alpha = *_gtk_css_rgba_value_get_rgba (val);
alpha.alpha = CLAMP (alpha.alpha * color->sym_col.alpha.factor, 0, 1);
@@ -222,21 +211,19 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
{
GtkCssValue *val;
GdkRGBA color1, color2, res;
GtkCssDependencies dep1, dep2;
val = _gtk_css_color_value_resolve (color->sym_col.mix.color1, provider, current, current_deps, &dep1, cycle_list);
val = _gtk_css_color_value_resolve (color->sym_col.mix.color1, provider, current, cycle_list);
if (val == NULL)
return NULL;
color1 = *_gtk_css_rgba_value_get_rgba (val);
_gtk_css_value_unref (val);
val = _gtk_css_color_value_resolve (color->sym_col.mix.color2, provider, current, current_deps, &dep2, cycle_list);
val = _gtk_css_color_value_resolve (color->sym_col.mix.color2, provider, current, cycle_list);
if (val == NULL)
return NULL;
color2 = *_gtk_css_rgba_value_get_rgba (val);
_gtk_css_value_unref (val);
*dependencies = _gtk_css_dependencies_union (dep1, dep2);
res.red = CLAMP (color1.red + ((color2.red - color1.red) * color->sym_col.mix.factor), 0, 1);
res.green = CLAMP (color1.green + ((color2.green - color1.green) * color->sym_col.mix.factor), 0, 1);
res.blue = CLAMP (color1.blue + ((color2.blue - color1.blue) * color->sym_col.mix.factor), 0, 1);
@@ -262,7 +249,6 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
case COLOR_TYPE_CURRENT_COLOR:
if (current)
{
*dependencies = current_deps;
return _gtk_css_value_ref (current);
}
else
@@ -270,8 +256,6 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
return _gtk_css_color_value_resolve (_gtk_css_style_property_get_initial_value (_gtk_css_style_property_lookup_by_id (GTK_CSS_PROPERTY_COLOR)),
provider,
NULL,
0,
dependencies,
cycle_list);
}
break;
@@ -301,11 +285,9 @@ gtk_css_value_color_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *resolved, *current;
GtkCssDependencies current_deps;
/* The computed value of the currentColor keyword is the computed
* value of the color property. If the currentColor keyword is
@@ -314,27 +296,18 @@ gtk_css_value_color_compute (GtkCssValue *value,
if (property_id == GTK_CSS_PROPERTY_COLOR)
{
if (parent_style)
{
current = gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_COLOR);
current_deps = GTK_CSS_EQUALS_PARENT;
}
current = gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_COLOR);
else
{
current = NULL;
current_deps = 0;
}
current = NULL;
}
else
{
current = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
current_deps = GTK_CSS_DEPENDS_ON_COLOR;
}
resolved = _gtk_css_color_value_resolve (value,
provider,
current,
current_deps,
dependencies,
NULL);
if (resolved == NULL)
-2
View File
@@ -46,8 +46,6 @@ GtkCssValue * _gtk_css_color_value_parse (GtkCssParser *parser)
GtkCssValue * _gtk_css_color_value_resolve (GtkCssValue *color,
GtkStyleProviderPrivate *provider,
GtkCssValue *current,
GtkCssDependencies current_deps,
GtkCssDependencies *dependencies,
GSList *cycle_list);
+3 -6
View File
@@ -41,15 +41,12 @@ gtk_css_value_corner_compute (GtkCssValue *corner,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *x, *y;
GtkCssDependencies x_deps, y_deps;
x = _gtk_css_value_compute (corner->x, property_id, provider, style, parent_style, &x_deps);
y = _gtk_css_value_compute (corner->y, property_id, provider, style, parent_style, &y_deps);
*dependencies = _gtk_css_dependencies_union (x_deps, y_deps);
x = _gtk_css_value_compute (corner->x, property_id, provider, style, parent_style);
y = _gtk_css_value_compute (corner->y, property_id, provider, style, parent_style);
if (x == corner->x && y == corner->y)
{
_gtk_css_value_unref (x);
+1 -2
View File
@@ -54,8 +54,7 @@ gtk_css_value_ease_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
return _gtk_css_value_ref (value);
}
+1 -2
View File
@@ -40,8 +40,7 @@ gtk_css_value_engine_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
return _gtk_css_value_ref (value);
}
+4 -11
View File
@@ -42,8 +42,7 @@ gtk_css_value_enum_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
return _gtk_css_value_ref (value);
}
@@ -165,8 +164,7 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
double font_size;
@@ -197,7 +195,6 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
font_size = _gtk_css_font_size_get_default (provider) * 2;
break;
case GTK_CSS_FONT_SIZE_SMALLER:
*dependencies = GTK_CSS_DEPENDS_ON_PARENT;
if (parent_style)
font_size = _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
else
@@ -206,7 +203,6 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
font_size /= 1.2;
break;
case GTK_CSS_FONT_SIZE_LARGER:
*dependencies = GTK_CSS_DEPENDS_ON_PARENT;
if (parent_style)
font_size = _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
else
@@ -337,7 +333,7 @@ static GtkCssValue font_variant_values[] = {
GtkCssValue *
_gtk_css_font_variant_value_new (PangoVariant font_variant)
{
g_return_val_if_fail ((gint)font_variant < G_N_ELEMENTS (font_variant_values), NULL);
g_return_val_if_fail (font_variant < G_N_ELEMENTS (font_variant_values), NULL);
return _gtk_css_value_ref (&font_variant_values[font_variant]);
}
@@ -376,8 +372,7 @@ gtk_css_value_font_weight_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
PangoWeight new_weight;
int parent_value;
@@ -385,8 +380,6 @@ gtk_css_value_font_weight_compute (GtkCssValue *value,
if (value->value >= 0)
return _gtk_css_value_ref (value);
*dependencies = GTK_CSS_DEPENDS_ON_PARENT;
if (parent_style)
parent_value = gtk_css_style_get_value (parent_style, property_id)->value;
else
+1 -2
View File
@@ -74,8 +74,7 @@ gtk_css_value_icon_theme_compute (GtkCssValue *icon_theme,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssValue *result;
GtkIconTheme *icontheme;
+3 -10
View File
@@ -65,8 +65,7 @@ gtk_css_image_real_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
return g_object_ref (image);
}
@@ -149,23 +148,17 @@ _gtk_css_image_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssDependencies unused;
GtkCssImageClass *klass;
g_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL);
g_return_val_if_fail (GTK_IS_CSS_STYLE (style), NULL);
g_return_val_if_fail (parent_style == NULL || GTK_IS_CSS_STYLE (parent_style), NULL);
if (dependencies == NULL)
dependencies = &unused;
*dependencies = 0;
klass = GTK_CSS_IMAGE_GET_CLASS (image);
return klass->compute (image, property_id, provider, style, parent_style, dependencies);
return klass->compute (image, property_id, provider, style, parent_style);
}
GtkCssImage *
+1 -5
View File
@@ -806,8 +806,7 @@ gtk_css_image_builtin_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageBuiltin *result;
GtkBorderStyle border_style;
@@ -832,9 +831,6 @@ gtk_css_image_builtin_compute (GtkCssImage *image,
result->bg_color = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
result->border_color = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
/* XXX: We also depend on other values, but I guess we cannot express that */
*dependencies = GTK_CSS_DEPENDS_ON_COLOR;
return GTK_CSS_IMAGE (result);
}
+2 -3
View File
@@ -35,8 +35,7 @@ gtk_css_image_gradient_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageGradient *gradient = GTK_CSS_IMAGE_GRADIENT (image);
GtkCssImageGradient *copy;
@@ -46,7 +45,7 @@ gtk_css_image_gradient_compute (GtkCssImage *image,
copy = g_object_new (GTK_TYPE_CSS_IMAGE_GRADIENT, NULL);
copy->gradient = gtk_gradient_ref (gradient->gradient);
copy->pattern = _gtk_gradient_resolve_full (copy->gradient, provider, style, parent_style, dependencies);
copy->pattern = _gtk_gradient_resolve_full (copy->gradient, provider, style, parent_style);
return GTK_CSS_IMAGE (copy);
}
+1 -4
View File
@@ -129,8 +129,7 @@ gtk_css_image_icon_theme_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageIconTheme *icon_theme = GTK_CSS_IMAGE_ICON_THEME (image);
GtkCssImageIconTheme *copy;
@@ -149,8 +148,6 @@ gtk_css_image_icon_theme_compute (GtkCssImage *image,
copy->scale = _gtk_style_provider_private_get_scale (provider);
copy->color = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
*dependencies = GTK_CSS_DEPENDS_ON_COLOR;
return GTK_CSS_IMAGE (copy);
}
+4 -8
View File
@@ -432,8 +432,7 @@ gtk_css_image_linear_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageLinear *linear = GTK_CSS_IMAGE_LINEAR (image);
GtkCssImageLinear *copy;
@@ -442,24 +441,21 @@ gtk_css_image_linear_compute (GtkCssImage *image,
copy = g_object_new (GTK_TYPE_CSS_IMAGE_LINEAR, NULL);
copy->repeating = linear->repeating;
copy->angle = _gtk_css_value_compute (linear->angle, property_id, provider, style, parent_style, dependencies);
copy->angle = _gtk_css_value_compute (linear->angle, property_id, provider, style, parent_style);
g_array_set_size (copy->stops, linear->stops->len);
for (i = 0; i < linear->stops->len; i++)
{
GtkCssImageLinearColorStop *stop, *scopy;
GtkCssDependencies child_deps;
stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i);
scopy = &g_array_index (copy->stops, GtkCssImageLinearColorStop, i);
scopy->color = _gtk_css_value_compute (stop->color, property_id, provider, style, parent_style, &child_deps);
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
scopy->color = _gtk_css_value_compute (stop->color, property_id, provider, style, parent_style);
if (stop->offset)
{
scopy->offset = _gtk_css_value_compute (stop->offset, property_id, provider, style, parent_style, &child_deps);
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
scopy->offset = _gtk_css_value_compute (stop->offset, property_id, provider, style, parent_style);
}
else
{
+2 -4
View File
@@ -59,8 +59,7 @@ struct _GtkCssImageClass
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies);
GtkCssStyle *parent_style);
/* compare two images for equality */
gboolean (* equal) (GtkCssImage *image1,
GtkCssImage *image2);
@@ -96,8 +95,7 @@ GtkCssImage * _gtk_css_image_compute (GtkCssImage *
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies);
GtkCssStyle *parent_style);
gboolean _gtk_css_image_equal (GtkCssImage *image1,
GtkCssImage *image2);
GtkCssImage * _gtk_css_image_transition (GtkCssImage *start,
+2 -4
View File
@@ -97,8 +97,7 @@ gtk_css_image_scaled_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageScaled *scaled = GTK_CSS_IMAGE_SCALED (image);
GtkCssImageScaled *copy;
@@ -122,8 +121,7 @@ gtk_css_image_scaled_compute (GtkCssImage *image,
property_id,
provider,
style,
parent_style,
dependencies);
parent_style);
else
copy->images[i] = g_object_ref (scaled->images[i]);
}
+1 -2
View File
@@ -124,8 +124,7 @@ gtk_css_image_url_compute (GtkCssImage *image,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image);
+2 -3
View File
@@ -38,8 +38,7 @@ gtk_css_value_image_compute (GtkCssValue *value,
guint property_id,
GtkStyleProviderPrivate *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssDependencies *dependencies)
GtkCssStyle *parent_style)
{
GtkCssImage *image, *computed;
@@ -48,7 +47,7 @@ gtk_css_value_image_compute (GtkCssValue *value,
if (image == NULL)
return _gtk_css_value_ref (value);
computed = _gtk_css_image_compute (image, property_id, provider, style, parent_style, dependencies);
computed = _gtk_css_image_compute (image, property_id, provider, style, parent_style);
if (computed == image)
{

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