diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/eom-thumb-view.c | 137 | 
1 files changed, 86 insertions, 51 deletions
| diff --git a/src/eom-thumb-view.c b/src/eom-thumb-view.c index eac2922..0c35382 100644 --- a/src/eom-thumb-view.c +++ b/src/eom-thumb-view.c @@ -51,6 +51,30 @@ static EomImage* eom_thumb_view_get_image_from_path (EomThumbView      *thumbvie  static void      eom_thumb_view_popup_menu          (EomThumbView      *widget,  						     GdkEventButton    *event); +static gboolean +thumbview_on_query_tooltip_cb (GtkWidget  *widget, +			       gint        x, +			       gint        y, +			       gboolean    keyboard_mode, +			       GtkTooltip *tooltip, +			       gpointer    user_data); +static void +thumbview_on_parent_set_cb (GtkWidget *widget, +#if GTK_CHECK_VERSION (3, 0, 0) +			    GtkWidget *old_parent, +#else +			    GtkObject *oldparent, +#endif +			    gpointer   user_data); + +static void +thumbview_on_drag_data_get_cb (GtkWidget        *widget, +			       GdkDragContext   *drag_context, +			       GtkSelectionData *data, +			       guint             info, +			       guint             time, +			       gpointer          user_data); +  struct _EomThumbViewPrivate {  	gint start_thumb; /* the first visible thumbnail */  	gint end_thumb;   /* the last visible thumbnail  */ @@ -61,6 +85,67 @@ struct _EomThumbViewPrivate {  /* Drag 'n Drop */  static void +eom_thumb_view_constructed (GObject *object) +{ +	EomThumbView *thumbview; + +	if (G_OBJECT_CLASS (eom_thumb_view_parent_class)->constructed) +		G_OBJECT_CLASS (eom_thumb_view_parent_class)->constructed (object); + +	thumbview = EOM_THUMB_VIEW (object); + +	thumbview->priv->pixbuf_cell = gtk_cell_renderer_pixbuf_new (); + +	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (thumbview), +				    thumbview->priv->pixbuf_cell, +				    FALSE); + +	g_object_set (thumbview->priv->pixbuf_cell, +	              "follow-state", FALSE, +	              "height", 100, +	              "width", 115, +	              "yalign", 0.5, +	              "xalign", 0.5, +	              NULL); + +	gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (thumbview), +					thumbview->priv->pixbuf_cell, +					"pixbuf", EOM_LIST_STORE_THUMBNAIL, +					NULL); + +	gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (thumbview), +					  GTK_SELECTION_MULTIPLE); + +	gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (thumbview), +					  EOM_THUMB_VIEW_SPACING); + +	gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (thumbview), +				       EOM_THUMB_VIEW_SPACING); + +	g_object_set (thumbview, "has-tooltip", TRUE, NULL); + +	g_signal_connect (thumbview, +			  "query-tooltip", +			  G_CALLBACK (thumbview_on_query_tooltip_cb), +			  NULL); + +	thumbview->priv->start_thumb = 0; +	thumbview->priv->end_thumb = 0; +	thumbview->priv->menu = NULL; + +	g_signal_connect (G_OBJECT (thumbview), "parent-set", +			  G_CALLBACK (thumbview_on_parent_set_cb), NULL); + +	gtk_icon_view_enable_model_drag_source (GTK_ICON_VIEW (thumbview), 0, +						NULL, 0, +						GDK_ACTION_COPY); +	gtk_drag_source_add_uri_targets (GTK_WIDGET (thumbview)); + +	g_signal_connect (G_OBJECT (thumbview), "drag-data-get", +			  G_CALLBACK (thumbview_on_drag_data_get_cb), NULL); +} + +static void  eom_thumb_view_finalize (GObject *object)  {  	EomThumbView *thumbview; @@ -97,7 +182,7 @@ eom_thumb_view_class_init (EomThumbViewClass *class)  #else  	GtkObjectClass *object_class = GTK_OBJECT_CLASS (class);  #endif - +	gobject_class->constructed = eom_thumb_view_constructed;  	gobject_class->finalize = eom_thumb_view_finalize;  #if GTK_CHECK_VERSION(3, 0, 0)  	widget_class->destroy = eom_thumb_view_destroy; @@ -519,56 +604,6 @@ static void  eom_thumb_view_init (EomThumbView *thumbview)  {  	thumbview->priv = EOM_THUMB_VIEW_GET_PRIVATE (thumbview); - -	thumbview->priv->pixbuf_cell = gtk_cell_renderer_pixbuf_new (); - -	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (thumbview), -	      	  		    thumbview->priv->pixbuf_cell, -	      			    FALSE); - -	g_object_set (thumbview->priv->pixbuf_cell, -	              "follow-state", FALSE, -	              "height", 100, -	              "width", 115, -	              "yalign", 0.5, -	              "xalign", 0.5, -	              NULL); - -	gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (thumbview), -	                                thumbview->priv->pixbuf_cell, -	      		                "pixbuf", EOM_LIST_STORE_THUMBNAIL, -	                                NULL); - -	gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (thumbview), - 					  GTK_SELECTION_MULTIPLE); - -	gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (thumbview), -					  EOM_THUMB_VIEW_SPACING); - -	gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (thumbview), -				       EOM_THUMB_VIEW_SPACING); - -	g_object_set (thumbview, "has-tooltip", TRUE, NULL); - -	g_signal_connect (thumbview, -			  "query-tooltip", -			  G_CALLBACK (thumbview_on_query_tooltip_cb), -			  NULL); - -	thumbview->priv->start_thumb = 0; -	thumbview->priv->end_thumb = 0; -	thumbview->priv->menu = NULL; - -	g_signal_connect (G_OBJECT (thumbview), "parent-set", -			  G_CALLBACK (thumbview_on_parent_set_cb), NULL); - -	gtk_icon_view_enable_model_drag_source (GTK_ICON_VIEW (thumbview), 0, -						NULL, 0, -						GDK_ACTION_COPY); -	gtk_drag_source_add_uri_targets (GTK_WIDGET (thumbview)); - -	g_signal_connect (G_OBJECT (thumbview), "drag-data-get", -			  G_CALLBACK (thumbview_on_drag_data_get_cb), NULL);  }  /** | 
