forked from AuroraMiddleware/gtk
Add a revealer to GtkInfoBar
Make GtkInfoBar slide in and out as it is shown or hidden. https://bugzilla.gnome.org/show_bug.cgi?id=704334
This commit is contained in:
parent
c636b21aec
commit
1198ffb0bc
@ -41,6 +41,7 @@
|
|||||||
#include "gtkenums.h"
|
#include "gtkenums.h"
|
||||||
#include "gtkbindings.h"
|
#include "gtkbindings.h"
|
||||||
#include "gtkdialog.h"
|
#include "gtkdialog.h"
|
||||||
|
#include "gtkrevealer.h"
|
||||||
#include "gtkintl.h"
|
#include "gtkintl.h"
|
||||||
#include "gtkprivate.h"
|
#include "gtkprivate.h"
|
||||||
#include "gtkorientable.h"
|
#include "gtkorientable.h"
|
||||||
@ -127,6 +128,7 @@ struct _GtkInfoBarPrivate
|
|||||||
GtkWidget *content_area;
|
GtkWidget *content_area;
|
||||||
GtkWidget *action_area;
|
GtkWidget *action_area;
|
||||||
GtkWidget *close_button;
|
GtkWidget *close_button;
|
||||||
|
GtkWidget *revealer;
|
||||||
|
|
||||||
gboolean show_close_button;
|
gboolean show_close_button;
|
||||||
GtkMessageType message_type;
|
GtkMessageType message_type;
|
||||||
@ -377,6 +379,36 @@ gtk_info_bar_draw (GtkWidget *widget,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_info_bar_show (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkInfoBarPrivate *priv = GTK_INFO_BAR (widget)->priv;
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_info_bar_parent_class)->show (widget);
|
||||||
|
|
||||||
|
gtk_revealer_set_reveal_child (GTK_REVEALER (priv->revealer), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
child_revealed (GObject *object, GParamSpec *pspec, gpointer data)
|
||||||
|
{
|
||||||
|
GtkWidget *widget = data;
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_info_bar_parent_class)->hide (widget);
|
||||||
|
g_signal_handlers_disconnect_by_func (object, child_revealed, widget);
|
||||||
|
g_object_notify (G_OBJECT (widget), "visible");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_info_bar_hide (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkInfoBarPrivate *priv = GTK_INFO_BAR (widget)->priv;
|
||||||
|
|
||||||
|
gtk_revealer_set_reveal_child (GTK_REVEALER (priv->revealer), FALSE);
|
||||||
|
g_signal_connect_object (priv->revealer, "notify::child-revealed",
|
||||||
|
G_CALLBACK (child_revealed), widget, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_info_bar_class_init (GtkInfoBarClass *klass)
|
gtk_info_bar_class_init (GtkInfoBarClass *klass)
|
||||||
{
|
{
|
||||||
@ -394,6 +426,8 @@ gtk_info_bar_class_init (GtkInfoBarClass *klass)
|
|||||||
widget_class->get_preferred_width = gtk_info_bar_get_preferred_width;
|
widget_class->get_preferred_width = gtk_info_bar_get_preferred_width;
|
||||||
widget_class->get_preferred_height = gtk_info_bar_get_preferred_height;
|
widget_class->get_preferred_height = gtk_info_bar_get_preferred_height;
|
||||||
widget_class->draw = gtk_info_bar_draw;
|
widget_class->draw = gtk_info_bar_draw;
|
||||||
|
widget_class->show = gtk_info_bar_show;
|
||||||
|
widget_class->hide = gtk_info_bar_hide;
|
||||||
|
|
||||||
klass->close = gtk_info_bar_close;
|
klass->close = gtk_info_bar_close;
|
||||||
|
|
||||||
@ -549,6 +583,7 @@ gtk_info_bar_class_init (GtkInfoBarClass *klass)
|
|||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, content_area);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, content_area);
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, action_area);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, action_area);
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, close_button);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, close_button);
|
||||||
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkInfoBar, revealer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -5,62 +5,76 @@
|
|||||||
<property name="app_paintable">True</property>
|
<property name="app_paintable">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="content_area">
|
<object class="GtkRevealer" id="revealer">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="border_width">8</property>
|
|
||||||
<property name="spacing">16</property>
|
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<object class="GtkBox" id="content">
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="action_area">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="border_width">6</property>
|
|
||||||
<property name="orientation">horizontal</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="close_button">
|
|
||||||
<property name="visible">False</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="border_width">6</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
<style>
|
|
||||||
<class name="raised"/>
|
|
||||||
<class name="close"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="close_image">
|
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="icon_name">window-close-symbolic</property>
|
<property name="border_width">0</property>
|
||||||
|
<property name="spacing">0</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="content_area">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="border_width">8</property>
|
||||||
|
<property name="spacing">16</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="action_area">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="border_width">6</property>
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="close_button">
|
||||||
|
<property name="visible">False</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="border_width">6</property>
|
||||||
|
<property name="relief">none</property>
|
||||||
|
<style>
|
||||||
|
<class name="raised"/>
|
||||||
|
<class name="close"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="close_image">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">window-close-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
Loading…
Reference in New Issue
Block a user