Skip to content

Commit 5842349

Browse files
committed
save and restore vis settings in thumbnails
1 parent 87c20e0 commit 5842349

File tree

4 files changed

+35
-12
lines changed

4 files changed

+35
-12
lines changed

TODO

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
1-
- we seem to be making a lot of iimageview during demo load?
1+
- we save and restore scale/offset/falsecolour on imagewindow popup and
2+
popdown
3+
4+
add log, etc.
5+
6+
- "reset" in display bar resets the position of scale/offset widgets, but does
7+
not reset the menu items (eg. tick on falsecolour)
8+
9+
- can we make tilesource on demand in iimageview_refresh?
10+
11+
might speed up workspace load
212

313
- we are not always refreshing thumbnails after load completes
414

515
- shrink as well as expand tiles in tilecache_snapshot
616

7-
- iimage_update_from_tilesource() needs to make all iimageview refresh
8-
917
- long formula should truncate with an ellipsis
1018

11-
- are we autosizing the sinkscreen threadpool? we shouldn't
19+
- are we autosizing the sinkscreen threadpool?
20+
21+
maybe we shouldn't? or maybe it's a good thing?
1222

1323
# menu redesign
1424

src/iimage.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,4 +420,6 @@ iimage_update_from_tilesource(iImage *iimage, Tilesource *tilesource)
420420
iimage->scale = tilesource->scale;
421421
iimage->offset = tilesource->offset;
422422
iimage->falsecolour = tilesource->falsecolour;
423+
424+
iobject_changed(IOBJECT(iimage));
423425
}

src/iimageview.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,11 @@ iimageview_refresh(vObject *vobject)
130130
iImageview *iimageview = IIMAGEVIEW(vobject);
131131
iImage *iimage = IIMAGE(vobject->iobject);
132132

133+
Tilesource *tilesource;
134+
133135
#ifdef DEBUG
134-
printf("iimageview_refresh:\n");
135136
#endif /*DEBUG*/
137+
printf("iimageview_refresh:\n");
136138

137139
// on the first refresh, register with the enclosing workspaceview
138140
if (iimageview->first) {
@@ -150,13 +152,12 @@ iimageview_refresh(vObject *vobject)
150152
"tilesource", NULL,
151153
NULL);
152154
else {
153-
Tilesource *current_tilesource;
154155
g_object_get(iimageview->imagedisplay,
155-
"tilesource", &current_tilesource,
156+
"tilesource", &tilesource,
156157
NULL);
157158

158-
if (current_tilesource &&
159-
current_tilesource->image != iimage->value.ii->image) {
159+
if (!tilesource ||
160+
(tilesource->image != iimage->value.ii->image)) {
160161
Tilesource *new_tilesource =
161162
tilesource_new_from_iimage(iimage, -1000);
162163

@@ -171,10 +172,20 @@ iimageview_refresh(vObject *vobject)
171172
VIPS_UNREF(new_tilesource);
172173
}
173174

174-
VIPS_UNREF(current_tilesource);
175+
VIPS_UNREF(tilesource);
175176
}
176177
}
177178

179+
g_object_get(iimageview->imagedisplay,
180+
"tilesource", &tilesource,
181+
NULL);
182+
if (tilesource)
183+
g_object_set(tilesource,
184+
"scale", iimage->scale,
185+
"offset", iimage->offset,
186+
"falsecolour", iimage->falsecolour,
187+
NULL);
188+
178189
if (iimageview->label)
179190
set_glabel(iimageview->label, "%s", IOBJECT(iimage)->caption);
180191

src/imagewindow.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -736,12 +736,12 @@ imagewindow_dispose(GObject *object)
736736
printf("imagewindow_dispose:\n");
737737
#endif /*DEBUG*/
738738

739-
imagewindow_files_free(win);
740-
741739
FREESID(win->iimage_changed_sid, win->iimage);
742740
FREESID(win->iimage_destroy_sid, win->iimage);
743741
VIPS_FREEF(gtk_widget_unparent, win->right_click_menu);
744742

743+
imagewindow_files_free(win);
744+
745745
G_OBJECT_CLASS(imagewindow_parent_class)->dispose(object);
746746
}
747747

0 commit comments

Comments
 (0)