Skip to content

Commit f1bbe71

Browse files
committed
tweaks
1 parent 9d89129 commit f1bbe71

File tree

4 files changed

+35
-30
lines changed

4 files changed

+35
-30
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,17 @@ On success, merge to master.
241241
- duplicate should copy more view params? slider settings? scale and
242242
position?
243243

244+
- looks like duplicate of a texture view will fail ... see
245+
tile_source_duplicate()
246+
247+
- next / prev image does not set scale offset etc
248+
244249
- check mem use, esp with three large images loaded
245250

246251
- PDF page change does not change image size if pages vary in size
247252

248-
- add some internal stuff, like pyramid shape, to props display?
253+
- add some internal stuff, like pyramid shape, to props display? number of
254+
loaded tiles?
249255

250256
- ^C during a slow load leaves a file in /tmp, can we fix this?
251257

src/displaybar.c

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ enum {
2929
};
3030

3131
static void
32-
displaybar_tile_source_changed(TileSource *tile_source,
33-
Displaybar *displaybar)
32+
displaybar_tile_source_changed(TileSource *tile_source, Displaybar *displaybar)
3433
{
3534
#ifdef DEBUG
3635
printf("displaybar_tile_source_changed:\n");
@@ -46,32 +45,28 @@ displaybar_tile_source_changed(TileSource *tile_source,
4645
tslider_changed(TSLIDER(displaybar->offset));
4746
}
4847

49-
gtk_spin_button_set_range(
50-
GTK_SPIN_BUTTON(displaybar->page),
48+
gtk_spin_button_set_range(GTK_SPIN_BUTTON(displaybar->page),
5149
0, tile_source->n_pages - 1);
5250
gtk_widget_set_sensitive(displaybar->page,
5351
tile_source->n_pages > 1 &&
5452
tile_source->mode == TILE_SOURCE_MODE_MULTIPAGE);
5553
}
5654

5755
static void
58-
displaybar_page_changed(TileSource *tile_source,
59-
Displaybar *displaybar)
56+
displaybar_page_changed(TileSource *tile_source, Displaybar *displaybar)
6057
{
6158
#ifdef DEBUG
6259
printf("displaybar_page_changed:\n");
6360
#endif /*DEBUG*/
6461

65-
gtk_spin_button_set_value(
66-
GTK_SPIN_BUTTON(displaybar->page),
62+
gtk_spin_button_set_value(GTK_SPIN_BUTTON(displaybar->page),
6763
tile_source->page);
6864
}
6965

7066
/* Imagewindow has a new tile_source.
7167
*/
7268
static void
73-
displaybar_image_window_changed(ImageWindow *win,
74-
Displaybar *displaybar)
69+
displaybar_image_window_changed(ImageWindow *win, Displaybar *displaybar)
7570
{
7671
TileSource *tile_source;
7772

@@ -89,8 +84,7 @@ displaybar_image_window_changed(ImageWindow *win,
8984
}
9085

9186
static void
92-
displaybar_set_image_window(Displaybar *displaybar,
93-
ImageWindow *win)
87+
displaybar_set_image_window(Displaybar *displaybar, ImageWindow *win)
9488
{
9589
/* No need to ref ... win holds a ref to us.
9690
*/
@@ -179,11 +173,9 @@ displaybar_page_value_changed(GtkSpinButton *spin_button,
179173
}
180174

181175
static void
182-
displaybar_scale_value_changed(Tslider *slider,
183-
Displaybar *displaybar)
176+
displaybar_scale_value_changed(Tslider *slider, Displaybar *displaybar)
184177
{
185-
TileSource *tile_source =
186-
image_window_get_tile_source(displaybar->win);
178+
TileSource *tile_source = image_window_get_tile_source(displaybar->win);
187179

188180
if (tile_source)
189181
g_object_set(tile_source,
@@ -192,11 +184,9 @@ displaybar_scale_value_changed(Tslider *slider,
192184
}
193185

194186
static void
195-
displaybar_offset_value_changed(Tslider *slider,
196-
Displaybar *displaybar)
187+
displaybar_offset_value_changed(Tslider *slider, Displaybar *displaybar)
197188
{
198-
TileSource *tile_source =
199-
image_window_get_tile_source(displaybar->win);
189+
TileSource *tile_source = image_window_get_tile_source(displaybar->win);
200190

201191
if (tile_source)
202192
g_object_set(tile_source,

src/imagewindow.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,8 @@ image_window_imageui_set_visible(ImageWindow *win,
575575
Imageui *imageui, GtkStackTransitionType transition)
576576
{
577577
TileSource *old_tile_source = image_window_get_tile_source(win);
578-
TileSource *new_tile_source = imageui ? imageui_get_tile_source(imageui) : NULL;
578+
TileSource *new_tile_source =
579+
imageui ? imageui_get_tile_source(imageui) : NULL;
579580

580581
VipsImage *image;
581582
char *title;
@@ -597,7 +598,8 @@ image_window_imageui_set_visible(ImageWindow *win,
597598

598599
/* Update title and subtitle.
599600
*/
600-
title = new_tile_source ? (char *) tile_source_get_path(new_tile_source) : NULL;
601+
title = new_tile_source ?
602+
(char *) tile_source_get_path(new_tile_source) : NULL;
601603
title = (char *) tile_source_get_path(new_tile_source);
602604
gtk_label_set_text(GTK_LABEL(win->title), title ? title : "Untitled");
603605

@@ -636,17 +638,18 @@ image_window_imageui_set_visible(ImageWindow *win,
636638
*/
637639
g_autoptr(GVariant) control =
638640
g_settings_get_value(win->settings, "control");
641+
639642
g_object_set(new_tile_source,
640643
"active", g_variant_get_boolean(control),
641644
"visible", TRUE,
642645
NULL);
646+
647+
//tile_source_changed(new_tile_source);
643648
}
644649

645650
// not a ref, so we can just overwrite it
646651
win->imageui = imageui;
647652

648-
image_window_reset_view(win);
649-
650653
image_window_changed(win);
651654
}
652655

@@ -972,19 +975,18 @@ image_window_duplicate_action(GSimpleAction *action,
972975
GVariant *parameter, gpointer user_data)
973976
{
974977
ImageWindow *win = IMAGE_WINDOW(user_data);
978+
GtkStackTransitionType transition = GTK_STACK_TRANSITION_TYPE_NONE;
975979

976980
VipsdispApp *app;
977981
ImageWindow *new_win;
978982
int width, height;
979983

980984
g_object_get(win, "application", &app, NULL);
981985
new_win = image_window_new(app);
982-
gtk_window_present(GTK_WINDOW(new_win));
983986

984987
new_win->n_files = win->n_files;
985988
new_win->files = g_strdupv(win->files);
986989
new_win->current_file = win->current_file;
987-
image_window_open_current_file(new_win, GTK_STACK_TRANSITION_TYPE_NONE);
988990

989991
gtk_window_get_default_size(GTK_WINDOW(win), &width, &height);
990992
gtk_window_set_default_size(GTK_WINDOW(new_win), width, height);
@@ -994,7 +996,16 @@ image_window_duplicate_action(GSimpleAction *action,
994996
copy_state(GTK_WIDGET(new_win), GTK_WIDGET(win), "properties");
995997
copy_state(GTK_WIDGET(new_win), GTK_WIDGET(win), "background");
996998

997-
// FIXME copy other stuff over eg scale, position etc
999+
if (win->imageui) {
1000+
TileSource *tile_source = imageui_get_tile_source(win->imageui);
1001+
TileSource *new_tile_source = tile_source_duplicate(tile_source);
1002+
Imageui *imageui = imageui_new(new_tile_source);
1003+
1004+
image_window_imageui_add(new_win, imageui);
1005+
image_window_imageui_set_visible(new_win, imageui, transition);
1006+
}
1007+
1008+
gtk_window_present(GTK_WINDOW(new_win));
9981009
}
9991010

10001011
static GFile *

src/tilesource.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1887,7 +1887,6 @@ tile_source_duplicate(TileSource *tile_source)
18871887
"falsecolour", &falsecolour,
18881888
"log", &log,
18891889
"icc", &icc,
1890-
"active", &active,
18911890
NULL);
18921891

18931892
g_object_set(new_tile_source,
@@ -1898,7 +1897,6 @@ tile_source_duplicate(TileSource *tile_source)
18981897
"falsecolour", falsecolour,
18991898
"log", log,
19001899
"icc", icc,
1901-
"active", active,
19021900
NULL);
19031901

19041902
return new_tile_source;

0 commit comments

Comments
 (0)