Commit Graph

81 Commits

Author SHA1 Message Date
aeb5eaa890 Issue #8359: GIMP crashes from "open the font selection dialog" button.
Apparently GDK/Win32 sends the "grab-broken-event" signal before the "clicked"
signal. This has only been changed since GTK4 so far.

Anyway the bottom line is that GimpContainerPopup would process a handled on
"clicked", using the object destroyed when "grab-broken-event" happened as
callback data. The solution is to make sure that the object stays alive long
enough. So I'm changing gimp_editor_add_button() to connect to signals with
g_signal_connect_object() (since all usage of this function was used with
GObject callback data, it was not a problem).

See discussion in !815.

As a side change, gimp_container_popup_dialog_clicked() should emit the
"cancel", not "confirm". This part was taken from MR !815 by Lloyd Konneker.

(cherry picked from commit f77f772f56)
2023-02-09 23:27:17 +01:00
d9349a5730 app: get rid of a few more GtkAction warnings, and a little cleanup
(cherry picked from commit f7007d5161)
2019-07-05 12:36:26 +02:00
417d0dccd7 app: start porting away from GtkAction and friends
Step one: get rid of all those deprecation warnings that make
it hard to see any other warnings:

- add a lot of dummy API to GimpAction, GimpActionGroup, GimpUIManager
  etc. which simply forwards to the deprecated GTK functions, they
  will all go away again later
- rename GimpAction to GimpActionImpl
- add interface GimpAction that is implemented by all action classes,
  creates a common interface and allows to remove some duplicated
  logic from GimpToggleAction and GimpRadioAction, and at the same
  time adds more features

(cherry picked from commit 86e07c16b5)

Merged to gimp-2-10 to keep the diff to master as small as possible
2019-07-02 14:57:45 +02:00
Ell
31b369d09f app, libgimp*, modules: don't use g_type_class_add_private() ...
... and G_TYPE_INSTANCE_GET_PRIVATE()

g_type_class_add_private() and G_TYPE_INSTANCE_GET_PRIVATE() were
deprecated in GLib 2.58.  Instead, use
G_DEFINE_[ABSTRACT_]TYPE_WITH_PRIVATE(), and
G_ADD_PRIVATE[_DYNAMIC](), and the implictly-defined
foo_get_instance_private() functions, all of which are available in
the GLib versions we depend on.

This commit only covers types registered using one of the
G_DEFINE_FOO() macros (i.e., most types), but not types with a
custom registration function, of which we still have a few -- GLib
currently only provides a (non-deprecated) public API for adding a
private struct using the G_DEFINE_FOO() macros.

Note that this commit was 99% auto-generated (because I'm not
*that* crazy :), so if there are any style mismatches... we'll have
to live with them for now.
2018-09-18 14:41:35 -04:00
a88c0ffb93 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:47:19 +02:00
Ell
1253964c80 app: use GimpHighlightableButton for GimpEditor buttons
... instead of plain GimpButton.
2018-03-07 06:18:21 -05:00
0cb3e75f79 app: use a lot of g_clear_object() and g_clear_pointer()
More than 2000 lines of code less in app/, instead of

if (instance->member)
  {
    g_object_unref/g_free/g_whatever (instance->member);
    instance->member = NULL;
  }

we now simply use

g_clear_object/pointer (&instance->member);
2017-07-15 18:42:44 +02:00
d339aef75c app: add icon size auto-guess from monitor resolution.
Current code only guess resolution for a single monitor. Ideally
the widget sizes could be different depending on the window where a
given widget is on. But that's a start.
2017-03-21 17:52:22 +01:00
e29e950ca8 app: make sure signal connections are disconnected later. 2017-03-12 18:36:16 +01:00
26f054e029 app: GimpEditor styling depending on config's icon settings.
Do not update only the icon, but also content and button spacing.
2017-03-11 02:51:59 +01:00
17167594ea app: use the newly added libgimpwidgets icon name APIs 2014-05-07 21:32:09 +02:00
0d2d1c3752 app: port most of app's GUI from stock IDs to icon names
There is still quite some stock ID rendering around, stay tuned...
2014-05-07 15:30:38 +02:00
9ed5b3f45e app: port GimpAction and friends to icon names 2014-05-06 23:47:38 +02:00
aea161c9a5 app: also include <gegl.h> when we include "libgimpwidgets/gimpwidgets.h" 2013-11-01 22:28:18 +01:00
908f727f0a Chain up unconditionally in GObject::constructed()
It's supported since GLib 2.28.
2012-11-12 21:51:22 +01:00
4fbf01baef app: get the help_id from the right action in gimp_editor_add_action_button() 2012-06-12 22:51:32 +02:00
fbd746f95a app: don't rely on gtk_container_remove() to always destroy the child
Instead, either destroy the child instead of removing it, or remove
*and* destroy it in cases where the remove() api on the "parent"
doesn't match GTK+'s parent/child relation (like with all our dock
widgets). We can't rely on remove() to implicitly detstroy, because
there might be arbitrary other code holding references, such as
accessibility modules and whatnot. Most likely fixes unclear crashes
in accessibility code and other crashes we blamed GTK+ for.
2012-02-21 00:36:18 +01:00
6d1b5c4241 app: pull virtual modifier replacement into gimp_get_mod_string()
and remove it from all other places. We only want to have the virtual
modifiers when displaying a modifier string (and in some other cases,
but these are all handled internally by GTK+).
2011-10-06 22:56:05 +02:00
16d4d6fa94 app: replace virtual modifiers before displaying them as GimpEditor tooltip 2011-10-05 19:26:53 +02:00
3e336199b9 app: use gtk_box_new() 2011-09-30 11:29:11 +02:00
27ac2a3c38 app: Make GimpEditor instance members private 2011-04-10 12:12:01 +02:00
202124c438 app: implement GObject::constructed() instead of ::constructor() 2011-01-14 09:38:46 +01:00
b9a7c121a4 app: don't inherit from GtkHBox or GtkVBox
Instead, inherit from GtkBox directly and set the orientation in
init().  Replace more gtk_container_add() by gtk_box_pack_start() in
the reparented classes.
2010-10-30 15:44:46 +02:00
b69eea8cd6 app: implement GObject::dispose() instead of GtkObject::destroy() 2010-10-15 14:08:36 +02:00
eb6bef33e4 Use gtk_widget_set_visible()
In places where the pattern

  if (show)
    gtk_widget_show (widget);
  else
    gtk_widget_hide (widget);

is used, change to

  gtk_widget_set_visible (widget, show);

Also do some other minor cleanups.
2009-10-17 15:07:34 +02:00
efd5018420 gimp_editor_set_box_style(): small optimization
Don't set set icon again if the icon size has not actually changed.
2009-09-03 13:24:30 +02:00
b793146bde Remove redundant call to gtk_toggle_button_set_mode()
No need to call that function on an actual GtkToggleButton, because
they never have check indicators anyway.
2009-08-21 13:52:29 +02:00
c9674b4603 Use the new GtkAction accessors instead of g_object_get()/set() 2009-05-24 22:29:18 +02:00
7d76f25e26 Use gtk_activatable_set_related_action() instead of deprecated
gtk_action_connect_proxy()
2009-05-24 10:38:09 -07:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
dcbe611b8e app/widgets/gimpcontrollerinfo.c app/widgets/gimpcontrollerlist.c
2008-07-23  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpcontrollerinfo.c
	* app/widgets/gimpcontrollerlist.c
	* app/widgets/gimpdasheditor.c
	* app/widgets/gimpdock.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpgrideditor.c
	* app/widgets/gimppdbdialog.c
	* app/widgets/gimppluginaction.c
	* app/widgets/gimpstrokeeditor.c
	* app/widgets/gimptemplateeditor.c
	* libgimpwidgets/gimpcolorprofilecombobox.c: no need to cast the
	return value of g_value_dup_object().


svn path=/trunk/; revision=26290
2008-07-23 07:47:10 +00:00
8088b64c72 app/display/gimpcanvas.c app/widgets/gimpcoloreditor.c
2008-03-30  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpcanvas.c
	* app/widgets/gimpcoloreditor.c
	* app/widgets/gimpcolorframe.c
	* app/widgets/gimpcursorview.c
	* app/widgets/gimpcurveview.c
	* app/widgets/gimpdataeditor.c
	* app/widgets/gimpdock.c
	* app/widgets/gimpdockable.c
	* app/widgets/gimpdockbook.c
	* app/widgets/gimpdockseparator.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimpmenudock.c
	* app/widgets/gimpsamplepointeditor.c
	* app/widgets/gimptoolbox.c: chain up unconditionally in
	GtkWidget::style_set() because there is has a default
	implementation.


svn path=/trunk/; revision=25307
2008-03-29 23:43:39 +00:00
3c5edcacbd add button-relief style property which defaults to NONE.
2008-02-10  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpeditor.c: add button-relief style property which
	defaults to NONE.


svn path=/trunk/; revision=24853
2008-02-10 20:50:21 +00:00
5533bec51e Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/widgets/gimpeditor.c: draw editor buttons without
	relief, see bug #515621.

svn path=/trunk/; revision=24852
2008-02-10 20:38:15 +00:00
dc5d601675 use gtk_widget_set_tooltip_text() from gimp_help_set_help() and added
2007-11-22  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimphelpui.[ch]: use
	gtk_widget_set_tooltip_text() from gimp_help_set_help() and added
	gimp_help_set_help_data_with_markup() for the cases where markup
	is needed.

	* libgimpwidgets/gimpwidgets.def: updated.

	* app/tools/gimpselectionoptions.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpwidgets-utils.c: use the new function where markup
	in tooltips is being used.

	* app/widgets/gimptoolbox-color-area.c: no need to escape the
	ampersand any longer.

svn path=/trunk/; revision=24217
2007-11-22 13:59:06 +00:00
a446f3d7fb use the new tooltip API instead of the old deprecated one. Removed
2007-11-09  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimphelpui.[ch]: use the new tooltip API instead
	of the old deprecated one. Removed _gimp_help_init(). Remember
	whether tooltips are enabled or not in a local variable that can
	only be altered at startup time and not after. The API now expects
	markup instead of plain text which might cause warnings and
	perhaps needs to be changed.

	* libgimpwidgets/gimpwidgets-private.c: don't call _gimp_help_init().

	* app/config/gimpguiconfig.c: made show-tooltips a
	GIMP_CONFIG_PARAM_RESTART property.

	* app/widgets/gimptoolbox-color-area.c: don't add the tooltip here...

	* app/widgets/gimptoolbox.c: ...but here (as for all other
	indicators). Also escape '&' properly because we now use markup.

	* app/tools/gimpselectionoptions.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpwidgets-utils.c: print modifiers and
	shortcuts in bold instead of in ().

	* app/widgets/gimpcontainertreeview.c: show tooltips on rows if
	gimp_viewable_get_description() returns a tip.

	* app/dialogs/preferences-dialog.c
	* plug-ins/jpeg/jpeg-save.c
	* plug-ins/MapObject/mapobject_ui.c
	* plug-ins/Lighting/lighting_ui.c
	* plug-ins/common/animationplay.c
	* plug-ins/common/warp.c: no need to add event boxes just to have
	tooltips, the new ones work on all widgets.


svn path=/trunk/; revision=24093
2007-11-09 11:17:00 +00:00
b3d3f4f291 app/widgets/gimpcontrollers.c app/widgets/gimpdevices.c
2007-05-22  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpcontrollers.c
	* app/widgets/gimpdevices.c
	* app/widgets/gimpdevicestatus.c
	* app/widgets/gimpeditor.c: allocate structs using GSlice.

svn path=/trunk/; revision=22575
2007-05-22 16:18:32 +00:00
41237259c9 In all files, changed the standard copyright notice to say "GIMP - The GNU
2006-12-09  Sven Neumann  <sven@gimp.org>

        * In all files, changed the standard copyright notice to say
        "GIMP - The GNU Image Manipulation Program".
2006-12-09 21:33:38 +00:00
6feb7bb82c depend on glib >= 2.10.2, gtk+ >= 2.8.18 and pango >= 1.12.3. Define
2006-07-05  Michael Natterer  <mitch@gimp.org>

	* configure.in: depend on glib >= 2.10.2, gtk+ >= 2.8.18
	and pango >= 1.12.3. Define FOO_DISABLE_DEPRECATED also for
	glib 2.12, gtk+ 2.10 and pango 2.14

	* app/sanity.c
	* app/gui/gui.c: adjusted sanity checks accordingly.

	* app/dialogs/stroke-dialog.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpuimanager.c
	* libgimpwidgets/gimphelpui.c
	* libgimpwidgets/gimpmemsizeentry.c
	* plug-ins/helpbrowser/gimpthrobber.c: replace gtk_object_sink()
	by combinations of g_object_ref_sink() and g_object_unref().
2006-07-05 13:40:47 +00:00
10c8c709d3 simply use gimp_button_new() instead of g_object_new(). Don't set the
2006-06-10  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpeditor.c (gimp_editor_add_action_button): simply
	use gimp_button_new() instead of g_object_new(). Don't set the
	"use-stock" property and reordered some code. Keeps GtkButton from
	thinking that is has constructed the button's child itself and
	thus makes the function more rubust against changes in GtkButton.
2006-06-10 17:48:33 +00:00
6ebcf700d1 removed erroneous semicolon after G_DEFINE_TYPE macros.
2006-05-15  Sven Neumann  <sven@gimp.org>

	* app/*/*.c:
	* lib*/*.c: removed erroneous semicolon after G_DEFINE_TYPE macros.
2006-05-15 09:46:31 +00:00
049872b361 app/*.[ch] converted tabs to spaces.
2006-04-12  Sven Neumann  <sven@gimp.org>

	* app/*.[ch]
	* app/*/*.[ch]: converted tabs to spaces.
2006-04-12 12:49:29 +00:00
e1ceed5147 define GIMP_PARAM_STATIC_STRINGS which is G_PARAM_STATIC_NAME|NICK|BLURB.
2006-01-18  Michael Natterer  <mitch@gimp.org>

	* app/config/config-types.c: define GIMP_PARAM_STATIC_STRINGS
	which is G_PARAM_STATIC_NAME|NICK|BLURB. Also define
	GIMP_PARAM_READABLE, _WRITABLE and _READWRITE which include
	GIMP_PARAM_STATIC_STRINGS.

	* app/*/*.c: use them for all object properties so their
	strings are not copied.
2006-01-18 20:29:40 +00:00
61df53ec54 port to G_DEFINE_TYPE() and friends. Some related cleanup.
2005-12-19  Michael Natterer  <mitch@gimp.org>

	* app/widgets/*.c: port to G_DEFINE_TYPE() and friends. Some
	related cleanup.
2005-12-19 22:37:49 +00:00
534fd971c4 set the "use-stock" property on the created buttons so changes of the
2005-11-30  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpeditor.c (gimp_editor_add_button)
	(gimp_editor_add_action_button): set the "use-stock" property on
	the created buttons so changes of the underlying action's name
	don't affect change the button's icon to a string.
2005-11-29 23:02:20 +00:00
a14a317722 removed "<>" around modifiers.
2005-09-14  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpwidgets-utils.c (gimp_get_mod_name_*): removed
	"<>" around modifiers.

	* app/tools/gimpbucketfilloptions.c
	* app/tools/gimpcolorpickeroptions.c
	* app/tools/gimpconvolvetool.c
	* app/tools/gimpcropoptions.c
	* app/tools/gimpdodgeburntool.c
	* app/tools/gimperasertool.c
	* app/tools/gimpflipoptions.c
	* app/tools/gimpimagemaptool.c
	* app/tools/gimpmagnifyoptions.c
	* app/tools/gimpmoveoptions.c
	* app/tools/gimpselectionoptions.c
	* app/tools/gimptransformoptions.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpthumbbox.c: added "()" around the whole modifier
	string where appropriate.

	* app/widgets/gimptoolbox.c (gimp_toolbox_button_accel_changed):
	use gimp_get_mod_string() instead of homebrewn variant of the same
	code.

	* app/widgets/gimpcontrollerkeyboard.c: replaced tons of static
	translatable strings containing modifiers by generated ones using
	gimp_get_mod_string() (traded for some more memory consumption).
2005-09-13 22:17:05 +00:00
32d875d070 app/dialogs/module-dialog.c app/dialogs/palette-import-dialog.c
2005-08-03  Michael Natterer  <mitch@gimp.org>

	* app/dialogs/module-dialog.c
	* app/dialogs/palette-import-dialog.c
	* app/gui/gui.c
	* app/tools/gimpcurvestool.c
	* app/tools/gimpimagemaptool.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpvectortool.c
	* app/widgets/gimpaction.c
	* app/widgets/gimpcoloreditor.c
	* app/widgets/gimpcontainerbox.c
	* app/widgets/gimpcontainertreeview.c
	* app/widgets/gimpcursorview.c
	* app/widgets/gimpdnd.c
	* app/widgets/gimpdock.c
	* app/widgets/gimpdockbook.c
	* app/widgets/gimpdrawabletreeview.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpenumaction.c
	* app/widgets/gimperrordialog.c
	* app/widgets/gimpfileprocview.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimpmenudock.c
	* app/widgets/gimpmessagebox.c
	* app/widgets/gimpmessagedialog.c
	* app/widgets/gimppluginaction.c
	* app/widgets/gimpprogressdialog.c
	* app/widgets/gimpsamplepointeditor.c
	* app/widgets/gimpstringaction.c
	* app/widgets/gimptemplateeditor.c
	* app/widgets/gimptoolbox-image-area.c
	* app/widgets/gimptoolbox.c: use canonical names for signals and
	properties.
2005-08-03 09:34:55 +00:00
e09ee5e501 app/widgets/gimpcoloreditor.c app/widgets/gimpcursorview.c
2005-06-05  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpcoloreditor.c
	* app/widgets/gimpcursorview.c
	* app/widgets/gimpdataeditor.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimphistogrameditor.c
	* app/widgets/gimppaletteeditor.c: peek at the default interface to
	get the parent interface. Unconditionally chain up in get_aux_info()
	and set_aux_info() methods.
2005-06-04 22:49:53 +00:00
f173198669 app/widgets/gimpdocked.[ch] moved button-bar API to the GimpDocked
2005-06-05  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpdocked.[ch]
	* app/widgets/gimpeditor.[ch]: moved button-bar API to the
	GimpDocked interface.

	* app/widgets/gimpcontainereditor.c: implement the new interface
	methods and proxy them to the embedded docked.

	* app/actions/dockable-actions.c
	* app/actions/dockable-commands.c: changed accordingly.
2005-06-04 22:32:31 +00:00
5412fac02b app/actions/dockable-actions.c app/actions/dockable-commands.[ch]
2005-06-04  Sven Neumann  <sven@gimp.org>

	* app/actions/dockable-actions.c
	* app/actions/dockable-commands.[ch]
	* app/widgets/gimpeditor.[ch]
	* app/widgets/gimphelp-ids.h
	* menus/dockable-menu.xml.in: allow to show/hide the button-bar in
	GimpEditor. Should be merged into the GimpDocked interface.
2005-06-04 21:00:48 +00:00