diff options
-rw-r--r-- | src/objects.c | 6 | ||||
-rw-r--r-- | src/presentation.h | 3 | ||||
-rw-r--r-- | src/tool_image.c | 2 | ||||
-rw-r--r-- | src/tool_select.c | 22 | ||||
-rw-r--r-- | src/tool_text.c | 2 |
5 files changed, 27 insertions, 8 deletions
diff --git a/src/objects.c b/src/objects.c index 80b57a7..93349ea 100644 --- a/src/objects.c +++ b/src/objects.c @@ -196,9 +196,9 @@ void realise_everything(struct presentation *p) int i; /* Realise all the tools */ - p->select_tool->realise(p->select_tool, p->drawingarea); - p->text_tool->realise(p->text_tool, p->drawingarea); - p->image_tool->realise(p->image_tool, p->drawingarea); + p->select_tool->realise(p->select_tool, p->drawingarea, p); + p->text_tool->realise(p->text_tool, p->drawingarea, p); + p->image_tool->realise(p->image_tool, p->drawingarea, p); for ( i=0; i<p->num_slides; i++ ) { diff --git a/src/presentation.h b/src/presentation.h index 228d886..8b4bc6f 100644 --- a/src/presentation.h +++ b/src/presentation.h @@ -94,7 +94,8 @@ struct toolinfo int (*valid_object)(struct object *o); - void (*realise)(struct toolinfo *tip, GtkWidget *w); + void (*realise)(struct toolinfo *tip, GtkWidget *w, + struct presentation *p); struct object *(*deserialize)(struct presentation *p, struct ds_node *root, diff --git a/src/tool_image.c b/src/tool_image.c index 0187ad4..aaea288 100644 --- a/src/tool_image.c +++ b/src/tool_image.c @@ -467,7 +467,7 @@ static struct object *deserialize(struct presentation *p, struct ds_node *root, } -static void realise(struct toolinfo *ti, GtkWidget *w) +static void realise(struct toolinfo *ti, GtkWidget *w, struct presentation *p) { ti->tbox = gtk_label_new("Image tool"); g_object_ref(ti->tbox); diff --git a/src/tool_select.c b/src/tool_select.c index e473149..acc6ac4 100644 --- a/src/tool_select.c +++ b/src/tool_select.c @@ -180,14 +180,32 @@ static int valid_object(struct object *o) } -static void realise(struct toolinfo *ti, GtkWidget *w) +static gint delete_sig(GtkWidget *widget, struct presentation *p) +{ + if ( p->editing_object == NULL ) return FALSE; + + delete_object(p->editing_object); + p->editing_object = NULL; + redraw_slide(p->cur_edit_slide); + + return FALSE; +} + + +static void realise(struct toolinfo *ti, GtkWidget *w, struct presentation *p) { GtkWidget *hbox; + GtkWidget *del; hbox = gtk_hbox_new(FALSE, 0.0); ti->tbox = hbox; + + del = gtk_button_new_from_stock(GTK_STOCK_DELETE); + g_signal_connect(G_OBJECT(del), "clicked", G_CALLBACK(delete_sig), p); + gtk_box_pack_start(GTK_BOX(hbox), del, 0, 0, FALSE); + g_object_ref(ti->tbox); - gtk_widget_show(ti->tbox); + gtk_widget_show_all(ti->tbox); } diff --git a/src/tool_text.c b/src/tool_text.c index d011c49..68e53c7 100644 --- a/src/tool_text.c +++ b/src/tool_text.c @@ -732,7 +732,7 @@ static int valid_object(struct object *o) } -static void realise(struct toolinfo *ti, GtkWidget *w) +static void realise(struct toolinfo *ti, GtkWidget *w, struct presentation *p) { struct text_toolinfo *tip = (struct text_toolinfo *)ti; tip->pc = gtk_widget_get_pango_context(w); |