diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2017-06-25 17:17:45 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2017-12-30 13:42:16 -0300 |
commit | e438770ecfb85993acf4943caad3c09c9c74e7d6 (patch) | |
tree | 090e3fca89fba618390800ba805ed9c45b14eef7 /gladeui | |
parent | 57822f5c2778c2c2a1be4ee73c6fd4a5b3128069 (diff) | |
download | glade-e438770ecfb85993acf4943caad3c09c9c74e7d6.tar.gz |
GladePlaceholder: use middle click button to create more than one widget
Diffstat (limited to 'gladeui')
-rw-r--r-- | gladeui/glade-placeholder.c | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/gladeui/glade-placeholder.c b/gladeui/glade-placeholder.c index cf33946f..e4001908 100644 --- a/gladeui/glade-placeholder.c +++ b/gladeui/glade-placeholder.c @@ -434,39 +434,43 @@ glade_placeholder_button_press (GtkWidget *widget, GdkEventButton *event) if (!gtk_widget_has_focus (widget)) gtk_widget_grab_focus (widget); - if (event->button == 1) + if ((event->button == 1 || event->button == 2) && + event->type == GDK_BUTTON_PRESS && adaptor != NULL) { - if (event->type == GDK_BUTTON_PRESS && adaptor != NULL) - { - GladeWidget *parent = glade_placeholder_get_parent (placeholder); + GladeWidget *parent = glade_placeholder_get_parent (placeholder); - /* A widget type is selected in the palette. - * Add a new widget of that type. - */ - glade_command_create (adaptor, parent, placeholder, project); + /* A widget type is selected in the palette. + * Add a new widget of that type. + */ + glade_command_create (adaptor, parent, placeholder, project); + /* Let the user use the middle button to create more than one widget */ + if (event->button != 2) + { glade_project_set_add_item (project, NULL); - /* reset the cursor */ - glade_cursor_set (project, event->window, GLADE_CURSOR_SELECTOR); - handled = TRUE; - } - else if (event->type == GDK_2BUTTON_PRESS && adaptor == NULL) - { - GtkWidget *event_widget = gtk_get_event_widget ((GdkEvent*) event); - GladeWidget *toplevel = glade_widget_get_toplevel (glade_placeholder_get_parent (placeholder)); - GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (glade_widget_get_object (toplevel))); - GtkWidget *pop = glade_placeholder_popover_new (placeholder, parent); - GdkRectangle rect = {0, 0, 8, 8}; - - gtk_widget_translate_coordinates (event_widget, parent, - event->x, event->y, - &rect.x, &rect.y); - gtk_popover_set_pointing_to (GTK_POPOVER (pop), &rect); - gtk_widget_show (pop); - handled = TRUE; + glade_project_set_pointer_mode (project, GLADE_POINTER_SELECT); } + + handled = TRUE; } + else if (event->button == 1 && + event->type == GDK_2BUTTON_PRESS && + adaptor == NULL) + { + GtkWidget *event_widget = gtk_get_event_widget ((GdkEvent*) event); + GladeWidget *toplevel = glade_widget_get_toplevel (glade_placeholder_get_parent (placeholder)); + GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (glade_widget_get_object (toplevel))); + GtkWidget *pop = glade_placeholder_popover_new (placeholder, parent); + GdkRectangle rect = {0, 0, 8, 8}; + + gtk_widget_translate_coordinates (event_widget, parent, + event->x, event->y, + &rect.x, &rect.y); + gtk_popover_set_pointing_to (GTK_POPOVER (pop), &rect); + gtk_widget_show (pop); + handled = TRUE; + } if (!handled && glade_popup_is_popup_event (event)) { |