Commit Graph

35931 Commits

Author SHA1 Message Date
Ryan Lortie
9a6ee36e9c GtkApplication: a new approach to accels
Rework how accels are handled on GtkApplicationWindow.

Instead of having GtkApplication fill the GtkAccelMap which is then used
by GtkApplicationWindow to create a GtkAccelGroup filled with closures
that is then associated with the window, do it directly.

GtkApplication now keeps a list of accels and their actions.
Accelerators on a GtkApplicationWindow ask GtkApplication to execute the
appropriate action.

This saves a fair bit of complexity and memory use (due to not having to
create all those closures and accelmap entries).  The new approach also
supports multiple accels per action (although there is not yet a public
API for it).

This patch (and the ones before) Reviewed and ACK'd by Matthias Clasen.
2013-10-15 09:24:12 -04:00
Ryan Lortie
afa8b0178f GtkMenuTrackerItem: add support for dynamic accels
Add support for pulling the primary accel out of the GtkActionMuxer.

With this change, it is no longer necessary to have the accel=''
attribute hardcoded onto each menu item (and, in fact, it should be left
off if you intend to have support for dynamic accelerator changing).

Specifying accel='' is a good way to force an accelerator not to be
displayed on a menu item.
2013-10-15 09:24:12 -04:00
Ryan Lortie
2074daccf5 GtkMenuTrackerItem: use "action and target" format
Store "action and target" format inside each GtkMenuTrackerItem.  This
makes action invocation more efficient (no hash table lookups or
allocations) and slightly simplifies handling of action namespace.

More importantly, this will be used when we start to get accels from
GtkActionMuxer.
2013-10-15 09:24:11 -04:00
Ryan Lortie
3f8c235593 GtkActionMuxer: store primary accels
Reuse the existing infrastructure in GtkActionMuxer for propagation of
accelerator information: in particular, what accel label ought to appear
on menu items for a particular action and target.

This is a good idea because we want accels to travel along with the
actions that they're tied to and reusing GtkActionMuxer will allow us to
do that without creating another hierarchy of a different class for the
sole purpose of filling in accel labels on menu items.

Doing it this ways also allows those who copy/paste GtkActionMuxer to
insert the accels for themselves.

Add a new method on the GtkActionObserver interface to report changes.

This patch introduces a new concept: "action and target" notation for
actions.  This format looks like so:

  "'target'|app.action"

or for non-targeted actions:

  "|app.action"

and it is used over a number of possible alternative formats for some
good reasons:

 - it's very easy to get a nul-terminated action name out of this format
   when we need it, by using strrchr('|') + 1

 - we can also get the target out of it using g_variant_parse() because
   this function takes a pointer to a 'limit' character that is not
   parsed past: we use the '|' for this

 - it's extremely easy to hash on this format (just use a normal string
   hash) vs. attempting to hash on a string plus a GVariant

A close contender was to use detailed action strings here, but these are
not used for two reasons:

 - it's not possible to easily get the action name or target out of the
   strings without more work than the "action and target" format
   requires

 - we still intend to use detailed action strings on API (since they are
   a lot nicer to look at) but detailed action strings can be given in
   non-canonical forms (eg: 'foo::bar' and 'foo("bar")' are equivalent)
   so we'd have to go through a normalisation step anyway.  Since we're
   doing that already, we may as well convert to a more convenient
   internal format.

This new "action and target" format is going to start appearing in a lot
more places as action descriptions are introduced.

I suspect that nobody is using '|' in their action names, but in case I
am proven wrong, we can always switch to using something more exotic as
a separator character (such as '\x01' or '\xff' or the like).
2013-10-15 09:24:11 -04:00
Ryan Lortie
abcddd3ae0 GtkWindow: change muxer setup with application
Previously, GtkWindow would add the "app" action group to its own
toplevel muxer.

Change the setup so that GtkApplication creates the toplevel muxer and
adds itself to it as "app".  Use this muxer as the parent muxer of any
GtkWindow associated with the application.

This saves a small amount of memory and will allow for accels to be
propagated from the application through to all of the windows.
2013-10-15 09:24:11 -04:00
Ryan Lortie
3f0b9a7574 GtkBuilder: add GtkApplication
Add a GtkApplication (private) field to GtkBuilder
2013-10-15 09:24:11 -04:00
Matthias Clasen
d967266b77 Fix a crash in icon handling
The load_error was freed in two places.
Fix based on a patch in
https://bugzilla.gnome.org/show_bug.cgi?id=709967
2013-10-15 08:04:25 -04:00
Daniel Mustieles
999b5243d5 Updated Spanish translation 2013-10-15 11:12:22 +02:00
Andika Triwidada
b19af93ba3 Updated Indonesian translation 2013-10-15 12:11:34 +07:00
Matthias Clasen
f9c8fefeda Restore accessible names for image-only buttons
With the stock system being deprecated now, we should provide
meaningful accessible names for buttons that are constructed
from icon names or GIcons. This commit reuses the existing
translations.

It is possible that some common icon names are not covered
here because they were not present as stock items. These can
be added to the table later.
2013-10-14 10:37:58 -04:00
Carles Ferrando
cae8a44c38 [l10n] Updated Catalan (Valencian) translation 2013-10-13 22:24:00 +02:00
Gil Forcada
fc61e3ceea [l10n] Update Catalan translation 2013-10-13 22:23:54 +02:00
Friedel Wolff
3488c0fcef Updated translation for Afrikaans (af) 2013-10-13 17:29:13 +02:00
Charles Reiss
4cf5ce2e08 Bug 709939 - monitor reconfiguration while GtkOffscreenWindows
exist triggers crash on quartz. Special case the position update
to ignore the off-screen windows.
2013-10-11 15:53:37 -07:00
Matthias Clasen
259c3c3699 Quell a compiler warning 2013-10-11 16:27:43 -04:00
Philip Chimento
0e4bac872c NULL check on default keymap
Ensure that Quartz's default keymap is not accessed before it is
created.
2013-10-11 11:14:32 -07:00
Hamish Mackenzie
d9cfe40aeb Fix infinite loop in gdkevents.c _gdk_event_queue_find_first 2013-10-11 11:06:23 -07:00
John Ralls
cf66cf906e Ensure src and dest are GdkWindows in _gdk_sythesize_crossing_events
Discovered via a crash because b's (dest's) toplevel was NULL;
ensuring that the dest is actually a GdkWindow or setting b to NULL
prevents that path from being taken.
2013-10-11 10:54:15 -07:00
John Ralls
d0065270ac Fix double-free introduced in f86dc163 2013-10-11 10:54:15 -07:00
William Jon McCann
b33877e173 spinner: don't expand to fill the allocated space
Spinners are essentially animated symbolic icons. We don't really
want them being rendered to arbitrary sizes. Also the current
technique for rendering the activity is not suitable for larger
sizes. Until we have a better technique we should limit the size
to the MENU icon size or exactly twice that size.
2013-10-11 08:38:37 -04:00
Florian Müllner
dd85acbaf1 listbox: Fix keynav_failed() parameter in move_cursor()
The 'direction' parameter to gtk_widget_keynav_failed() is based on
gtk_list_box_move_cursor()'s 'count' parameter. However if the passed
in movement is GTK_MOVEMENT_DISPLAY_LINES, 'count' is modified by
the keynav handling and will always be 0. To avoid messing up the
'direction' parameter, use a local variable for keynav handling and
leave 'count' untouched.

https://bugzilla.gnome.org/show_bug.cgi?id=709687
2013-10-11 13:11:59 +02:00
Murray Cumming
22fe579d37 GMenu docs: Tiny grammar fix 2013-10-11 10:25:24 +02:00
Arash Mousavi
3cbfe2b535 L10N: Updated Persian translations 2013-10-11 09:56:24 +03:30
John Ralls
108c20bd51 Suppress cursor theme unsupported warning when there's no theme. 2013-10-10 15:39:25 -07:00
John Ralls
9e0faf6a38 Implement gtk_drag_begin_with_coordinates () for quartz. 2013-10-10 15:37:27 -07:00
John Ralls
46838a2fe2 Suppress frequent device assertions
Because send crossing event is usually called with a NULL source_device in quartz.
2013-10-10 15:37:27 -07:00
John Ralls
f86dc163b9 Quartz: Set the drag context target list
So that gdk_drag_context_list_targets() actually returns something.
2013-10-10 15:37:27 -07:00
Dan Williams
7d0d90ad62 GtkCellRendererToggle: correct "toggled" signal documentation
Previous commit wrongly identified "active" as containing the new
value.  Instead, applications must determine the new value to
update the model with manually based on the value currently in the
model.
2013-10-10 17:07:42 -05:00
Dan Williams
e869399369 GtkCellRendererToggle: update documentation of 'toggled' signal
Clarify that applications are expected to handle updating the model
from the 'active' property, like GtkCellRendererText does for the
'edited' property.
2013-10-10 15:33:36 -05:00
William Jon McCann
2e53f90e07 search-bar: use menu icon size for the close button 2013-10-10 16:06:49 -04:00
William Jon McCann
f2d229e2ce search-bar: make independent of toolbar styling
Don't use a toolbar as an implementation detail of the search bar
to make styling them differently a bit easier.
2013-10-10 16:06:49 -04:00
Xavier Claessens
d5c36c62ed GtkSearchBar: replace incomplete example with a real one
https://bugzilla.gnome.org/show_bug.cgi?id=709745
2013-10-10 14:48:13 -04:00
Xavier Claessens
8e9dd8c3aa Add example app for GtkSearchBar
https://bugzilla.gnome.org/show_bug.cgi?id=709745
2013-10-10 14:48:12 -04:00
Xavier Claessens
f979c3d7a2 GtkMenu: Document that gtk_widget_insert_action_group() can be used 2013-10-10 14:07:41 -04:00
Gabor Kelemen
3d6b3a3aae Updated Hungarian translation 2013-10-10 14:55:21 +02:00
Jasper St. Pierre
81538d492e revealer: Use the same transition animation as GtkStack 2013-10-09 18:29:41 -04:00
Jasper St. Pierre
ee8b3efbcf stack: Remove some confusing whitespace 2013-10-09 18:29:41 -04:00
Jasper St. Pierre
ddb4034e8e Fix GI warnings 2013-10-09 14:19:54 -04:00
David King
5f61183158 stack: Warn when setting a visible child which is not in the stack
https://bugzilla.gnome.org/show_bug.cgi?id=709613
2013-10-08 10:55:29 +01:00
Matthias Clasen
05907afc1c Add various tests for stock widgets
This test demonstrates that various deprecated ways
to construct buttons and menuitems still work as they
are supposed to, including always-show-image functionality.
2013-10-07 18:19:16 -04:00
Matthias Clasen
1e1c1556f6 Another forgotten a11y header 2013-10-07 16:43:36 -04:00
William Jon McCann
9fc3e59673 range: start autoscrolling near the edges of ranges
If a range goes all the way to the edge of the screen then we don't
have any way to activate autoscrolling. By adding a small region
at the ends of the range we can handle this case. This is the same
approach used in treeviews.
2013-10-07 16:38:49 -04:00
Jasper St. Pierre
0280ef3413 Make gtk-demo use the newer app icon 2013-10-07 16:30:33 -04:00
Matthias Clasen
1f4c60256f Install flowbox a11y headers
Pointed out by Jasper St. Pierre.
2013-10-07 16:29:51 -04:00
Piotr Drąg
bf400597cf Updated POTFILES.in 2013-10-07 22:22:01 +02:00
Jasper St. Pierre
d7417580b7 broadway: Don't bother memdup-ing
If we're going to run off the end due to an invalid message,
we're going to run off the end. We'll protect this by doing
proper bounds checking in the future, but the malloc gives
us nothing for now.
2013-10-07 16:19:01 -04:00
Jasper St. Pierre
0d0ff40d2f broadway: Use a binary protocol to send to the server
This makes the protocol easier to inspect over the wire and makes all
commands fixed-length.
2013-10-07 16:19:01 -04:00
Jasper St. Pierre
eb1ab0dac2 broadway: Remove authentication support 2013-10-07 16:19:01 -04:00
Jasper St. Pierre
f2e30144f8 broadway: Remove support for old browsers
Require binary array buffers and modern WebSocket protocol support.
2013-10-07 16:19:01 -04:00
Khaled Hosny
d61bcf13d3 Update Arabic translation 2013-10-07 17:07:13 +02:00