Commit graph

3615 commits

Author SHA1 Message Date
Michael Natterer
64b1ade7b0 Bug 586462 - Layer inserts misplaced
Another attempt to fix paste/drop positions for good.

Paste/drop target is either the selected area of a drawable, the
drawable itself, or the image:

- if the paste is larger than the target, center on the target
- if there is a viewport, and the viewport intersects with the
  target, center on the intersection
- otherwise, center on the target

Finally, if we did viewport-centered pasting, make sure the paste is
as completely within image bounds as possible.
(cherry picked from commit eda6fa1c14)
2012-07-30 16:28:25 +02:00
Michael Natterer
f4ce57aa97 Bug 676566 - Window title becomes "Untitled" after exporting without saving
Fix this and other issues more globally by moving the logic that
formats the image's display name into the GimpImage object, and return
the properly formatted name, e.g. "Foo.xcf", or "[Foo] (imported)"
from gimp_image_get_display_name().

Also add gimp_image_get_display_path() which returns the full path
instead. Use the two functions for formatting the image title, and
apply various other fixes that make sure the UI always uses the same
string to identify the image.

Call gimp_object_name_changed() whenever the save/export status
changes, so the image's cached display name and path get cleared.

(cherry picked from commit 220b28677b)
2012-07-17 22:59:09 +02:00
Michael Natterer
687fbf4583 Bug 677823 - Shift + mouse click to link all layers does not work
This got lost during layer group porting, reimplement it, but restrict
"all layers" to the clicked layer's branch in the tree.
(cherry picked from commit 67b5a509b6)
2012-06-12 21:41:39 +02:00
Michael Natterer
be2feeb111 Bug 676164 - Text Tool selects hidden layers
Also fix the other layer picking functions to not pick invisible
layers.
(cherry picked from commit b50e924df0)
2012-05-17 00:18:44 +02:00
Michael Natterer
8d6004e063 Bug 676107 - Picking logic doesn't take group visibility into account
gimp_layer_get_opacity_at(): use gimp_item_is_visible() not
get_visible() so we use the layer's effective visibility.
(cherry picked from commit 4d1173570a)
2012-05-15 19:48:56 +02:00
Michael Natterer
1e402a46f0 Bug 675994 - Opening image with a saved selection breaks histogram updating
In fact, it broke much more than that because the way XCF loading
replaced the image's mask prevented the image's "mask-changed" signal
from ever being emitted. Add private API gimp_image_take_mask() which
properly sets the mask and use it for image construction and the XCF
selection loading hack.
(cherry picked from commit ab4c613a70)
2012-05-14 01:47:14 +02:00
Michael Natterer
46127dc789 Move gimpdir and thumbnails to proper places on OSX
gimpdir goes to ~/Library/Gimp/x.y
thumbnails go to ~/Library/Caches/org.freedesktop.thumbnails

The thumbnail location is not standardized yet, but is the only
location that makes sense. Also fix user install to search old
gimpdirs to migrate in both Library and the classic location.
Remove the obsolete CABON_CFLAGS from all makefiles.
(cherry picked from commit 9112d68488)
2012-05-12 14:44:08 +02:00
Michael Natterer
32a0c6355e app: fix UI tag matching to always work case-insensitively
Add gimp_tag_has_prefix() and use it in GimpTagEntry when completing
patrially entered tag names, and fix two uses of strcmp() in
GimpTagPopup to use gimp_tag_compare_with_string().
(cherry picked from commit 30b4fe8510)
2012-05-05 19:00:32 +02:00
Michael Natterer
e1dcba190e app: don't leak one TempBuf per blurred brush mask/pixmap 2012-04-04 11:35:59 +02:00
Michael Natterer
b262c93048 app: create an own GimpOperationBrightnessContrast
and use it instead of gegl:brightness-contrast because the GEGL op is
giving different reaults.
2012-03-13 15:02:17 +01:00
Ville Sokk
082d758a34 Bug 558795 - Using same quick mask color across sessions
Add configuration option for quick mask color.
2012-03-03 02:45:10 +01:00
Michael Natterer
8ea6d3a94f app: when scaling, use the proper image api to move guides and sample points
so the image's "foo-moved" signals are emitted and the display can
follow. Moving them around manually was needed before the displayed
guides and sample points were proper views of the resp. core objects.
2012-02-24 00:31:27 +01:00
Mikael Magnusson
5c19c75f71 app: fix typo in error message 2012-02-16 11:25:23 +01:00
Michael Natterer
7f5a43f3e1 app: rename GimpToolInfo::menu_path to ::menu_label
"path" is a really ancient pre-GtkAction terminology here.
2012-02-14 10:00:26 +01:00
Michael Natterer
ddb1f968b5 app: fix include guards in gimpbrush-transform.h to not use the old filename 2012-02-12 18:41:52 +01:00
Nils Philippsen
4ec7def1d0 put operators on end of line in long expressions
This fixes commit 3a151bd1a9, GIMP is
deviating from the GNU coding style here.
2012-02-11 16:50:44 +01:00
Nils Philippsen
3a151bd1a9 app: check top_directory for plausibility 2012-02-10 16:20:15 +01:00
Massimo Valentini
2303d292c3 app: initialize var before usage
to silence valgrind

==12105== Conditional jump or move depends on uninitialised value(s)
==12105==    at 0x6B069C: gimp_data_set_folder_tags (gimp/app/core/gimpdata.c:885)
==12105==    by 0x6B155E: gimp_data_factory_load_data (gimp/app/core/gimpdatafactory.c:922)
==12105==    by 0x64F34D0: gimp_datafiles_read_directories (gimp/libgimpbase/gimpdatafiles.c:155)
==12105==    by 0x6B1293: gimp_data_factory_data_load (gimp/app/core/gimpdatafactory.c:354)
==12105==    by 0x6B1E1C: gimp_data_factory_data_init (gimp/app/core/gimpdatafactory.c:239)
==12105==    by 0x6871D2: gimp_restore (gimp/app/core/gimp.c:952)
==12105==    by 0x47EABA: app_run (gimp/app/app.c:217)
==12105==    by 0x47E64D: main (gimp/app/main.c:440)
==12105==  Uninitialised value was created by a stack allocation
==12105==    at 0x6B1190: gimp_data_factory_data_load (gimp/app/core/gimpdatafactory.c:319)
2012-02-10 12:24:32 +01:00
Michael Natterer
0729c25bc0 app: set tags for all subdirectories a data file lives in
GimpData: add gimp_data_set_folder_tags() and remove the tag logic
from gimp_data_set_filename(). The function gets the toplevel data
directory passed so it knows where to stop assigning tags.

GimpDataFactory: when loading data, keep track of the currently
processed data hierachy's toplevel directory, and pass it to above new
function. Also make sure obsolete files don't get folder-tagged.
2012-02-09 10:02:49 +01:00
Michael Natterer
2414301799 Review the last few commits and apply some style fanaticism
some completely unrelated,
2012-02-07 20:36:55 +01:00
Massimo Valentini
39368a410d plugged memory leaks 2012-02-07 17:32:02 +01:00
Alexia Death
f7554c299e app: use deletable flag for sorting user data above system data
Previously flag writable was used. This caused ritable and editable
brushes to sort first. This was not clearly understood criteria.
Now user brushes in writable folders are sorted first.
2012-02-01 21:05:16 +02:00
Michael Natterer
569b262e2d app: various tool options and tool preset fixes
- move the code that sets the tool options' "defined" and "serialize"
  properties from GimpToolInto to GimpToolOptions so they are always
  set correctly.
- make GimpToolOptions fix broken serialized NULL tools automatically.
- make sure a GimpToolPreset's tool options always has a tool set. If all
  fails, set a NULL tool explicitly and let the logic in GimpToolOptions
  find the right tool.
- set GimpToolPreset's "use" booleans to FALSE for context properties
  that have no effect on the tool.
- set GimpToolPresetEditor's toggle insensitive for these properties.
2012-01-23 22:40:49 +01:00
Alexia Death
4fe9955b3e app: fix some brushes not going small enough correctly
That limit may need to be removed completely some day...
2012-01-20 21:12:19 +02:00
Michael Natterer
23ed56d75d app: gimp_data_factory_load_data(): fix handling of obsolete and writable
Make sure obsolete files are immutable, and propagate a folder's
"writable" state into its subfolders. Also clean up the function's
control flow to not fry the reader's brain.
2012-01-14 20:54:35 +01:00
Alexia Death
63c0db45ae app: For generated brushes scale is applied to radius, so divide by 2 2012-01-08 13:45:09 +02:00
Michael Natterer
056e09a6cb Remove the makefile.msc build system, it is unmaintained since 2008 2011-12-16 15:53:56 +01:00
Alexia Death
aa9806c687 app: Make resource subfolders elements in the tag cloud
This patch does following things for this purpose:
* Adds intrernal flag to GimpTag api
* Modifies GimpData gimp_data_set_filename to use the last element
  of the path, unless blacklisted, as internal tag for the resource.
* Modify tag cache to not save internal tags
* Removes a check for existing tags when objects are added to tag cache
2011-12-04 20:36:05 +02:00
Michael Natterer
ed1ed0e6bc app: make destroying a GimpFilteredContainer not crash
It was never disconnecting from any of the src_container objects'
signals.

GimpFilteredContainer: unref the src_container in finalize() instead
of dispose() because the parent dispose() impl now needs it via
calling gimp_container_clear().

GimpTaggedContainer: implement GimpContainer::clear() and disconnect
from all the src_container objects' signals.
2011-12-01 21:12:55 +01:00
Michael Natterer
70376b7528 app: GimpTagCache: move variable to local scope 2011-12-01 20:34:18 +01:00
Michael Natterer
9781aa65ea Bug 658467 - Replace g_format_size_for_display() by g_format_size()
Use g_format_size() instead of g_format_size_for_display() because
the latter is deprecated.
2011-11-30 23:37:55 +01:00
Michael Natterer
88befd3082 Bug 664591 - Spyrogimp script crashes GIMP
Don't let resetting the tool options reset away their name to NULL.
Found by massimo.
2011-11-23 20:55:55 +01:00
Michael Natterer
3669acf0be Bug 658904 - Wrong behaviour in hidding layers with shift + left mouse click
Fix "exclusive visible" for layer trees. Doesn't touch the visibility
of any non-toplevel items that is not in the exclusive item's ancestry.
2011-11-16 22:38:39 +01:00
Massimo Valentini
834225803a Bug 662219 Rotate does not rotate; the image is ...
gone except for a small rectangle

atan2 returns an angle between -pi, pi. Here it is needed
between 0, 2pi. Simpler to invert both axes.
2011-11-02 17:55:57 +01:00
Michael Natterer
30f638516e app: add gimp_get_paint_info_iter(), I need it later for PDB context fixing 2011-10-29 19:37:58 +02:00
Michael Natterer
846392b66c app: move the "exclusive visible" logic to the core
but don't fix it for item trees yet (refactoring only). Kill the
"exclusive liked" function which only existed because it was so easy
to have, but was always utterly useless. Prove me wrong and I will
revive it.
2011-10-12 16:05:57 +02:00
Mukund Sivaraman
e922a7bfda app: Update Jarvis march implementation
The output of transforms can result in the transformed points being
passed out of order to gimp_transform_resize_crop().  The Jarvis march
method is used to find the convex hull of the points to get them in a
known order, before performing the crop operation.

Static analysis found a bug in the Jarvis march algorithm, but when we
looked at the code, we could no longer follow it. So a slightly
rewritten version is committed here without the static analysis bug.
2011-10-10 09:19:49 +05:30
Mukund Sivaraman
9a39d84e96 app: Remove dead assignment 2011-10-03 19:13:22 +05:30
Mukund Sivaraman
f33dcf2df2 app: Don't care about return value of g_string_append() 2011-10-03 19:06:37 +05:30
Mukund Sivaraman
9dd857d996 app: Remove dead assignments (and variable) 2011-10-03 13:11:09 +05:30
Massimo Valentini
0f03ed9e05 Bug 616416: hidden layer groups appear again after an image change
Introduced two virtual functions to a GimpViewable

'set_expanded' and 'get_expanded'

and a PROP_GROUP_ITEM_FLAGS to load/save the expanded state
of layer_groups and use them.
2011-09-25 21:57:20 +02:00
Massimo Valentini
a67bb11cf5 Revert "Bug 616416: hidden layer groups appear again after an image change"
This reverts commit 359c9c22d9.
2011-09-25 21:49:36 +02:00
Massimo Valentini
359c9c22d9 Bug 616416: hidden layer groups appear again after an image change 2011-09-25 21:38:50 +02:00
Michael Natterer
d995fefb7c app: add gimp_item_is_visible()
which returns TRUE if an item is effectively visible (it is visible
and all its parents are visible).
2011-09-23 23:43:42 +02:00
Michael Natterer
0e1d07d129 Bug 659446 - Missing plural handling for...
Use ngettext() instead of simply _().
2011-09-23 23:09:26 +02:00
Michael Natterer
944f6a529d Bug 656512 - Moving a floating selection - objects disappear
Fix typo in gimp_drawable_fs_update(): use the drawable's x and y
offsets to calculate the intersection with the fs' update area, and
not the y offset for both axes.
2011-09-23 22:34:25 +02:00
Michael Natterer
578e6402b8 app: don't detach the floating selection if it's not attached
Fix the commit two down in the log: a layer can be a floating
selection even if it's not attached to anything (when it is on the
undo stack).  Don't detach it if it is not the underlying drawable's
current fs.
2011-09-23 22:24:23 +02:00
Michael Natterer
208fedd7ea app: don't add GimpLayer's source node to two different parents
When the layer is a floating selection, its source node is being
hijacked by the underlying drawable to be composited on top of it.
This can happen before the layer's own layer node is being created; in
this case we must not add the source node to the layer node. Detaching
the floating selection in any way will fix up things later.
2011-09-23 21:58:00 +02:00
Michael Natterer
e8f64664c9 app: properly detach floating selection in dispose()
We crash when closing an image that has a floating selection and the
GEGL projection is being used. Detach the floating selection when
either the FS or the drawable it's attached to are disposed. This fix
only makes it crash later, but makes sense as separate commit.
2011-09-23 19:55:24 +02:00
Michael Natterer
5c8ded8960 app: let the drawable keep around a pointer to its floating selection
Instead of getting the floating selection from the image. Change
gimp_drawable_has_floating_sel() to get_floating_sel() and remove the
"floating_sel" parameter from gimp_drawable_deatch_floating_sel().
This cleanup is one more step towards sanitizing floating selections,
and makes the crash fix in the next commit much much simpler.
2011-09-23 19:31:50 +02:00