filechooserwidget: Inherit from GtkWidget

This commit is contained in:
Timm Bäder 2017-03-25 20:36:10 +01:00
parent 3c0da77849
commit 806c4f7d2f
4 changed files with 361 additions and 307 deletions

View File

@ -215,6 +215,8 @@ struct _GtkFileChooserWidgetPrivate {
GtkFileSystem *file_system;
GtkWidget *box;
/* Save mode widgets */
GtkWidget *save_widgets;
GtkWidget *save_widgets_table;
@ -612,7 +614,7 @@ static void switch_to_home_dir (GtkFileChooserWidget *impl);
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_BOX,
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkFileChooserWidget)
G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER,
gtk_file_chooser_widget_iface_init)
@ -3652,6 +3654,12 @@ gtk_file_chooser_widget_dispose (GObject *object)
priv->external_entry = NULL;
}
if (priv->box)
{
gtk_widget_unparent (priv->box);
priv->box = NULL;
}
g_clear_object (&priv->long_press_gesture);
G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->dispose (object);
@ -8062,6 +8070,43 @@ add_normal_and_shifted_binding (GtkBindingSet *binding_set,
signal_name, 0);
}
static void
gtk_file_chooser_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_measure (priv->box, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_file_chooser_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->box, snapshot);
}
static void
gtk_file_chooser_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_size_allocate (priv->box, allocation);
}
static void
gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
{
@ -8086,6 +8131,9 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
widget_class->style_updated = gtk_file_chooser_widget_style_updated;
widget_class->screen_changed = gtk_file_chooser_widget_screen_changed;
widget_class->key_press_event = gtk_file_chooser_widget_key_press_event;
widget_class->measure = gtk_file_chooser_widget_measure;
widget_class->size_allocate = gtk_file_chooser_widget_size_allocate;
widget_class->snapshot = gtk_file_chooser_widget_snapshot;
/*
* Signals
@ -8478,6 +8526,7 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, rename_file_error_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, rename_file_popover);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, remote_warning_bar);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, box);
/* And a *lot* of callbacks to bind ... */
gtk_widget_class_bind_template_callback (widget_class, browse_files_key_press_event_cb);
@ -8607,6 +8656,8 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
impl->priv = gtk_file_chooser_widget_get_instance_private (impl);
priv = impl->priv;
gtk_widget_set_has_window (GTK_WIDGET (impl), FALSE);
priv->local_only = FALSE;
priv->preview_widget_active = TRUE;
priv->use_preview_label = TRUE;

View File

@ -41,7 +41,7 @@ typedef struct _GtkFileChooserWidgetClass GtkFileChooserWidgetClass;
struct _GtkFileChooserWidget
{
GtkBox parent_instance;
GtkWidget parent_instance;
GtkFileChooserWidgetPrivate *priv;
};
@ -52,7 +52,7 @@ struct _GtkFileChooserWidget
*/
struct _GtkFileChooserWidgetClass
{
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/*< private >*/

View File

@ -20,7 +20,6 @@
</child>
<child>
<object class="GtkFileChooserWidget" id="widget">
<property name="orientation">vertical</property>
<signal name="default-size-changed" handler="file_chooser_widget_default_size_changed" swapped="no"/>
<signal name="file-activated" handler="file_chooser_widget_file_activated" swapped="no"/>
<signal name="response-requested" handler="file_chooser_widget_response_requested" swapped="no"/>

View File

@ -2,7 +2,9 @@
<interface domain="gtk30">
<!-- interface-requires gtk+ 3.10 -->
<!-- interface-requires gtkprivate 3.10 -->
<template class="GtkFileChooserWidget" parent="GtkBox">
<template class="GtkFileChooserWidget" parent="GtkWidget">
<child>
<object class="GtkBox" id="box">
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="browse_widgets_box">
@ -382,6 +384,8 @@
<property name="pack-type">end</property>
</packing>
</child>
</object>
</child>
</template>
<object class="GtkSizeGroup" id="browse_path_bar_size_group">
<property name="mode">vertical</property>