- 05 Dec, 2017 2 commits
-
-
Jehan authored
This allows for easier code reading and changing.
-
Jehan authored
Current logics of dealing with duplicate accelerators was just to delete one randomly. This works ok in most case since we can't be in the head of people and can't know which one they want to keep (yet we can't keep both because that makes it very complicated to reset the shortcut appropriately by hand/GUI, without a tedious work of researching which other action uses the same shortcut. See commit 2a232398). There is still some cases where we can be a bit more clever than random deletion: when one of the accelerator is mapped to a non-existing action. In this case, let's delete this accelerator in priority. Not only the chances of this being the expected result are higher; but even worse, there is anyway no GUI way to delete the accelerator for the non-existing action! Thus you could try and reset your existing action's shortcut as many times as you want in the GUI, it would always end up deleted at next startup! Note that if the non-existing action's shortcut has no duplicate, it won't be deleted. This ensure that you could uninstall a plugin, then reinstall it later and still have your custom shortcuts saved in the meantime. A shortcut of a non-existing action will *only* be cleaned out if it is redundant with the shortcut of an existing action.
-
- 04 Dec, 2017 4 commits
-
-
Ell authored
Use gimp:buffer-source-validate, introduced in the previous commit, for the source node of GimpDrawables. This avoids threading issues with layer groups, or any other drawables that may use a validating buffer, by making sure the buffer is validated before any succeeding operations, and hence the associated graph is processed on the same thread as the parent composition. Restore multithreaded processing in GimpOperationLayerMode.
-
Ell authored
gimp:buffer-source-validate is a drop-in replacement for gegl:buffer-source, however, if the attached buffer has a validating tile-handler, it makes sure the required region is validated during process(). This avoids a situation in which validation happens in different worker threads at the same time during the processing of a succeeding operation; since validation is protected by the buffer's tile-storage mutex, this can result in either a deadlock (currently), or an effective fallback to single- threaded processing.
-
Ell authored
-
- 03 Dec, 2017 2 commits
-
-
Piotr Drąg authored
-
Thomas Manni authored
Do not use the bytes-per-pixel size of the input drawable. Use the bpp of the output format instead.
-
- 02 Dec, 2017 9 commits
-
-
Ell authored
When switching a group layer from pass-through mode to a non-pass- through mode, flush the projection synchrnously, to make sure that the projection's buffer gets properly invalidated at that point, and can be subsequently used as a source for the rest of the composition. Add a boolean 'pass_through' member to GimpGroupLayerPrivate, which indicates if the group is a pass-through group, and use it instead of checking the group's mode, so that we can detect that the group used to be a pass-through group when the mode changes, and to simplify the rest of the code.
-
-
Ell authored
The source node of pass-through groups doesn't use the projection's buffer, hence there's no need to invalidate it synchronously, which is faster.
-
Ell authored
... since we don't actually render anything, only invalidate.
-
Ell authored
Set the priority of group-layer projections according to the group layer's depth, so that top-level groups have a priority of 1 (compared to a priority of 0 for the image projection), and nested groups have a priority one greater than their parent (in other words, shallower groups have higher priority than deeper groups, all of which have lower priority than the image.) This makes pass-through groups much faster, in particular.
-
Ell authored
... which control the priority of the projection's idle source. The projection's priority is specified relatively to GIMP_PRIORITY_PROJECTION_IDLE (i.e., a priority of 1 results in an idle source with priority GIMP_PRIORITY_PROJECTION_IDLE + 1, etc.)
-
Ell authored
Add GimpViewable::ancestry-changed signal, which is emitted when the viewable's ancestry changes, i.e., when its parent, or the parent of one of its ancestors, changes. Add gimp_viewable_get_depth() function, which returns the viewable's depth in the hierarchy, i.e., its ancestor count.
-
Jehan authored
Thanks to Massimo for the solution!
-
Thomas Manni authored
-
- 01 Dec, 2017 11 commits
-
-
Michael Natterer authored
-
Michael Natterer authored
...is a regression in common cases Commit the free select tool on double click inside the polygon. Done by implementing GimpCanvasItem::hit() in GimpCanvasPolygon, using ugly code.
-
Jehan authored
g_type_from_name ("PixbufStyle") might return 0. So we also need to protect this case.
-
Jehan authored
Massimo is worried that it could unload the module (maybe in some specific cases?), which could indeed happen when the g_type_class_ref() just before was the first call to the class (hence it's the only ref). So let's just unref() in the exit() function instead.
-
Ell authored
There's no real reason not to do it (has no visible effect if the model has no abbreviations to begin with), and it means less special casing.
-
Ell authored
-
Ell authored
... and a small cleanup.
-
Jehan authored
This person implemented the enhanced smudge tool and another bug fix. We only have this username to credit the contributor.
-
Jehan authored
-
Jehan authored
Not sure if g_type_class_ref() can actually return NULL here, but let's add a check, just in case. Also unref() after since we ref-ed it ourselves. Finally reorganize a bit to keep the private functions together and named appropriately, clean some tabs and add a comment to remind of further check/cleanup once we port to GTK+3.
-
Comment by Jehan after review: "Quick and dirty hack" but a working one. Since the bug will likely disappear with the GTK+3 port (to be verified) which uses another theme system, let's just do it this way.
-
- 30 Nov, 2017 12 commits
-
-
Piotr Drąg authored
-
Ell authored
Add abbreviated versions for long layer mode names. In particular, replace the "(legacy)" suffixes with "(l)" in the abbreviated versions.
-
Ell authored
Move the abbreviated descriptions to the "abbrev" parameter, and use full strings for the descriptions.
-
Ell authored
... to match the old gradient editor menu labels.
-
Dimitris Spingos authored
-
-
Ell authored
Use gimp_int_combo_box_set_layout() to set the mode-group combo box layout to ICON_ONLY, instead of manually constructing an icon-only cell-layout.
-
Ell authored
The value descriptions of GimpGradientColor, GimpGradientSegmentColor, and GimpGradientSegmentType enums appear in the on-canvas gradient editor UI, as combo-box items in the tool GUI overlay. Since we want to keep the overlay as small as possible, we previously used abbreviations for these descriptions (e.g., "FG (t)", instead of "Foreground (transparent)"). Replace the abbreviated descriptions with unabbreviated ones, and move the abbreviations to the "abbrev" parameter. This way we get the abbreviated version in the combo-box, and the full version in the combo-box's menu.
-
Ell authored
... using enum models with abbreviated labels
-
Ell authored
The "layout" proerty controls the combo-box layout (but not its menu layout), and can be one of: - ICON_ONLY: Only show icons. - ABBREVIATED: Show icons and abbreviated labels (or full labels, when there is no abbreviation). - FULL: Show icons and full labels. Default. Avoid reconstructing the combo's cell-layout when the menu is shown/hidden, by maintaining the combo's cell-layout and the menu's cell-layout separately (probably a terrible hack, but one we already use :P).
-
Ell authored
Use gimp_enum_value_get_abbrev() to fill the ABBREV column of GimpEnumStore.
-
Ell authored
... which holds an abbreviated label, or NULL to use the normal label.
-