Skip to content

Commit e6d4107

Browse files
committed
start work
1 parent b3ff0d6 commit e6d4107

File tree

7 files changed

+67
-5
lines changed

7 files changed

+67
-5
lines changed

TODO

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
- row range select seems to have broken
1+
- row range select breaks after "duplicate"
2+
3+
shift and ctrl click stop affecting select
4+
5+
the keyboard focus is somewhere else, and left-click on rowview
6+
buttons or on workspace background does not grab the focus
27

38
- could right-click on a region label pop up the rowview menu?
49

510
difficult with the structure we have now
611

12+
have a custom menu and reimplement actions there
13+
714
- put region snap back?
815

916
- maxpos, then create mark from coordinate should be two clicks

src/gtk/imageui.ui

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<interface>
3+
34
<template class="Imageui" parent="GtkWidget">
45
<child>
56
<object class="GtkScrolledWindow" id="scrolled_window">
@@ -43,5 +44,6 @@
4344

4445
</object>
4546
</child>
47+
4648
</template>
4749
</interface>

src/gtk/imagewindow.ui

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<interface>
3+
34
<menu id="imagewindow-menu">
45
<section>
56
<attribute name="display-hint">horizontal-buttons</attribute>
@@ -112,6 +113,29 @@
112113
</section>
113114
</menu>
114115

116+
<menu id="imagewindow-region-menu">
117+
<section>
118+
<item>
119+
<attribute name='label' translatable='yes'>Duplicate</attribute>
120+
</item>
121+
<item>
122+
<attribute name='label' translatable='yes'>Reset</attribute>
123+
</item>
124+
</section>
125+
126+
<section>
127+
<item>
128+
<attribute name='label' translatable='yes'>Save as ...</attribute>
129+
</item>
130+
</section>
131+
132+
<section>
133+
<item>
134+
<attribute name='label' translatable='yes'>Delete</attribute>
135+
</item>
136+
</section>
137+
</menu>
138+
115139
<template class="Imagewindow" parent="GtkApplicationWindow">
116140
<property name="title" translatable="yes">Image window</property>
117141
<property name="default-width">1100</property>
@@ -264,5 +288,12 @@
264288

265289
</object>
266290
</child>
291+
292+
<child>
293+
<object class="GtkPopoverMenu" id="region_menu">
294+
<property name="menu-model">imagewindow-region-menu</property>
295+
</object>
296+
</child>
297+
267298
</template>
268299
</interface>

src/imageui.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ struct _Imageui {
136136
* shift state here in the keyboard handler.
137137
*/
138138
guint modifiers;
139-
140139
};
141140

142141
G_DEFINE_TYPE(Imageui, imageui, GTK_TYPE_WIDGET);
@@ -986,7 +985,7 @@ imageui_key_released(GtkEventControllerKey *self,
986985
}
987986

988987
// (x, y) in gtk cods
989-
static Regionview *
988+
Regionview *
990989
imageui_pick_regionview(Imageui *imageui, int x, int y)
991990
{
992991
for (GSList *p = imageui->regionviews; p; p = p->next) {

src/imageui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ double imageui_get_scale(Imageui *imageui);
5353
void imageui_get_mouse_position(Imageui *imageui,
5454
double *image_x, double *image_y);
5555

56+
Regionview *imageui_pick_regionview(Imageui *imageui, int x, int y);
5657
double imageui_get_zoom(Imageui *imageui);
5758
void imageui_bestfit(Imageui *imageui);
5859
void imageui_magin(Imageui *imageui);

src/imagewindow.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ struct _Imagewindow {
108108
GtkWidget *properties;
109109
GtkWidget *display_bar;
110110
GtkWidget *info_bar;
111+
GtkWidget *region_menu;
111112

112113
/* The set of active images in the stack right now. These are not
113114
* references.
@@ -118,6 +119,10 @@ struct _Imagewindow {
118119
*/
119120
ViewSettings view_settings;
120121

122+
/* Set on menu popup on a regionview.
123+
*/
124+
View *action_view;
125+
121126
GSettings *settings;
122127
};
123128

@@ -1352,7 +1357,18 @@ imagewindow_pressed(GtkGestureClick *gesture,
13521357
guint n_press, double x, double y, Imagewindow *win)
13531358
{
13541359
Imageui *imageui = win->imageui;
1355-
GtkWidget *menu = win->right_click_menu;
1360+
1361+
GtkWidget *menu;
1362+
Regionview *regionview;
1363+
1364+
menu = NULL;
1365+
if (imageui &&
1366+
(regionview = imageui_pick_regionview(imageui, x, y))) {
1367+
menu = win->region_menu;
1368+
win->action_view = VIEW(regionview);
1369+
}
1370+
else
1371+
menu = win->right_click_menu;
13561372

13571373
gtk_popover_set_pointing_to(GTK_POPOVER(menu),
13581374
&(const GdkRectangle){ x, y, 1, 1 });
@@ -1378,6 +1394,7 @@ imagewindow_class_init(ImagewindowClass *class)
13781394
BIND_VARIABLE(Imagewindow, properties);
13791395
BIND_VARIABLE(Imagewindow, display_bar);
13801396
BIND_VARIABLE(Imagewindow, info_bar);
1397+
BIND_VARIABLE(Imagewindow, region_menu);
13811398

13821399
BIND_CALLBACK(imagewindow_pressed);
13831400
BIND_CALLBACK(imagewindow_error_clicked);

src/workspaceview.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1259,9 +1259,9 @@ workspaceview_key_pressed(GtkEventControllerKey *self,
12591259
gboolean handled;
12601260

12611261
#ifdef DEBUG_VERBOSE
1262+
#endif /*DEBUG_VERBOSE*/
12621263
printf("workspaceview_key_pressed: keyval = %d, state = %d\n",
12631264
keyval, state);
1264-
#endif /*DEBUG_VERBOSE*/
12651265

12661266
handled = FALSE;
12671267

@@ -1292,6 +1292,11 @@ workspaceview_key_released(GtkEventControllerKey *self,
12921292

12931293
gboolean handled;
12941294

1295+
#ifdef DEBUG_VERBOSE
1296+
#endif /*DEBUG_VERBOSE*/
1297+
printf("workspaceview_key_released: keyval = %d, state = %d\n",
1298+
keyval, state);
1299+
12951300
handled = FALSE;
12961301

12971302
switch (keyval) {

0 commit comments

Comments
 (0)