Commit Graph

166 Commits

Author SHA1 Message Date
7ea2ca26ff Issue #2495: different code for Windows and Linux on duplicate devices.
After discussing with Mitch, it turn out commit 717c183a3e was fixing
(or rather working around) actual issues of broken device/usb stack
issues on Linux, as expected.
Nevertheless on Windows, this broke in turn many tablets (see commit
ce24e16083). Therefore we do a very ugly #ifdef to bail from duplicate
devices on Windows whereas we continue on Linux. This fix and difference
of behavior is completely empirical, rather than based on actual good
logics, so that's quite annoying, but well… not much choice here.

Also note that since we had no report of breakage on other OSes (such as
macOS/BSD), at least that I know of, I let them with the Linux code
path.

(cherry picked from commit 74a7a5d3e2)
2018-12-19 16:23:16 +01:00
96d67fd1b2 Issue #2495: many tablets broken by GIMP 2.10.8.
We had many reports of tablets from various brands (Huion, Gaomon,
XP-Pen…) broken in the last release (though working fine when
downgrading to 2.10.6). Latest Huion drivers seem to fix the issue
(according to at least one report), but this is not the case for other
tablets.

Though unable to test myself, provided stderr logs indicate that we hit
the case when 2 devices with the same name are registered. Therefore
this commit is basically reverting commit 717c183a3e (though keeping and
completing the comments). I don't think there is an ultimate solution
here but with this regression, experience shows us there seem to be a
lot more breakage when overwriting the device with newer occurences (at
least on Windows). It is unclear though if commit 717c183a3e was also
supposed to fix another case actually encountered. If so, we will need
to get an even more advanced solution.

(cherry picked from commit ce24e16083)
2018-12-07 00:51:13 +01:00
70611cb06a app: didn't push my latest version of the previous fix 2018-10-13 17:35:53 +02:00
130443a059 Issue #2210 - GIMP crashes on startup if usb mouse is present
In GimpDeviceInfo, make sure that the info->axes and info->keys arrays
always have info->n_axes and info->n_keys members. Also sync axes and
keys between GdkDevice and GimpDeviceInfo more often, and some
cleanup.

(cherry picked from commit 7adb6c26e5)
2018-10-12 20:18:23 +02:00
7d9f79427f app: make GimpDeviceInfo more rubust against broken device listings
gimp_device_info_set_device(): don't just bail out if a device with
the same name is added again, instead, simply continue and overwrite
the info's old device with the new one.

NOTE that this only happens if something is wrong on the USB or udev
or libinput or whatever side and the same device is present multiple
times. The only "safe" thing is to assume that devices listed earlier
are dead and dangling entities and that the last registered device is
the one actually delivering events.

(cherry picked from commit 717c183a3e)
2018-08-20 20:06:36 +02:00
a88c0ffb93 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:47:19 +02:00
8e12d8998d app: don't g_return_if_fail() in gimp_device_info_set_device()
when the GimpDeviceInfo already has a device. This is not a programming
error that should trigger a bug report popup, it's something else about
non-uniqueness of device names, or whatever. Simply g_printerr() a more
useful message that can help to debug this and bail out.

(cherry picked from commit f06d0485e6)
2018-06-17 15:20:43 +02:00
2f629072f1 Bug 787919 - Tool options are lost when switching device
GimpDeviceInfo is the only way to store per-device settings like
color, brush etc. It used to be derived from GimpContext and therefore
limited to the context's properties, causing everything else (all
tool-individual options) to be lost on device change.

Derive it from GimpToolPreset instead, so it's capable of storing
arbitrary tool options.

Adapt things to the new class hierarchy and add a bunch of signal
handlers that make sure the active device's GimpDeviceInfo is updated
properly when the tool changes. Also change device switching
accordingly.

Change GimpDeviceStatus to only show the stuff that is relevant to
each device's tool.

And various small changes to make things work properly...
2018-05-16 02:09:19 +02:00
539927ebfa app: replace all g_assert() by the newly added gimp_assert()
which is just a #define to g_assert for now, but can now easily be
turned into something that does some nicer debugging using our new
stack trace infrastructure. This commit also reverts all constructed()
functions to use assert again.
2018-02-11 22:23:10 +01: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
dda54c1df8 Deprecate stock items for good and change all icon defines to GIMP_ICON_*
Try to sort all GIMP_ICON_* defines into FDO categories like in
https://specifications.freedesktop.org/icon-naming-spec/latest/ar01s04.html

Add defines for all icons we override, rename some icons to their FDO
standard names, and mark the ones we duplicate with a comment so we
don't forget to rename those to standard names in 3.0.
2017-03-05 16:01:59 +01:00
47ef3be145 Initialize GValues with G_VALUE_INIT instead of { 0, } 2016-03-26 15:59:26 +01:00
e5b6806fe2 app: port tons of files to the new GIMP_CONFIG_PROP_FOO() macros
and remove lots of labels from calls to gimp_prop_foo_new(). Also
had to manually remove some unwanted labels that are now added
automatically, fixes bug #761880.
2016-02-11 23:46:24 +01:00
23037b5230 app: convert all stock IDs kept around by the core by icon names
Particularly GimpViewable's stock_id. Make sure old config files
containing stock IDs are still properly parsed.
2014-05-07 01:01:56 +02:00
4e340b613b Bug 688715 - Unconfigured eraser should be set to eraser tool
I don't know what I tested before, but it didn't work. This patch does
the magic in two places, one of which I missed.
2012-11-23 01:17:52 +01:00
908f727f0a Chain up unconditionally in GObject::constructed()
It's supported since GLib 2.28.
2012-11-12 21:51:22 +01:00
7610e299ae Use GimpValueArray and GimpParamSpecValueArray
instead of the deprecated stuff from GLib.
2012-05-04 00:51:50 +02:00
867da8f293 app: add gimp_context_get_foreground,background_pixel()
which takes a Babl format to convert from/to.
Include <gegl.h> in a million places.
2012-05-02 17:50:41 +02:00
a1712a0ec7 app: emit "changed" when GimpDeviceInfo's device gets (un)set 2011-02-28 16:08:12 +01:00
012eb1dd93 app: zero the reallocated keys and axes arrays in GimpDeviceInfo 2011-02-06 11:20:07 +01:00
202124c438 app: implement GObject::constructed() instead of ::constructor() 2011-01-14 09:38:46 +01:00
5caee48645 app: run all input axes through gimp_device_info_map_axis()
and let that function alone worry about whether there actually is a
curve for that axis.
2010-12-20 20:00:47 +01:00
9c98b0b804 app: sort present devices to the beginning of the device list
and make sure the core pointer is always first in the list.
2010-12-09 22:02:24 +01:00
8bc0e569ec app: use gimp_object_name_collate() when sorting device names 2010-12-09 21:45:04 +01:00
d91a1d5b6c app: don't call g_object_set_data() on a NULL object 2010-12-09 20:55:53 +01:00
6429c3de1b app: #undef GSEAL_ENABLE to build against the gtk-2-22 branch
GDK structs and objects have been sealed in gtk-2-22, but we can't
use the newly introduced accessors yet.
2010-05-30 17:19:47 +02:00
5f0255e269 Add GIMP_STOCK_INPUT_DEVICE icons and use them for the devices dialog
From icon masta Jimmac.
2010-02-19 21:25:24 +01:00
53ac78a4a0 app: register the pressure curve are sreialibable property
so it is actually saved to devicerc.
2010-02-18 21:35:45 +01:00
7a1b77fb07 app: gimp_device_info_map_axis(): "value" is a double, not a boolean 2010-02-16 19:29:37 +01:00
2a92f57577 app: actually use the device's pressure curve to map the pressure axis
unfortunately i have no way of testing this, so please test...
2010-02-16 13:27:46 +01:00
6932a6d011 app: add gimp_device_info_has_cursor() as replacement for GdkDevice.has_cursor 2010-02-16 12:11:22 +01:00
2da0529ef4 app: add a pressure curve
but keep the API general so all axes can have curves.
2010-02-15 23:06:19 +01:00
0ce37c500e app: allow unplugging devices in GimpDeviceInfo
gimp_device_info_set_device(): support setting the device to NULL
and copy all settings to GimpDeviceInfo when it happens.
2010-02-15 19:58:02 +01:00
3facba67d4 app: sort plugged devices to the start of the list
and sort plugged/unplugged devices alphabetically
2010-02-14 22:08:32 +01:00
9617f42d13 app: add and use gimp_device_info_get_device() 2010-02-13 17:32:29 +01:00
fe58e525b8 app: s/device_info/info/ in local variable names 2010-02-13 16:24:01 +01:00
1cc77abdf9 app: try to guess a reasonable icon for devices 2010-02-13 16:21:26 +01:00
20e4936d3e app: make device management more dynamic in preparation of XI2
Add functions that are similar to the "device-added" and
"device-removed" of GdkDeviceManager in the XI2 branch. Add "device"
and "display" properties to GimpDeviceInfp and distunguish between
creating device info objects from scratch for never-seen devices, and
setting a GdkDevice on them when a previously known device gets
plugged in.
2010-02-12 17:10:54 +01:00
c6bbeda444 app: get rid of GtkInputDialog, also brings us closer to XI2
Added two new widgets, GimpDeviceInfoEditor, which is an editor/view
widget for GimpDeviceInfo, and GimpDeviceEditor, which is an editor
widget for all devices. Both are pretty much ugly right now and look a
lot like the old GtkInputDialog, but are at least internally cleaned
up and easily changable code and ui wise. Consider this a completely
intermediate state.

Also cleaned up GimpDeviceInfo so it's possible to have a proper
view on it, and did the needed changes to the preferences dialog
to use the new stuff.
2010-02-12 15:46:07 +01: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
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
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
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
84fed8962d added GdkDisplay member since there is no way fo figure the display a
2005-11-27  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpdeviceinfo.[ch]: added GdkDisplay member since
	there is no way fo figure the display a GdkDevice exists on.
	Minor cleanups.

	* app/widgets/gimpdevices.[ch]: connect to the GdkDeviceManager
	and add input devices when displays are opened. Added API to get
	the GimpContainer of devices.

	* app/widgets/gimpdevicestatus.[ch]: don't just show the devices
	of the default display. Instead get the device container from the
	new API above and update the GUI when devices are added/removed.
	Cleaned up the whole file quite a bit.
2005-11-27 17:20:40 +00:00
7bbcc69815 use gtk_accelerator_name() instead of serializing the accelerator
2005-11-27  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpdeviceinfo.c (gimp_device_info_get_property):
	use gtk_accelerator_name() instead of serializing the accelerator
	manually.
2005-11-27 14:10:19 +00:00
93eab43eef Use the canonical form for signal names.
2005-05-27  Sven Neumann  <sven@gimp.org>

	* (lots of files): Use the canonical form for signal names.
2005-05-27 16:51:39 +00:00
1cee9b7298 continuing commit after broken pipe 2005-01-25 19:11:26 +00:00
e7af53b0d3 app/actions/dialogs-commands.c app/display/gimpdisplayshell-dnd.c
2004-07-04  Simon Budig  <simon@gimp.org>

	* app/actions/dialogs-commands.c
	* app/display/gimpdisplayshell-dnd.c
	* app/gui/preferences-dialog.c
	* app/tools/gimppainttool.c
	* app/widgets/gimpdeviceinfo.c
	* app/widgets/gimpitemtreeview.c
	* plug-ins/imagemap/imap_selection.c
	* tools/pdbgen/pdb/gradients.pdb: Small changes to make GIMP
	CVS compile with gcc 2.95 again. Mostly double semicolons and
	variable declarations after other stuff. Spotted by Martin
	Renold.

	* app/pdb/gradients_cmds.c: regenerated.

	(there is one issue left, see his patch at
	http://old.homeip.net/martin/gcc-2.95.diff, I did not
	copy the #define va_copy __va_copy, since I don't know
	what happens here.)
2004-07-04 21:27:09 +00:00
23f6a194ac added context->serialize_props mask which enables specifying exactly which
2004-07-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpcontext.[ch]: added context->serialize_props mask
	which enables specifying exactly which properties will be
	serialized. Also fixes a bug that prevented undefined properties
	from being serialized, breaking tool_options and device status
	serialization.

	* app/core/gimptoolinfo.c (gimp_tool_info_new): make only the
	properties in the tool_info->context_props mask serializable, also
	configure/initialize tool_info->tool_options.

	* app/tools/gimp-tools.c (gimp_tools_register): removed
	tool_options initialization that is now done in
	gimp_tool_info_new().

	* app/widgets/gimpdeviceinfo.c: make only the properties in
	GIMP_DEVICE_INFO_CONTEXT_MASK serializable.

	* app/widgets/gimpdevicestatus.c: add the device table to its
	parent container again. Fixes "missing" devices.

	* app/core/gimptooloptions.c
	* app/widgets/gimpdevices.c: cleanup / code review.
2004-07-03 20:27:28 +00:00