[libgd] Add GdHeaderCloseButton.



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]