Commit 8f0018923a27459cfa79a144933c05ccd928652d

Authored by Perry Werneck
1 parent b37c1d20
Exists in master and in 1 other branch develop

Fixing windows build.

Showing 1 changed file with 49 additions and 0 deletions   Show diff stats
src/selection/windows/copy.c
... ... @@ -193,3 +193,52 @@ void v3270_update_system_clipboard(GtkWidget *widget)
193 193  
194 194 }
195 195  
  196 +void v3270_set_copy_target(GtkWidget *widget, const gchar *target, guint flags, guint info) {
  197 +
  198 + v3270 * terminal = GTK_V3270(widget);
  199 +
  200 + if(!terminal->selection.blocks)
  201 + {
  202 + // No clipboard data, return.
  203 + v3270_emit_copy_state(widget);
  204 + return;
  205 + }
  206 +
  207 + // Has clipboard data, inform system.
  208 + GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,terminal->selection.target);
  209 +
  210 + GtkTargetList * list = gtk_target_list_new(NULL,0);
  211 +
  212 + GtkTargetEntry entry = {
  213 + .target = (char *) target,
  214 + .flags = flags,
  215 + .info = info
  216 + };
  217 +
  218 + gtk_target_list_add_table(list, &entry, 1);
  219 +
  220 + int n_targets;
  221 + GtkTargetEntry * targets = gtk_target_table_new_from_list(list, &n_targets);
  222 +
  223 + if(gtk_clipboard_set_with_owner(
  224 + clipboard,
  225 + targets,
  226 + n_targets,
  227 + (GtkClipboardGetFunc) clipboard_get,
  228 + (GtkClipboardClearFunc) clipboard_clear,
  229 + G_OBJECT(widget)
  230 + ))
  231 + {
  232 + gtk_clipboard_set_can_store(clipboard,targets,1);
  233 + }
  234 +
  235 + gtk_target_table_free(targets, n_targets);
  236 + gtk_target_list_unref(list);
  237 + v3270_emit_copy_state(widget);
  238 +}
  239 +
  240 +LIB3270_EXPORT void v3270_copy_as_html(GtkWidget *widget) {
  241 + debug("%s(%p)",__FUNCTION__,widget);
  242 + v3270_set_copy_target(widget,"text/html", 0, CLIPBOARD_TYPE_HTML);
  243 +}
  244 +
... ...