Commit Graph

24 Commits

Author SHA1 Message Date
Matthias Clasen
b3ecd29090 Do reference counting on the user_data that is shared between multiple
Thu Jan 29 00:48:47 2004  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_toggle_actions_full):
	* gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): Do reference
	counting on the user_data that is shared between multiple signal handlers,
	to avoid calling the destroy notify multiple times.  (#132447, Adam Hooper)
2004-01-28 23:49:10 +00:00
Matthias Clasen
a18431078a Fix #131869:
Wed Jan 21 23:27:14 2004  Matthias Clasen  <maclas@gmx.de>

	Fix #131869:

	* gtk/gtkaction.c (_gtk_action_emit_activate): Hold
	a reference to the group while emitting the signals.

	* gtk/gtkactiongroup.c (gtk_action_group_init): Use a
	destroy notify which does not only unref, but also resets
	the action_group property of the action.
2004-01-21 22:26:53 +00:00
Matthias Clasen
07d4d314b6 The first part of the fix for #114351 (see also gdk-pixbuf/ChangeLog and
Fri Jan 16 23:59:01 2004  Matthias Clasen  <maclas@gmx.de>

	The first part of the fix for #114351 (see also
	gdk-pixbuf/ChangeLog and po/ChangeLog):

	* gtk/gtkintl.h:
	* gdk-pixbuf/gdk-pixbuf-i18n.h:
	* gdk/gdkintl.h: Define P_() for property blurbs and nicks.

	* gdk/gdkdisplaymanager.c:
	* gdk-pixbuf/gdk-pixbuf.c:
	* modules/input/gtkimcontextxim.c:
	* gtk/*.c:  Mark property blurbs and nicks with P_().

	* po/Makefile.in.in: Add --keyword=P_ to the xgettext
	invocation, since property blurbs and nicks are
	now marked with P_().
2004-01-16 23:10:05 +00:00
Matthias Clasen
6aa252e720 Don't leak name and stock_id. (#131358, Morten Welinder)
Wed Jan 14 21:00:49 2004  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_action_with_accel):
	Don't leak name and stock_id.  (#131358, Morten Welinder)
2004-01-14 20:10:27 +00:00
Jody Goldberg
c73ab06ef5 Adjust to the new connect_proxy signals.
Mon Jan 12 23:40:34 2004  Matthias Clasen  <maclas@gmx.de>

	* tests/testmerge.c: Adjust to the new connect_proxy signals.

	* gtk/gtkuimanager.c
	* gtk/gtkactiongroup.c
	* gtk/gtkaction.c: Move the connect_proxy and disconnect_proxy signals
	from GtkAction to GtkActionGroup and proxy it on GtkUIManager. This
	removes the confusion between the disconnect_/connect_proxy signals
	and the (unrelated) virtual functions of the same name and aligns
	the setup with the pre_/post_activate signals.

2004-01-12  Jody Goldberg <jody@gnome.org>

	* gtk/gtkaction.c (connect_proxy) : only connect activate for menus
	  with no submenus otherwise it looks like we activate every time a
	  submenu opens.

2004-01-10  Jody Goldberg <jody@gnome.org>

	* gtk/gtkuimanager.c (d) : Add a debug macro to quiet the spew.
	s/merge_signals/ui_manager_signals/ for readability.
	(gtk_ui_manager_class_init) : add pre_activate and post_activate
	  signals.
	(cb_proxy_pre_activate) : new.
	(cb_proxy_post_activate) : new.
	(gtk_ui_manager_insert_action_group) : connect the proxies for
	  GtkActionGroup::pre/post_activate
	(gtk_ui_manager_remove_action_group) : disconnect them.

	* gtk/gtkactiongroup.c (gtk_action_group_class_init) : add
	  'sensitive', and 'visible' properties.  Also add pre_activate and
	  post_activate signals to help deal with activations at a higher
	  level (eg GtkUIManager)
	(gtk_action_group_init) : init sensitive and visible
	(gtk_action_group_set_property) : add sensitive and visible
	(gtk_action_group_get_property) : add sensitive and visible
	(gtk_action_group_get_sensitive) : new.
	(gtk_action_group_get_visible) : new.
	(cb_set_action_sensitivity) : new with minor optimization that only
	  signals sensitivity changes if the action could possibly change.
	(cb_set_action_visiblility) : ditto.
	(gtk_action_group_set_sensitive) : new.  walk the actions directly
	  rather than using notify::sensitive because that is simpler, easier
	  to read, and more efficient.
	(gtk_action_group_set_visible) : ditto.
	(gtk_action_group_add_action) : Each action can only be in 1 group,
	  set GtkAction::action_group.
	(gtk_action_group_remove_action) : clear it.
	(gtk_action_group_add_toggle_actions_full) : warning suppression.
	(gtk_action_group_add_radio_actions_full) : warning suppression.
	(_gtk_action_group_emit_pre_activate) : new protected routine for use
	  by GtkAction.
	(_gtk_action_group_emit_post_activate) : ditto.

	* gtk/gtkaction.c (gtk_action_class_init) : add 'action_group' property.
	(gtk_action_init) : initialize it.
	(gtk_action_get_property) : get.
	(gtk_action_set_property) : set it via
	(gtk_action_set_action_group) : new function.
	(gtk_action_sync_sensitivity) : new routine to sync proxy sensitivity
	  with the logical sensitivity (action & group) rather than the simple
	  action::sensitivity.
	(gtk_action_sync_visible) : use gtk_action_is_visible to handle
	  logical visibility (action & group) rather than the simple
	  action::visible.  Use widget show/hide directly.
	(connect_proxy) : handle the custom sensitivity handler.
	  Make the TOOL_BUTTON signals more general and support TOOL_ITEM
	  directly, with special cases for TOOL_BUTTON.  Still not especially
	  good it might be useful to handle label/use_underline by parmspec
	  lookup.  Those are likely to be implemented by custom types, and are
	  assumed to exist in GtkToolItem.
	(disconnect_proxy) : disconnect the new sensitivity handler.
	(_gtk_action_emit_activate) : add pre/post signals.
	(gtk_action_activate) : use logical sensitivity.
	(gtk_action_is_sensitive) : logical sensitivity.
	(gtk_action_get_sensitive) : actual sensitivity.
	(closure_accel_activate) : use logical sensitivity.
2004-01-12 22:45:45 +00:00
Matthias Clasen
bc3d9ffadf Remove the redundant name and stock_id parameters, adjust all callers.
Wed Jan  7 23:03:32 2004  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.h:
	* gtk/gtkactiongroup.c (gtk_action_group_add_action_with_accel):
	Remove the redundant name and stock_id parameters, adjust all callers.
2004-01-07 22:02:02 +00:00
Matthias Clasen
a11e45a1eb Add creation functions for actions.
Wed Jan  7 22:20:20 2004  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkaction.h:
	* gtk/gtkaction.c (gtk_action_new):
	* gtk/gtktoggleaction.h:
	* gtk/gtktoggleaction.c (gtk_toggle_action_new):
	* gtk/gtkradioaction.h:
	* gtk/gtkradioaction.c (gtk_radio_action_new): Add creation
	functions for actions.

	* gtk/gtkactiongroup.c (gtk_action_group_add_actions_full):
	(gtk_action_group_add_toggle_actions_full):
	(gtk_action_group_add_radio_actions_full): and use the
	new functions here.  (#125322, Patch by Jeff Frank)
2004-01-07 21:54:33 +00:00
Jody Goldberg
9acc941959 add visible_horizontal, visible_vertical. (gtk_action_class_init) : here.
2004-01-01  Jody Goldberg <jody@gnome.org>

	* gtk/gtkaction.c (_GtkActionPrivate) : add visible_horizontal,
	  visible_vertical.
	(gtk_action_class_init) : here.
	(gtk_action_init) : here.
	(gtk_action_set_property) : here.
	(gtk_action_get_property) : here.
	(connect_proxy) : and here.

2003-12-30  Jody Goldberg <jody@gnome.org>

	* gtk/gtkactiongroup.c (gtk_action_group_add_action_with_accel) :  new
	  utility routine for use in derived GtkActions with the replicated code
	  from.
	(gtk_action_group_add_actions_full) : here.
	(gtk_action_group_add_toggle_actions_full) : here.
	(gtk_action_group_add_radio_actions_full) : and here.

2003-12-24  Jody Goldberg <jody@gnome.org>

	* gtk/gtkactiongroup.h : Add some const to the char * in
	  GtkActionEntry*.  We're reccomending people pass static strings to
	  them, and not freeing them.  This stems to flood of warnings that
	  result.
	* gtk/gtkactiongroup.c (gtk_action_group_add_actions_full) : change
	  temp vars to const to match above.
	(gtk_action_group_add_toggle_actions_full) : ditto.
	(gtk_action_group_add_radio_actions_full) : ditto.
2004-01-02 23:14:28 +00:00
Matthias Clasen
e902118f0f Pull accelerator key from the stock item if stock_id is given, but
Wed Dec 31 02:05:39 2003  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_actions_full):
	(gtk_action_group_add_toggle_actions_full):
	(gtk_action_group_add_radio_actions_full): Pull accelerator key
	from the stock item if stock_id is given, but accelerator
	not.  (Noticed by Jeff Franks and Jody Goldberg)

	* tests/testmerge.c: Remove the accelerator from the "Open" entry
	to test the above change.
2003-12-31 01:05:57 +00:00
Matthias Clasen
a64ce01213 Don't use first_action without initializing it if n_entries is 0.
Fri Dec 26 23:24:35 2003  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_radio_actions_full):
	Don't use first_action without initializing it if n_entries is 0.
2003-12-26 22:23:50 +00:00
Matthias Clasen
03cd34e13c Add "name" as a construct-only property. (#125475, Murray Cumming)
Sat Oct 25 23:30:13 2003  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_class_init): Add "name"
	as a construct-only property.  (#125475, Murray Cumming)
2003-10-25 21:34:24 +00:00
Matthias Clasen
cf639f4168 Initially activate the JUSTIFY_RIGHT group member to test the fix for
2003-09-22  Matthias Clasen  <maclas@gmx.de>

	* tests/testmerge.c (main): Initially activate the JUSTIFY_RIGHT
	group member to test the fix for #122904.

	* gtk/gtkactiongroup.c (gtk_action_group_add_radio_actions_full):
	Add the action to the group before activating it, otherwise we
	may end up with multiple active group members.  (#122904, Marco
	Pesenti Gritti)
2003-09-22 08:54:23 +00:00
Matthias Clasen
caf380c793 Add value parameter to allow setting the currently selected group member
2003-09-15  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
	(gtk_action_group_add_radio_actions_full): Add value parameter to allow
	setting the currently selected group member before connecting signals.
	(GtkToggleActionEntry): Separate struct for constructing toggle actions,
	including a boolean to initialize the action state before connecting
	signals.
	(gtk_action_group_add_toggle_actions):
	(gtk_action_group_add_toggle_actions_full): New functions to construct
	toggle actions from an array of GtkToggleActionEntries.

	* demos/gtk-demo/appwindow.c:
	* tests/testactions.c:
	* tests/testmerge.c: Adjust to new action group API.

	* gtk/gtk-sections.txt: Add gtk_action_group_add_toggle_actions[_full].
2003-09-15 19:51:55 +00:00
Matthias Clasen
0a163c7fd7 Doc tweaks. 2003-09-04 00:49:37 +00:00
Matthias Clasen
2ece92c8f3 Doc addition.
* gtk/gtkactiongroup.c (gtk_action_group_new): Doc addition.
2003-09-01 23:45:54 +00:00
Matthias Clasen
0a49f658c5 Add some docs.
2003-08-31  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c: Add some docs.

	* gtk/gtkuimanager.[hc]: Get rid of the remove_widget signal. It
	wasn't emitted anyway.
2003-08-30 22:26:32 +00:00
Matthias Clasen
87248d53a2 Actually group the actions together rather than putting each in its own
2003-08-29  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_radio_actions_full): Actually group the actions
	together rather than putting each in its own group.
2003-08-29 20:21:01 +00:00
Søren Sandmann Pedersen
9542740711 Forgot to actually commit this file 2003-08-29 19:28:44 +00:00
Matthias Clasen
cbc20c4dde Change the XML format: <Root> element is replaced by <ui>, <menu> element
2003-08-28  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkuimanager.c: Change the XML format:
	<Root> element is replaced by <ui>,
	<menu> element is replaced by <menubar>,
	<submenu> element is replaced by <menu>,
	<dockitem> element is replaced by <toolbar>,
	<popups> element is gone,
	verb attribute is replaced by action,
	name defaults to action or the element name.

	* gtk/gtkactiongroup.[hc]: Replace GtkActionGroupEntry by GtkActionEntry
	and GtkRadioActionEntry. GtkActionEntry is simplified by removing
	the user_data, entry_type and extra_data fields, GtkRadioActionEntry is
	further simplified by removing the callback. The user_data can now be
	specified as an argument to gtk_action_group_add_actions(). There is
	a new method gtk_action_group_add_radio_actions(), which is similar
	to gtk_action_group_add_actions(), but takes GtkRadioActionEntrys
	and a callback parameter in addition to the user_data. The callback
	is connected to the ::changed signal of the first group member.
	There are _full() variants taking a GDestroyNotify of
	gtk_action_group_add_[radio_]actions().

	* gtk/gtkradioaction.[hc]: Add a ::changed signal which gets emitted
	on every member of the radio group when the active member is changed.
	Add an integer property "value", and a getter for the value of "value"
	on the currently active group member.

	* tests/testactions.c:
	* tests/testmerge.c:
	* tests/merge-[123].ui:
	* demos/gtk-demo/appwindow.c: Adjust to these changes.

	* gtk/gtktoolbar.c (gtk_toolbar_append_element): Trivial doc fix.
2003-08-27 22:22:28 +00:00
Matthias Clasen
3cb958de19 Make the previous commit compile. 2003-08-25 22:56:02 +00:00
Matthias Clasen
04a47f28c2 Remove C99isms. (Morten Welinder)
2003-08-25  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.c (gtk_action_group_add_actions): Remove C99isms. (Morten
	Welinder)
2003-08-25 18:43:14 +00:00
Matthias Clasen
bfa5c5aa4e Hooks for translation of label and tooltip in GtkActionGroupEntries.
2003-08-25  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.[hc] (gtk_action_group_set_translate_func,
	gtk_action_group_set_translation_domain): Hooks for translation of
	label and tooltip in GtkActionGroupEntries.  (#120620)
2003-08-24 23:11:14 +00:00
Matthias Clasen
32c6a944cf Namespace the enum values properly. Sorry about the resize grip trouble,
2003-08-25  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkactiongroup.h (GtkActionGroupEntryType): Namespace the enum
	values properly. Sorry about the resize grip trouble, Owen.  (#120621)

	* gtk/gtkactiongroup.c:
	* demos/gtk-demo/appwindow.c:
	* tests/testmerge.c:
	* tests/testactions.c: Use new GtkActionGroupEntryType enum.
2003-08-24 22:06:52 +00:00
Matthias Clasen
e7e395652c A model-view separation for menus and toolbars, using the EggMenu code by
2003-08-24  Matthias Clasen  <maclas@gmx.de>

	* gtk/gtkaction.[ch]:
	* gtk/gtktoggleaction.[ch]:
	* gtk/gtktoggleactionprivate.h:
	* gtk/gtkradioaction.[ch]:
	* gtk/gtkactiongroup.[ch]:
	* gtk/gtkmenumerge.[ch]: A model-view separation for menus and
	toolbars, using the EggMenu code by James Henstridge.

	* gtk/gtk.h: Include new headers.
	* gtk/Makefile.am: Add new files.

	* tests/testactions.c: Test for actions.
	* tests/testmerge.c: Test for menu merging.
	* tests/merge-[123].ui: Test data for testmerge.
	* tests/Makefile.am: Add testactions and testmerge.

	* demos/gtk-demo/appwindow.c: Use GtkMenuMerge to construct the
	menubar and toolbar.
2003-08-24 19:58:30 +00:00