[gimp/gimp-attributes-wip: 102/102] Merge remote-tracking branch 'remotes/origin/master' into gimp-attributes-wip
- From: Hartmut Kuhse <hartmutkuhse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-attributes-wip: 102/102] Merge remote-tracking branch 'remotes/origin/master' into gimp-attributes-wip
- Date: Mon, 9 Mar 2015 07:34:37 +0000 (UTC)
commit 1d7e002b6fcb6162e26c961edaa832e59c41403f
Merge: 0c93185 ef66ea2
Author: Hartmut Kuhse <hk_priv gmx de>
Date: Mon Mar 9 08:33:01 2015 +0100
Merge remote-tracking branch 'remotes/origin/master' into gimp-attributes-wip
Conflicts:
configure.ac
AUTHORS | 5 +
HACKING | 7 +
app/Makefile.am | 5 +-
app/actions/brushes-actions.c | 17 +-
app/actions/data-commands.c | 34 +
app/actions/data-commands.h | 32 +-
app/actions/documents-actions.c | 25 +-
app/actions/documents-commands.c | 29 +
app/actions/documents-commands.h | 38 +-
app/actions/drawable-actions.c | 14 +
app/actions/drawable-commands.c | 64 +
app/actions/drawable-commands.h | 4 +
app/actions/dynamics-actions.c | 15 +-
app/actions/file-actions.c | 36 +-
app/actions/file-commands.c | 54 +
app/actions/file-commands.h | 56 +-
app/actions/filters-actions.c | 6 +
app/actions/gradient-editor-commands.c | 50 +-
app/actions/gradients-actions.c | 17 +-
app/actions/palettes-actions.c | 17 +-
app/actions/patterns-actions.c | 17 +-
app/actions/tool-presets-actions.c | 15 +-
app/config/gimpguiconfig.c | 31 +
app/config/gimpguiconfig.h | 6 +-
app/config/gimprc-blurbs.h | 6 +
app/core/gimp.c | 11 +
app/core/gimpcontext.c | 48 +
app/core/gimpcontext.h | 3 +
app/core/gimpdatafactory.c | 73 +-
app/core/gimpdatafactory.h | 1 +
app/core/gimplayer-floating-sel.c | 22 +-
app/core/gimptoolpreset.c | 44 +-
app/dialogs/dialogs.c | 1 +
app/dialogs/preferences-dialog.c | 11 +-
app/display/Makefile.am | 2 +
app/display/gimpcanvasbufferpreview.c | 259 +
app/display/gimpcanvasbufferpreview.h | 56 +
app/main.c | 1 +
app/operations/gimpoperationequalize.c | 42 +-
app/operations/gimpoperationequalize.h | 3 +-
app/paint/gimpclone.c | 1 +
app/paint/gimpdodgeburn.c | 1 +
app/paint/gimperaser.c | 1 +
app/paint/gimpheal.c | 1 +
app/paint/gimpsmudge.c | 1 +
app/pdb/internal-procs.c | 2 +-
app/pdb/plug-in-compat-cmds.c | 531 +
app/sanity.c | 4 +-
app/tools/Makefile.am | 8 +
app/tools/gimp-tools.c | 13 +
app/tools/gimpcagetool.c | 26 +-
app/tools/gimpgegltool.c | 1 +
app/tools/gimphandletransformoptions.c | 201 +
app/tools/gimphandletransformoptions.h | 54 +
app/tools/gimphandletransformtool.c | 998 ++
app/tools/gimphandletransformtool.h | 60 +
app/tools/gimpnpointdeformationoptions.c | 256 +
app/tools/gimpnpointdeformationoptions.h | 67 +
app/tools/gimpnpointdeformationtool.c | 1032 ++
app/tools/gimpnpointdeformationtool.h | 95 +
app/tools/gimptransformoptions.h | 9 +-
app/tools/gimptransformtool.c | 9 +-
app/tools/gimptransformtool.h | 2 +-
app/tools/tools-enums.c | 31 +
app/tools/tools-enums.h | 12 +
app/widgets/gimpbrusheditor.c | 95 +-
app/widgets/gimpdataeditor.c | 3 +-
app/widgets/gimpdatafactoryview.c | 4 +-
app/widgets/gimpdockable.c | 51 +-
app/widgets/gimpdockbook.c | 81 +-
app/widgets/gimphelp-ids.h | 13 +
app/widgets/gimppanedbox.c | 33 +-
app/widgets/gimpsessioninfo.c | 2 +-
app/widgets/gimptoolbox.c | 67 +-
authors.xml | 5 +
configure.ac | 14 +-
data/patterns/Animal/.gitignore | 2 +
data/patterns/Animal/Makefile.am | 10 +
data/patterns/{ => Animal}/leather.pat | Bin 12320 -> 12320 bytes
data/patterns/{ => Animal}/leopard.pat | Bin 11936 -> 11936 bytes
data/patterns/Fabric/.gitignore | 2 +
data/patterns/Fabric/Makefile.am | 8 +
data/patterns/{ => Fabric}/burlap.pat | Bin 27679 -> 27679 bytes
data/patterns/Food/.gitignore | 2 +
data/patterns/Food/Makefile.am | 9 +
data/patterns/{ => Food}/choc_swirl.pat | Bin 7540 -> 7540 bytes
data/patterns/{ => Food}/java.pat | Bin 12317 -> 12317 bytes
data/patterns/Legacy/.gitignore | 2 +
data/patterns/{ => Legacy}/3dgreen.pat | Bin 6108 -> 6108 bytes
data/patterns/Legacy/Makefile.am | 22 +
data/patterns/{ => Legacy}/Stripes1px.pat | Bin 9253 -> 9253 bytes
data/patterns/{ => Legacy}/Stripes2px.pat | Bin 9248 -> 9248 bytes
data/patterns/{ => Legacy}/blue.pat | Bin 6108 -> 6108 bytes
data/patterns/{ => Legacy}/bluegrid.pat | Bin 1909 -> 1909 bytes
data/patterns/{ => Legacy}/bluesquares.pat | Bin 48037 -> 48037 bytes
data/patterns/{ => Legacy}/blueweb.pat | Bin 12321 -> 12321 bytes
data/patterns/{ => Legacy}/fibers.pat | Bin 7531 -> 7531 bytes
data/patterns/{ => Legacy}/nops.pat | Bin 49181 -> 49181 bytes
data/patterns/{ => Legacy}/pastel.pat | Bin 12325 -> 12325 bytes
data/patterns/{ => Legacy}/qube1.pat | Bin 5331 -> 5331 bytes
data/patterns/{ => Legacy}/recessed.pat | Bin 6433 -> 6433 bytes
data/patterns/{ => Legacy}/redcube.pat | Bin 12322 -> 12322 bytes
data/patterns/{ => Legacy}/sm_squares.pat | Bin 7538 -> 7538 bytes
data/patterns/{ => Legacy}/warning.pat | Bin 1233 -> 1233 bytes
data/patterns/Makefile.am | 74 +-
data/patterns/Paper/.gitignore | 2 +
data/patterns/Paper/Makefile.am | 9 +
data/patterns/{ => Paper}/crinklepaper.pat | Bin 49191 -> 49191 bytes
data/patterns/{ => Paper}/paper.pat | Bin 10030 -> 10030 bytes
data/patterns/Plant/.gitignore | 2 +
data/patterns/Plant/Makefile.am | 8 +
data/patterns/{ => Plant}/leaves.pat | Bin 7537 -> 7537 bytes
data/patterns/Sky/.gitignore | 2 +
data/patterns/Sky/Makefile.am | 11 +
data/patterns/{ => Sky}/lightning.pat | Bin 40723 -> 40723 bytes
data/patterns/{ => Sky}/sky.pat | Bin 11002 -> 11002 bytes
data/patterns/{ => Sky}/starfield.pat | Bin 49186 -> 49186 bytes
data/patterns/Stone/.gitignore | 2 +
data/patterns/{ => Stone}/Craters.pat | Bin 39707 -> 39707 bytes
data/patterns/Stone/Makefile.am | 22 +
data/patterns/{ => Stone}/Moonfoot.pat | Bin 14442 -> 14442 bytes
data/patterns/{ => Stone}/amethyst.pat | Bin 12321 -> 12321 bytes
data/patterns/{ => Stone}/brick.pat | Bin 27679 -> 27679 bytes
data/patterns/{ => Stone}/cracked.pat | Bin 62238 -> 62238 bytes
data/patterns/{ => Stone}/granite1.pat | Bin 10035 -> 10035 bytes
data/patterns/{ => Stone}/ground1.pat | Bin 30034 -> 30034 bytes
data/patterns/{ => Stone}/marble1.pat | Bin 16418 -> 16418 bytes
data/patterns/{ => Stone}/marble2.pat | Bin 16418 -> 16418 bytes
data/patterns/{ => Stone}/marble3.pat | Bin 12322 -> 12322 bytes
data/patterns/{ => Stone}/pink_marble.pat | Bin 49188 -> 49188 bytes
data/patterns/{ => Stone}/rock.pat | Bin 30510 -> 30510 bytes
data/patterns/{ => Stone}/slate.pat | Bin 16414 -> 16414 bytes
data/patterns/{ => Stone}/stone33.pat | Bin 73038 -> 73038 bytes
data/patterns/{ => Stone}/terra.pat | Bin 12318 -> 12318 bytes
data/patterns/Water/.gitignore | 2 +
data/patterns/Water/Makefile.am | 11 +
data/patterns/{ => Water}/electric.pat | Bin 9638 -> 9638 bytes
data/patterns/{ => Water}/ice.pat | Bin 43228 -> 43228 bytes
data/patterns/{ => Water}/pool.pat | Bin 6111 -> 6111 bytes
data/patterns/{ => Water}/rain.pat | Bin 35021 -> 35021 bytes
data/patterns/Wood/.gitignore | 2 +
data/patterns/Wood/Makefile.am | 20 +
data/patterns/{ => Wood}/bark.pat | Bin 22174 -> 22174 bytes
data/patterns/{ => Wood}/burlwood.pat | Bin 27681 -> 27681 bytes
data/patterns/{ => Wood}/corkboard.pat | Bin 10097 -> 10097 bytes
data/patterns/{ => Wood}/parque1.pat | Bin 12322 -> 12322 bytes
data/patterns/{ => Wood}/parque2.pat | Bin 12322 -> 12322 bytes
data/patterns/{ => Wood}/parque3.pat | Bin 12322 -> 12322 bytes
data/patterns/{ => Wood}/pine.pat | Bin 10781 -> 10781 bytes
data/patterns/{ => Wood}/walnut.pat | Bin 49183 -> 49183 bytes
data/patterns/{ => Wood}/wood1.pat | Bin 27690 -> 27690 bytes
data/patterns/{ => Wood}/wood2.pat | Bin 30030 -> 30030 bytes
data/patterns/{ => Wood}/wood3.pat | Bin 7532 -> 7532 bytes
data/patterns/{ => Wood}/wood4.pat | Bin 7532 -> 7532 bytes
data/patterns/{ => Wood}/wood5.pat | Bin 27677 -> 27677 bytes
icons/16/gimp-tool-handle-transform.png | Bin 0 -> 1166 bytes
icons/16/gimp-tool-n-point-deformation.png | Bin 0 -> 1083 bytes
icons/22/gimp-tool-handle-transform.png | Bin 0 -> 2084 bytes
icons/22/gimp-tool-n-point-deformation.png | Bin 0 -> 1626 bytes
icons/Makefile.am | 4 +
libgimpbase/gimpbase.def | 1 +
libgimpbase/gimpunit.c | 6 +-
libgimpbase/gimputils.c | 181 +
libgimpbase/gimputils.h | 76 +-
libgimpcolor/gimprgb.h | 16 +-
libgimpwidgets/gimpdialog.c | 330 +-
libgimpwidgets/gimppreviewarea.c | 46 +-
libgimpwidgets/gimpstock.c | 2 +
libgimpwidgets/gimpstock.h | 2 +
menus/brushes-menu.xml | 1 +
menus/documents-menu.xml | 1 +
menus/dynamics-menu.xml | 1 +
menus/gradients-menu.xml | 1 +
menus/image-menu.xml.in | 14 +-
menus/palettes-menu.xml | 1 +
menus/patterns-menu.xml | 1 +
menus/tool-presets-menu.xml | 1 +
plug-ins/common/.gitignore | 4 -
plug-ins/common/Makefile.am | 36 -
plug-ins/common/edge.c | 838 --
plug-ins/common/file-gegl.c | 55 +-
plug-ins/common/file-gif-save.c | 86 +-
plug-ins/common/file-raw-data.c | 51 +-
plug-ins/common/gimprc.common | 2 -
plug-ins/common/lcms.c | 5 +-
plug-ins/common/plugin-defs.pl | 2 -
plug-ins/common/value-propagate.c | 1296 ---
plug-ins/pygimp/gimpmodule.c | 5 +
plug-ins/pygimp/plug-ins/file-openraster.py | 181 +-
plug-ins/pygimp/pygimp-drawable.c | 98 +-
plug-ins/pygimp/pygimp-image.c | 8 +
plug-ins/twain/tw_local.h | 6 +-
plug-ins/twain/tw_mac.c | 5 +-
po-libgimp/eu.po | 1378 ++-
po-libgimp/it.po | 40 +-
po-plug-ins/POTFILES.in | 2 -
po-plug-ins/eu.po | 8848 ++++++++-------
po-plug-ins/it.po | 336 +-
po-python/eu.po | 241 +-
po-script-fu/eu.po | 3032 +++---
po-tags/eu.po | 31 +-
po-tips/eu.po | 445 +-
po/POTFILES.in | 4 +
po/eu.po | 9441 ++++++++++------
po/it.po | 1324 ++-
po/sv.po |15792 +++++++++++----------------
tools/pdbgen/pdb/plug_in_compat.pdb | 316 +
207 files changed, 26680 insertions(+), 23098 deletions(-)
---
diff --cc app/main.c
index 18db832,18db832..4531b32
--- a/app/main.c
+++ b/app/main.c
@@@ -353,6 -353,6 +353,7 @@@ main (int argc
basename = g_path_get_basename (argv[0]);
g_set_prgname (basename);
++ g_setenv ("GIMP_PROG_BASENAME", basename, TRUE);
g_free (basename);
/* Check argv[] for "--verbose" first */
diff --cc configure.ac
index 98a71d8,8c0099a..6082838
--- a/configure.ac
+++ b/configure.ac
@@@ -65,8 -65,8 +65,8 @@@ m4_define([pygtk_required_version], [2.
m4_define([poppler_required_version], [0.12.4])
m4_define([poppler_data_required_version], [0.4.7])
m4_define([libgudev_required_version], [167])
-m4_define([gexiv2_required_version], [0.6.1])
+m4_define([gexiv2_required_version], [0.10.3])
- m4_define([lcms_required_version], [2.2])
+ m4_define([lcms_required_version], [2.6])
m4_define([libpng_required_version], [1.2.37])
m4_define([liblzma_required_version], [5.0.0])
m4_define([openexr_required_version], [1.6.1])
diff --cc libgimpwidgets/gimpdialog.c
index 75cfef4,75cfef4..ed6fe80
--- a/libgimpwidgets/gimpdialog.c
+++ b/libgimpwidgets/gimpdialog.c
@@@ -22,6 -22,6 +22,10 @@@
#include "config.h"
#include <gtk/gtk.h>
++#include <glib/gstdio.h>
++
++#include "libgimpconfig/gimpconfig.h"
++#include "libgimpbase/gimpbase.h"
#include "gimpwidgetstypes.h"
@@@ -56,6 -56,6 +60,11 @@@ struct _GimpDialogPrivat
GimpHelpFunc help_func;
gchar *help_id;
GtkWidget *help_button;
++ gchar *allocation_rc;
++ gint dialog_width;
++ gint dialog_height;
++ gint dialog_x;
++ gint dialog_y;
};
#define GET_PRIVATE(dialog) G_TYPE_INSTANCE_GET_PRIVATE (dialog, \
@@@ -63,28 -63,28 +72,36 @@@
GimpDialogPrivate)
--static void gimp_dialog_constructed (GObject *object);
--static void gimp_dialog_dispose (GObject *object);
--static void gimp_dialog_finalize (GObject *object);
--static void gimp_dialog_set_property (GObject *object,
-- guint property_id,
-- const GValue *value,
-- GParamSpec *pspec);
--static void gimp_dialog_get_property (GObject *object,
-- guint property_id,
-- GValue *value,
-- GParamSpec *pspec);
--
--static void gimp_dialog_hide (GtkWidget *widget);
--static gboolean gimp_dialog_delete_event (GtkWidget *widget,
-- GdkEventAny *event);
--
--static void gimp_dialog_close (GtkDialog *dialog);
--
--static void gimp_dialog_help (GObject *dialog);
--static void gimp_dialog_response (GtkDialog *dialog,
-- gint response_id);
--
++static void gimp_dialog_constructed (GObject *object);
++static void gimp_dialog_dispose (GObject *object);
++static void gimp_dialog_finalize (GObject *object);
++static void gimp_dialog_set_property (GObject *object,
++ guint property_id,
++ const GValue *value,
++ GParamSpec *pspec);
++static void gimp_dialog_get_property (GObject *object,
++ guint property_id,
++ GValue *value,
++ GParamSpec *pspec);
++
++static void gimp_dialog_hide (GtkWidget *widget);
++static gboolean gimp_dialog_delete_event (GtkWidget *widget,
++ GdkEventAny *event);
++
++static void gimp_dialog_close (GtkDialog *dialog);
++
++static void gimp_dialog_help (GObject *dialog);
++static void gimp_dialog_response (GtkDialog *dialog,
++ gint response_id);
++
++static void gimp_dialog_read_context (GtkWidget *dialog,
++ gchar *name,
++ GtkAllocation *allocation);
++static void gimp_dialog_save_context (GtkDialog *dialog,
++ GtkAllocation allocation);
++
++void gimp_dialog_unmap_callback (GtkDialog *dialog);
++void gimp_dialog_map_callback (GtkDialog *dialog);
G_DEFINE_TYPE (GimpDialog, gimp_dialog, GTK_TYPE_DIALOG)
@@@ -445,7 -445,7 +462,9 @@@ gimp_dialog_new_valist (const gchar
const gchar *help_id,
va_list args)
{
-- GtkWidget *dialog;
++ GtkWidget *dialog;
++ const gchar *prog_name;
++ const gchar *gimp_basename;
g_return_val_if_fail (title != NULL, NULL);
g_return_val_if_fail (role != NULL, NULL);
@@@ -460,6 -460,6 +479,9 @@@
"parent", parent,
NULL);
++ prog_name = g_get_prgname ();
++ gimp_basename = g_getenv ("GIMP_PROG_BASENAME");
++
if (parent)
{
if (flags & GTK_DIALOG_DESTROY_WITH_PARENT)
@@@ -467,6 -467,6 +489,27 @@@
G_CALLBACK (gimp_dialog_close),
dialog, G_CONNECT_SWAPPED);
}
++ else
++ {
++ if (dialog && strcmp (prog_name, gimp_basename))
++ {
++ GimpDialogPrivate *private = GET_PRIVATE (dialog);
++ GtkAllocation allocation;
++
++ g_printerr ("allocating: %s\n", role);
++
++ private->allocation_rc = g_strdup (role);
++ gimp_dialog_read_context(dialog, private->allocation_rc, &allocation);
++
++ private->dialog_x = allocation.x;
++ private->dialog_y = allocation.y;
++ private->dialog_width = allocation.width;
++ private->dialog_height = allocation.height;
++
++ g_signal_connect(GTK_WIDGET(dialog), "unmap", G_CALLBACK(gimp_dialog_unmap_callback), NULL);
++ g_signal_connect (GTK_WIDGET(dialog), "map-event", G_CALLBACK (gimp_dialog_map_callback), NULL);
++ }
++ }
gimp_dialog_add_buttons_valist (GIMP_DIALOG (dialog), args);
@@@ -685,3 -685,3 +728,244 @@@ gimp_dialogs_show_help_button (gboolea
{
show_help_button = show ? TRUE : FALSE;
}
++
++enum
++{
++ POS_X,
++ POS_Y,
++ WIDTH,
++ HEIGHT
++};
++
++static void
++gimp_dialog_read_context(GtkWidget *dialog, gchar *name, GtkAllocation *allocation)
++{
++ GimpDialogPrivate *private = GET_PRIVATE (dialog);
++ gchar *options_path;
++ GFile *options_dir;
++ GFile *options_file;
++ GScanner *scanner;
++ GTokenType token;
++ GError *error = NULL;
++ gint x=0, y=0, width=0, height=0;
++
++ allocation->height = height;
++ allocation->width = width;
++ allocation->x = x;
++ allocation->y = y;
++
++ g_return_if_fail (private->allocation_rc != NULL);
++
++ options_path = g_build_filename (g_strdup (gimp_directory ()),
++ "plugin-options",
++ NULL);
++
++ options_dir = g_file_new_for_path (options_path);
++ options_file = g_file_get_child(options_dir, g_strconcat (private->allocation_rc, ".rc", NULL));
++
++ scanner = gimp_scanner_new_gfile (options_file, &error);
++
++ if (! scanner)
++ {
++ g_clear_error (&error);
++ g_free (options_path);
++ g_object_unref (options_dir);
++ g_object_unref (options_file);
++ return;
++ }
++
++ g_scanner_scope_add_symbol (scanner, 0, "pos-x",
++ GINT_TO_POINTER (POS_X));
++ g_scanner_scope_add_symbol (scanner, 0, "pos-y",
++ GINT_TO_POINTER (POS_Y));
++ g_scanner_scope_add_symbol (scanner, 0, "width",
++ GINT_TO_POINTER (WIDTH));
++ g_scanner_scope_add_symbol (scanner, 0, "height",
++ GINT_TO_POINTER (HEIGHT));
++
++ token = G_TOKEN_LEFT_PAREN;
++
++ while (g_scanner_peek_next_token (scanner) == token)
++ {
++ token = g_scanner_get_next_token (scanner);
++
++ switch (token)
++ {
++ case G_TOKEN_LEFT_PAREN:
++ token = G_TOKEN_SYMBOL;
++ break;
++
++ case G_TOKEN_SYMBOL:
++ if (scanner->value.v_symbol == GINT_TO_POINTER (POS_X))
++ {
++ token = G_TOKEN_IDENTIFIER;
++
++ if (! gimp_scanner_parse_int (scanner, &x))
++ break;
++ }
++ else if (scanner->value.v_symbol == GINT_TO_POINTER (POS_Y))
++ {
++ token = G_TOKEN_IDENTIFIER;
++
++ if (! gimp_scanner_parse_int (scanner, &y))
++ break;
++ }
++ else if (scanner->value.v_symbol == GINT_TO_POINTER (WIDTH))
++ {
++ token = G_TOKEN_IDENTIFIER;
++
++ if (! gimp_scanner_parse_int (scanner, &width))
++ break;
++ }
++ else if (scanner->value.v_symbol == GINT_TO_POINTER (HEIGHT))
++ {
++ token = G_TOKEN_IDENTIFIER;
++
++ if (! gimp_scanner_parse_int (scanner, &height))
++ break;
++ }
++ token = G_TOKEN_RIGHT_PAREN;
++
++ break;
++
++ case G_TOKEN_RIGHT_PAREN:
++ token = G_TOKEN_LEFT_PAREN;
++ break;
++
++ default: /* do nothing */
++ break;
++ }
++ }
++
++ if (token != G_TOKEN_LEFT_PAREN)
++ {
++ g_scanner_get_next_token (scanner);
++ g_scanner_unexp_token (scanner, token, NULL, NULL, NULL, "fatal parse error", TRUE);
++ }
++
++ if (error)
++ {
++ g_print("error: %s\n", error->message);
++ g_clear_error (&error);
++ }
++
++ allocation->height = height;
++ allocation->width = width;
++ allocation->x = x;
++ allocation->y = y;
++
++ gimp_scanner_destroy (scanner);
++
++ g_free (options_path);
++ g_object_unref (options_dir);
++ g_object_unref (options_file);
++}
++
++static void
++gimp_dialog_save_context(GtkDialog *dialog, GtkAllocation allocation)
++{
++ GimpDialogPrivate *private = GET_PRIVATE (dialog);
++ gchar *options_path;
++ GFile *options_dir;
++ GFile *options_file;
++ GimpConfigWriter *writer;
++ GError *error = NULL;
++
++ g_return_if_fail (private->allocation_rc != NULL);
++
++ options_path = g_build_filename (g_strdup (gimp_directory ()),
++ "plugin-options",
++ NULL);
++
++ options_dir = g_file_new_for_path (options_path);
++
++ if (! g_file_query_exists (options_dir, NULL))
++ {
++ g_file_make_directory (options_dir, NULL, &error);
++ }
++
++ if (error)
++ {
++ g_clear_error (&error);
++ g_free (options_path);
++ g_object_unref (options_dir);
++ return;
++ }
++
++ g_clear_error (&error);
++
++ options_file = g_file_get_child(options_dir, g_strconcat (private->allocation_rc, ".rc", NULL));
++
++ writer =
++ gimp_config_writer_new_gfile (options_file,
++ TRUE,
++ "start of file\n",
++ NULL);
++ g_object_unref (options_dir);
++ g_object_unref (options_file);
++ g_free (options_path);
++
++ if (!writer)
++ {
++ return;
++ }
++
++ gimp_config_writer_open (writer, "pos-x");
++ gimp_config_writer_printf (writer, "%d", allocation.x);
++ gimp_config_writer_close (writer);
++ gimp_config_writer_open (writer, "pos-y");
++ gimp_config_writer_printf (writer, "%d", allocation.y);
++ gimp_config_writer_close (writer);
++ gimp_config_writer_open (writer, "width");
++ gimp_config_writer_printf (writer, "%d", allocation.width);
++ gimp_config_writer_close (writer);
++ gimp_config_writer_open (writer, "height");
++ gimp_config_writer_printf (writer, "%d", allocation.height);
++ gimp_config_writer_close (writer);
++
++ if (! gimp_config_writer_finish (writer, "end of file", &error))
++ {
++ g_clear_error (&error);
++ }
++}
++
++void
++gimp_dialog_unmap_callback (GtkDialog *dialog)
++{
++ GtkAllocation allocation;
++ GdkRectangle rect;
++ gint dx, dy, dw, dh, dd;
++ gint monitor;
++ GdkWindow *window = gtk_widget_get_window (GTK_WIDGET(dialog));
++ GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET(dialog));
++
++ gdk_window_get_frame_extents (window, &rect);
++ gdk_window_get_geometry (window, &dx, &dy, &dw, &dh, &dd);
++
++ if (window)
++ monitor = gdk_screen_get_monitor_at_window (screen, window);
++
++ allocation.x=rect.x;
++ allocation.y=rect.y;
++ allocation.width=dw;
++ allocation.height=dh;
++
++ gimp_dialog_save_context(dialog, allocation);
++}
++
++void
++gimp_dialog_map_callback (GtkDialog *dialog)
++{
++ GimpDialogPrivate *private = GET_PRIVATE (dialog);
++ GdkWindow *window = gtk_widget_get_window (GTK_WIDGET(dialog));
++
++ if(private->dialog_width > 0 && private->dialog_height > 0)
++ {
++ gdk_window_move_resize (window,
++ private->dialog_x,
++ private->dialog_y,
++ private->dialog_width,
++ private->dialog_height);
++
++ }
++}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]