[libgd] Add GdHeaderCloseButton.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgd] Add GdHeaderCloseButton.
- Date: Wed, 19 Jun 2013 17:39:05 +0000 (UTC)
commit fa4a51e56d8e6b67e34b73aa9981c3f572321d92
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Wed Jun 19 19:30:02 2013 +0200
Add GdHeaderCloseButton.
This widget is needed to send the delete event from JS
libgd/gd-header-button.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++
libgd/gd-header-button.h | 5 ++++
2 files changed, 53 insertions(+), 0 deletions(-)
---
diff --git a/libgd/gd-header-button.c b/libgd/gd-header-button.c
index 5a3c2c6..c6fa45d 100644
--- a/libgd/gd-header-button.c
+++ b/libgd/gd-header-button.c
@@ -443,6 +443,43 @@ gd_header_radio_button_init (GdHeaderRadioButton *self)
{
}
+typedef GdHeaderSimpleButtonClass GdHeaderCloseButtonClass;
+G_DEFINE_TYPE (GdHeaderCloseButton, gd_header_close_button, GD_TYPE_HEADER_SIMPLE_BUTTON)
+
+static void
+gd_header_close_button_clicked (GtkButton *button)
+{
+ GtkWidget *toplevel;
+ GdkEvent *event;
+
+ GTK_BUTTON_CLASS (GET_PARENT_CLASS (button))->clicked (button);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button));
+
+ event = gdk_event_new (GDK_DELETE);
+
+ event->any.window = g_object_ref (gtk_widget_get_window (toplevel));
+ event->any.send_event = TRUE;
+
+ gtk_main_do_event (event);
+ gdk_event_free (event);
+}
+
+static void
+gd_header_close_button_class_init (GdHeaderCloseButtonClass *klass)
+{
+ GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass);
+
+ button_class->clicked = gd_header_close_button_clicked;
+}
+
+static void
+gd_header_close_button_init (GdHeaderCloseButton *self)
+{
+ gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (self),
+ "window-close-symbolic");
+}
+
/**
* gd_header_simple_button_new:
*
@@ -486,3 +523,14 @@ gd_header_menu_button_new (void)
{
return g_object_new (GD_TYPE_HEADER_MENU_BUTTON, NULL);
}
+
+/**
+ * gd_header_close_button_new:
+ *
+ * Returns: (transfer none):
+ */
+GtkWidget *
+gd_header_close_button_new (void)
+{
+ return g_object_new (GD_TYPE_HEADER_CLOSE_BUTTON, NULL);
+}
diff --git a/libgd/gd-header-button.h b/libgd/gd-header-button.h
index fa5c41b..db38ff4 100644
--- a/libgd/gd-header-button.h
+++ b/libgd/gd-header-button.h
@@ -62,6 +62,11 @@ typedef GtkMenuButton GdHeaderMenuButton;
GType gd_header_menu_button_get_type (void) G_GNUC_CONST;
GtkWidget * gd_header_menu_button_new (void);
+#define GD_TYPE_HEADER_CLOSE_BUTTON (gd_header_close_button_get_type ())
+typedef GdHeaderSimpleButton GdHeaderCloseButton;
+GType gd_header_close_button_get_type (void) G_GNUC_CONST;
+GtkWidget * gd_header_close_button_new (void);
+
G_END_DECLS
#endif /* __GD_HEADER_BUTTON_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]