Named cut and copy are now performed after the user is asked for a name,

so cancelling the dialog should work correctly. There might be a problem,
because now named_edit_cut() and named_edit_copy() always return TRUE.
Before they returned FALSE when there was nothing to copy (tiles==NULL).
However I had no problems at all when testing my code....


--Sven
This commit is contained in:
Sven Neumann
1998-04-14 08:19:17 +00:00
parent c3c4947583
commit 588f7cdfe6
4 changed files with 132 additions and 90 deletions

View File

@ -1,3 +1,9 @@
Tue Apr 14 10:11:04 MEST 1998 Sven Neumann <sven@gimp.org>
* app/global_edit.c: Named cut and copy are now performed after
the user is asked for a name, so cancelling the dialog works
correctly.
Mon Apr 13 15:17:51 PDT 1998 Manish Singh <yosh@gimp.org> Mon Apr 13 15:17:51 PDT 1998 Manish Singh <yosh@gimp.org>
* moved man page from docs to top-level so it's always installed * moved man page from docs to top-level so it's always installed

View File

@ -638,15 +638,14 @@ paste_named_buffer (GDisplay *gdisp)
} }
static void static void
new_named_buffer_callback (GtkWidget *w, new_named_buffer (TileManager *tiles,
gpointer client_data, char *name)
gpointer call_data)
{ {
PixelRegion srcPR, destPR; PixelRegion srcPR, destPR;
TileManager *tiles;
NamedBuffer *nb; NamedBuffer *nb;
tiles = (TileManager *) client_data; if (! tiles) return;
nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer)); nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer));
nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp); nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp);
@ -654,56 +653,69 @@ new_named_buffer_callback (GtkWidget *w,
pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE); pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE);
copy_region (&srcPR, &destPR); copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data); nb->name = g_strdup ((char *) name);
named_buffers = g_slist_append (named_buffers, (void *) nb); named_buffers = g_slist_append (named_buffers, (void *) nb);
} }
static void static void
new_named_buffer (TileManager *new_tiles) cut_named_buffer_callback (GtkWidget *w,
gpointer client_data,
gpointer call_data)
{ {
/* Create the dialog box to ask for a name */ TileManager *new_tiles;
query_string_box ("Named Buffer", "Enter a name for this buffer", NULL, GDisplay *gdisp;
new_named_buffer_callback, new_tiles); char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
gdisplays_flush ();
} }
int int
named_edit_cut (void *gdisp_ptr) named_edit_cut (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
/* stop any active tool */ /* stop any active tool */
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
active_tool_control (HALT, gdisp_ptr); active_tool_control (HALT, gdisp_ptr);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage)); query_string_box ("Cut Named", "Enter a name for this buffer", NULL,
cut_named_buffer_callback, gdisp);
return TRUE;
}
if (! new_tiles) static void
return FALSE; copy_named_buffer_callback (GtkWidget *w,
else gpointer client_data,
{ gpointer call_data)
new_named_buffer (new_tiles); {
gdisplays_flush (); TileManager *new_tiles;
return TRUE; GDisplay *gdisp;
} char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
} }
int int
named_edit_copy (void *gdisp_ptr) named_edit_copy (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
query_string_box ("Copy Named", "Enter a name for this buffer", NULL,
if (! new_tiles) copy_named_buffer_callback, gdisp);
return FALSE; return TRUE;
else
{
new_named_buffer (new_tiles);
return TRUE;
}
} }
int int

View File

@ -638,15 +638,14 @@ paste_named_buffer (GDisplay *gdisp)
} }
static void static void
new_named_buffer_callback (GtkWidget *w, new_named_buffer (TileManager *tiles,
gpointer client_data, char *name)
gpointer call_data)
{ {
PixelRegion srcPR, destPR; PixelRegion srcPR, destPR;
TileManager *tiles;
NamedBuffer *nb; NamedBuffer *nb;
tiles = (TileManager *) client_data; if (! tiles) return;
nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer)); nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer));
nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp); nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp);
@ -654,56 +653,69 @@ new_named_buffer_callback (GtkWidget *w,
pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE); pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE);
copy_region (&srcPR, &destPR); copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data); nb->name = g_strdup ((char *) name);
named_buffers = g_slist_append (named_buffers, (void *) nb); named_buffers = g_slist_append (named_buffers, (void *) nb);
} }
static void static void
new_named_buffer (TileManager *new_tiles) cut_named_buffer_callback (GtkWidget *w,
gpointer client_data,
gpointer call_data)
{ {
/* Create the dialog box to ask for a name */ TileManager *new_tiles;
query_string_box ("Named Buffer", "Enter a name for this buffer", NULL, GDisplay *gdisp;
new_named_buffer_callback, new_tiles); char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
gdisplays_flush ();
} }
int int
named_edit_cut (void *gdisp_ptr) named_edit_cut (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
/* stop any active tool */ /* stop any active tool */
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
active_tool_control (HALT, gdisp_ptr); active_tool_control (HALT, gdisp_ptr);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage)); query_string_box ("Cut Named", "Enter a name for this buffer", NULL,
cut_named_buffer_callback, gdisp);
return TRUE;
}
if (! new_tiles) static void
return FALSE; copy_named_buffer_callback (GtkWidget *w,
else gpointer client_data,
{ gpointer call_data)
new_named_buffer (new_tiles); {
gdisplays_flush (); TileManager *new_tiles;
return TRUE; GDisplay *gdisp;
} char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
} }
int int
named_edit_copy (void *gdisp_ptr) named_edit_copy (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
query_string_box ("Copy Named", "Enter a name for this buffer", NULL,
if (! new_tiles) copy_named_buffer_callback, gdisp);
return FALSE; return TRUE;
else
{
new_named_buffer (new_tiles);
return TRUE;
}
} }
int int

View File

@ -638,15 +638,14 @@ paste_named_buffer (GDisplay *gdisp)
} }
static void static void
new_named_buffer_callback (GtkWidget *w, new_named_buffer (TileManager *tiles,
gpointer client_data, char *name)
gpointer call_data)
{ {
PixelRegion srcPR, destPR; PixelRegion srcPR, destPR;
TileManager *tiles;
NamedBuffer *nb; NamedBuffer *nb;
tiles = (TileManager *) client_data; if (! tiles) return;
nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer)); nb = (NamedBuffer *) g_malloc (sizeof (NamedBuffer));
nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp); nb->buf = tile_manager_new (tiles->levels[0].width, tiles->levels[0].height, tiles->levels[0].bpp);
@ -654,56 +653,69 @@ new_named_buffer_callback (GtkWidget *w,
pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE); pixel_region_init (&destPR, nb->buf, 0, 0, tiles->levels[0].width, tiles->levels[0].height, TRUE);
copy_region (&srcPR, &destPR); copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data); nb->name = g_strdup ((char *) name);
named_buffers = g_slist_append (named_buffers, (void *) nb); named_buffers = g_slist_append (named_buffers, (void *) nb);
} }
static void static void
new_named_buffer (TileManager *new_tiles) cut_named_buffer_callback (GtkWidget *w,
gpointer client_data,
gpointer call_data)
{ {
/* Create the dialog box to ask for a name */ TileManager *new_tiles;
query_string_box ("Named Buffer", "Enter a name for this buffer", NULL, GDisplay *gdisp;
new_named_buffer_callback, new_tiles); char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
gdisplays_flush ();
} }
int int
named_edit_cut (void *gdisp_ptr) named_edit_cut (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
/* stop any active tool */ /* stop any active tool */
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
active_tool_control (HALT, gdisp_ptr); active_tool_control (HALT, gdisp_ptr);
new_tiles = edit_cut (gdisp->gimage, gimage_active_drawable (gdisp->gimage)); query_string_box ("Cut Named", "Enter a name for this buffer", NULL,
cut_named_buffer_callback, gdisp);
return TRUE;
}
if (! new_tiles) static void
return FALSE; copy_named_buffer_callback (GtkWidget *w,
else gpointer client_data,
{ gpointer call_data)
new_named_buffer (new_tiles); {
gdisplays_flush (); TileManager *new_tiles;
return TRUE; GDisplay *gdisp;
} char *name;
gdisp = (GDisplay *) client_data;
name = g_strdup ((char *) call_data);
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
if (new_tiles)
new_named_buffer (new_tiles, name);
} }
int int
named_edit_copy (void *gdisp_ptr) named_edit_copy (void *gdisp_ptr)
{ {
TileManager *new_tiles;
GDisplay *gdisp; GDisplay *gdisp;
gdisp = (GDisplay *) gdisp_ptr; gdisp = (GDisplay *) gdisp_ptr;
new_tiles = edit_copy (gdisp->gimage, gimage_active_drawable (gdisp->gimage));
query_string_box ("Copy Named", "Enter a name for this buffer", NULL,
if (! new_tiles) copy_named_buffer_callback, gdisp);
return FALSE; return TRUE;
else
{
new_named_buffer (new_tiles);
return TRUE;
}
} }
int int