summaryrefslogtreecommitdiff
path: root/gtk/gtkmenutrackeritem.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename GtkActionMuxer's private headerEmmanuele Bassi2018-02-021-3/+1
| | | | Follow the naming policy for private headers.
* Some more interningMatthias Clasen2017-11-181-1/+2
| | | | This avoids more strdups at startup.
* menusectionbox: add support for "text-direction" attributeChristian Hergert2016-10-131-0/+10
| | | | | | | | | | | This allows the use of a "text-direction" hint set to one of "none", "rtl", or "ltr" to enforce the text direction of a "horizontal-buttons" display-hint. This is useful when a menu has buttons that map to physical space in the UI and therefore must match the application widgetry. https://bugzilla.gnome.org/show_bug.cgi?id=772775
* Better debug messages for actionsMatthias Clasen2016-03-111-14/+15
| | | | | Unify the debug messages between actionhelper and menutracker, and add some more context to some of them.
* GtkMenuTracker: add hidden-when='macos-menubar'Ryan Lortie2014-12-221-0/+8
| | | | | | | | | | | | | | | | Provide a mechanism for hiding the "Quit", "About" and "Preferences" menu items from the normal places in a traditional menubar layout (in the File and Edit menus) when the menu is being rendered in the Mac OS menubar. These items can already be found in the application menu. With this feature, applications can now define a single menu to use in all 'traditional' scenarios. Use this new attribute in Bloatpad. https://bugzilla.gnome.org/show_bug.cgi?id=741610
* GtkMenuTracker: one more visibility tweakRyan Lortie2014-12-141-2/+1
| | | | | | | | | | | | | | | On creation, we call action_removed() in case the action was missing from the start. Because we just created the action, 'can_activate' will always be FALSE here and this function will therefore always do nothing. We do want the visibility state to be updated though, for the case where the action is missing but the item should still be visible from the start. Update the visibility directly instead of trying to call action_removed(). https://bugzilla.gnome.org/show_bug.cgi?id=735122
* GtkMenuTrackerItem: fix submenu visibility flagRyan Lortie2014-12-141-1/+4
| | | | | | | | | | | | | | | | | We were only properly setting the "is-visible" flag to TRUE for menu items with associated actions and not (for example) on submenus. This was fine because the code for building GtkMenus from models (correctly) assumed that submenus should always be visible and never checked the property. This is not true for the Mac OS code, which actually checked the property and found it to be false for submenus. Initialise the property to TRUE so that we get the correct value reported for items that don't have actions. https://bugzilla.gnome.org/show_bug.cgi?id=735122
* GtkMenuTrackerItem: introduce action debuggingRyan Lortie2014-08-031-2/+32
| | | | | | Add some action debugging output for GtkMenuTrackerItem as well... https://bugzilla.gnome.org/show_bug.cgi?id=733965
* GtkMenuTrackerItem: Plug a memory leakMatthias Clasen2014-06-281-2/+3
| | | | | gtk_menu_tracker_get_[verb_]icon both return a reference, so don't use g_value_set_object, which adds another one.
* GtkMenuTrackerItem: Add support for display-hintMatthias Clasen2014-04-281-0/+10
| | | | This commit adds a getter for the display-hint attribute.
* GtkMenuTrackerItem: Add support for verb-iconsMatthias Clasen2014-04-281-0/+28
| | | | | | | | When rendering iconic sections, we want to use icons for verbs, and we want to differentiate these in the menu model, to keep the icon attribute reserved for nouns. https://bugzilla.gnome.org/show_bug.cgi?id=727477
* GtkMenuTracker: don't specialise "submenu" linkRyan Lortie2014-04-281-11/+7
| | | | | | | | | We have some API in GtkMenuTracker and GtkMenuTrackerItem that is specifically designed to deal with submenus. Generalise these APIs to take a 'link_name' parameter that we always give as G_MENU_SUBMENU for now. In the future, this will allow creating trackers for other types of links, such as sections.
* GtkMenuTracker: make "is-visible" a propertyRyan Lortie2014-04-281-9/+24
| | | | | | Make this a property just like all of the other things and make the APIs for accessing it non-private (but add a note that they are not intended to be used).
* GtkMenuTracker: remove "visible" propertyRyan Lortie2014-04-281-12/+0
| | | | | This is in conflict with the "is-visible" pseudo-property which is about to be promoted to being an actual property.
* docs: use proper apostropheWilliam Jon McCann2014-02-071-2/+2
| | | | https://wiki.gnome.org/Design/OS/Typography
* docs: mark gtkdoc blocks as private for internal only APIWilliam Jon McCann2014-01-211-4/+4
|
* docs: avoid ambiguous return tagsWilliam Jon McCann2014-01-211-2/+2
|
* GtkMenuTracker: add 'special' itemsRyan Lortie2014-01-171-0/+10
| | | | | | | | | | Allow the possibility for items to be marked with a special attribute and expose this via GtkTrackerMenuItem. For internal use only. We will use this to implement the special 'Hide', 'Hide Others' and 'Show All' items and the 'Services' submenu in the Mac OS application menu. https://bugzilla.gnome.org/show_bug.cgi?id=720552
* Changed obsolete FSF portal addresses to web addressAndika Triwidada2014-01-121-3/+1
| | | | Fixed https://bugzilla.gnome.org/show_bug.cgi?id=721530
* GtkMenuTrackerItem: add an internal 'visible' flagRyan Lortie2014-01-081-0/+90
| | | | | | | | | | | | | Add an internal API for checking if a GtkMenuTrackerItem is visible, along with a signal for reporting changes in that flag. The item will become invisible in situations according to the new hidden-when='' attribute, which can be set to 'action-disabled' or 'action-missing'. This new flag doesn't actually do anything yet, and none of the consumers of GtkMenuTracker do anything with it (nor should they). A followup patch will address the issue. https://bugzilla.gnome.org/show_bug.cgi?id=688421
* GtkMenuTracker: rework action removal a bitRyan Lortie2014-01-081-15/+15
| | | | | | | | Refactor the code in the action observer remove function in order to make way for the (efficient) handling of hiding of the item in the case that hidden-when='' is given. https://bugzilla.gnome.org/show_bug.cgi?id=688421
* GtkMenuTrackerItem: small logic tweakRyan Lortie2014-01-081-0/+2
| | | | | | | | | | | | | | | | Strictly speaking, can_activate should always be set back to FALSE when the action disappears from the muxer (since we can't activate it anymore) but we forgot to do that. This 'bug' could never cause a problem because 'can_activate' is never directly queried for anything at all and the item would get marked insensitive anyway. As soon as the action was re-added, can_activate would be recalculated based on the new action before anything else could happen. All the same, this should be cleared here. https://bugzilla.gnome.org/show_bug.cgi?id=688421
* GtkMenuTrackerItem: add support for dynamic accelsRyan Lortie2013-10-151-3/+24
| | | | | | | | | | | 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.
* GtkMenuTrackerItem: use "action and target" formatRyan Lortie2013-10-151-25/+19
| | | | | | | | | 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.
* gtkmenutrackeritem: Simplify the submenu opening APIJasper St. Pierre2013-05-131-11/+16
| | | | | | Instead of making clients inspect the submenu action and decide what to do based upon that, always request the submenu open and let the tracker decide what to do.
* Add some usage docs for the new private copy/paste APIsJasper St. Pierre2013-05-131-0/+52
|
* add GtkMenuTrackerItemRyan Lortie2013-05-131-0/+731
Add a new class, GtkMenuTrackerItem that represents a menu item, to be used with GtkMenuTracker. GtkMenuTracker's insert callback now works in terms of this new type (instead of passing reference to the model and an index to the item). GtkMenuShell now handles all of the binding tasks internally, mostly through the use of property bindings. Having bindings for the label and visibility attributes, in partiular, will help with supporting upcoming extensions to GMenuModel. GtkModelMenu has been reduced to a helper class that has nothing to do with GMenuModel. It represents something closer to an "ideal" API for GtkMenuItem if we didn't have compatibility concerns (eg: not emitting "activate" when setting toggle state, no separate subclasses per menu item type, supporting icons, etc.) Improvements to GtkMenuItem could eventually shrink the size of this class or remove the need for it entirely. Some GtkActionHelper functionality has been duplicated in GtkMenuTracker, which is suboptimal. The duplication exists so that other codebases (such as Unity and gnome-shell) can reuse the GtkMenuTracker code, whereas GtkActionHelper is very much tied to GtkWidget. Supporting binding arbitrary GtkWidgets to actions vs. supporting the full range of GMenuModel features for menu items turns out to be two overlapping but not entirely similar problems. Some of the duplication (such as roles) can be removed from GtkActionHelper once Gtk's internal Mac OS menubar support is ported to GtkMenuTracker. The intent to reuse the code outside of Gtk is also the reason for the unusual treatment of the enum type introduced in this comment. This adds no new "public" API to the Gtk library, other than types that we cannot make private due to GType limitations.