Commit 20612e428d968635600c32f3701a556947746661
1 parent
e0f66cff
Exists in
master
and in
1 other branch
Allowing image formats on clipboard.
Showing
5 changed files
with
40 additions
and
3 deletions
Show diff stats
src/dialogs/settings/clipboard.c
@@ -163,11 +163,22 @@ | @@ -163,11 +163,22 @@ | ||
163 | .label = N_("Smart copy"), | 163 | .label = N_("Smart copy"), |
164 | .tooltip = N_("When set the first copy operation after the selection will set the clipboard contents and the next ones will append"), | 164 | .tooltip = N_("When set the first copy operation after the selection will set the clipboard contents and the next ones will append"), |
165 | .left = 1, | 165 | .left = 1, |
166 | + .top = 4, | ||
167 | + .width = 1, | ||
168 | + .height = 1, | ||
169 | + .grid = COPY_SETTINGS | ||
170 | + }, | ||
171 | + | ||
172 | + { | ||
173 | + .label = N_("Image copy"), | ||
174 | + .tooltip = N_("When set allow image formats on clipboard"), | ||
175 | + .left = 1, | ||
166 | .top = 3, | 176 | .top = 3, |
167 | .width = 1, | 177 | .width = 1, |
168 | .height = 1, | 178 | .height = 1, |
169 | .grid = COPY_SETTINGS | 179 | .grid = COPY_SETTINGS |
170 | } | 180 | } |
181 | + | ||
171 | }; | 182 | }; |
172 | 183 | ||
173 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 184 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
@@ -472,6 +483,7 @@ static void load(GtkWidget *w, GtkWidget *t) { | @@ -472,6 +483,7 @@ static void load(GtkWidget *w, GtkWidget *t) { | ||
472 | gtk_toggle_button_set_active(widget->input.checkboxes[0],(terminal->selection.options & V3270_SELECTION_NON_BREAKABLE_SPACE) != 0); | 483 | gtk_toggle_button_set_active(widget->input.checkboxes[0],(terminal->selection.options & V3270_SELECTION_NON_BREAKABLE_SPACE) != 0); |
473 | gtk_toggle_button_set_active(widget->input.checkboxes[1],(terminal->selection.options & V3270_SELECTION_SCREEN_PASTE) != 0); | 484 | gtk_toggle_button_set_active(widget->input.checkboxes[1],(terminal->selection.options & V3270_SELECTION_SCREEN_PASTE) != 0); |
474 | gtk_toggle_button_set_active(widget->input.checkboxes[2],(terminal->selection.options & V3270_SELECTION_SMART_COPY) != 0); | 485 | gtk_toggle_button_set_active(widget->input.checkboxes[2],(terminal->selection.options & V3270_SELECTION_SMART_COPY) != 0); |
486 | + gtk_toggle_button_set_active(widget->input.checkboxes[3],(terminal->selection.options & V3270_SELECTION_PIXBUFF) != 0); | ||
475 | 487 | ||
476 | // | 488 | // |
477 | // Set font combo-box | 489 | // Set font combo-box |
@@ -559,6 +571,12 @@ static void apply(GtkWidget *w, GtkWidget *t) { | @@ -559,6 +571,12 @@ static void apply(GtkWidget *w, GtkWidget *t) { | ||
559 | terminal->selection.options &= ~V3270_SELECTION_SMART_COPY; | 571 | terminal->selection.options &= ~V3270_SELECTION_SMART_COPY; |
560 | } | 572 | } |
561 | 573 | ||
574 | + if(gtk_toggle_button_get_active(widget->input.checkboxes[3])) { | ||
575 | + terminal->selection.options |= V3270_SELECTION_PIXBUFF; | ||
576 | + } else { | ||
577 | + terminal->selection.options &= ~V3270_SELECTION_PIXBUFF; | ||
578 | + } | ||
579 | + | ||
562 | // Get font settings | 580 | // Get font settings |
563 | switch(get_active_id(widget,0)) { | 581 | switch(get_active_id(widget,0)) { |
564 | case '0': | 582 | case '0': |
src/include/clipboard.h
@@ -45,7 +45,8 @@ | @@ -45,7 +45,8 @@ | ||
45 | CLIPBOARD_TYPE_TEXT, | 45 | CLIPBOARD_TYPE_TEXT, |
46 | CLIPBOARD_TYPE_CSV, | 46 | CLIPBOARD_TYPE_CSV, |
47 | CLIPBOARD_TYPE_HTML, | 47 | CLIPBOARD_TYPE_HTML, |
48 | - CLIPBOARD_TYPE_V3270_FORMATTED | 48 | + CLIPBOARD_TYPE_V3270_FORMATTED, |
49 | + CLIPBOARD_TYPE_PIXBUFF | ||
49 | }; | 50 | }; |
50 | 51 | ||
51 | /// @brief Column from selection. | 52 | /// @brief Column from selection. |
src/include/terminal.h
@@ -127,6 +127,7 @@ G_BEGIN_DECLS | @@ -127,6 +127,7 @@ G_BEGIN_DECLS | ||
127 | V3270_SELECTION_SCREEN_PASTE = 0x08, ///< @brief Enable screen paste. | 127 | V3270_SELECTION_SCREEN_PASTE = 0x08, ///< @brief Enable screen paste. |
128 | V3270_SELECTION_SMART_COPY = 0x10, ///< @brief Enable copy/append based on current selection state. | 128 | V3270_SELECTION_SMART_COPY = 0x10, ///< @brief Enable copy/append based on current selection state. |
129 | V3270_SELECTION_DIALOG_STATE = 0x20, ///< @brief Used for settings dialog. | 129 | V3270_SELECTION_DIALOG_STATE = 0x20, ///< @brief Used for settings dialog. |
130 | + V3270_SELECTION_PIXBUFF = 0x40, ///< @brief Allow pixbuf formats. | ||
130 | 131 | ||
131 | } V3270SelectionOption; | 132 | } V3270SelectionOption; |
132 | 133 |
src/selection/linux/copy.c
@@ -104,6 +104,20 @@ static void clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionDa | @@ -104,6 +104,20 @@ static void clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionDa | ||
104 | } | 104 | } |
105 | break; | 105 | break; |
106 | 106 | ||
107 | + case CLIPBOARD_TYPE_PIXBUFF: | ||
108 | + { | ||
109 | + GdkPixbuf * pixbuff = v3270_get_selection_as_pixbuf(terminal, terminal->selection.blocks, FALSE); | ||
110 | + | ||
111 | + debug("%s: pixbuff=%p (blocks=%p)",__FUNCTION__,pixbuff,terminal->selection.blocks); | ||
112 | + | ||
113 | + if(pixbuff) | ||
114 | + { | ||
115 | + gtk_selection_data_set_pixbuf(selection,pixbuff); | ||
116 | + g_object_unref(pixbuff); | ||
117 | + } | ||
118 | + } | ||
119 | + break; | ||
120 | + | ||
107 | default: | 121 | default: |
108 | g_warning("Unexpected clipboard type %d\n",target); | 122 | g_warning("Unexpected clipboard type %d\n",target); |
109 | } | 123 | } |
@@ -143,6 +157,11 @@ void v3270_update_system_clipboard(GtkWidget *widget) | @@ -143,6 +157,11 @@ void v3270_update_system_clipboard(GtkWidget *widget) | ||
143 | 157 | ||
144 | } | 158 | } |
145 | 159 | ||
160 | + if(terminal->selection.options & V3270_SELECTION_PIXBUFF) | ||
161 | + { | ||
162 | + gtk_target_list_add_image_targets(list,CLIPBOARD_TYPE_PIXBUFF,TRUE); | ||
163 | + } | ||
164 | + | ||
146 | int n_targets; | 165 | int n_targets; |
147 | GtkTargetEntry * targets = gtk_target_table_new_from_list(list, &n_targets); | 166 | GtkTargetEntry * targets = gtk_target_table_new_from_list(list, &n_targets); |
148 | 167 |
v3270.cbp
@@ -6,7 +6,6 @@ | @@ -6,7 +6,6 @@ | ||
6 | <Option makefile_is_custom="1" /> | 6 | <Option makefile_is_custom="1" /> |
7 | <Option pch_mode="2" /> | 7 | <Option pch_mode="2" /> |
8 | <Option compiler="gcc" /> | 8 | <Option compiler="gcc" /> |
9 | - <Option virtualFolders="src/selection/" /> | ||
10 | <Build> | 9 | <Build> |
11 | <Target title="Debug"> | 10 | <Target title="Debug"> |
12 | <Option output=".bin/Debug/libv3270" prefix_auto="1" extension_auto="1" /> | 11 | <Option output=".bin/Debug/libv3270" prefix_auto="1" extension_auto="1" /> |
@@ -214,7 +213,6 @@ | @@ -214,7 +213,6 @@ | ||
214 | </Unit> | 213 | </Unit> |
215 | <Unit filename="src/selection/linux/copy.c"> | 214 | <Unit filename="src/selection/linux/copy.c"> |
216 | <Option compilerVar="CC" /> | 215 | <Option compilerVar="CC" /> |
217 | - <Option virtualFolder="src/selection/" /> | ||
218 | </Unit> | 216 | </Unit> |
219 | <Unit filename="src/selection/linux/paste.c"> | 217 | <Unit filename="src/selection/linux/paste.c"> |
220 | <Option compilerVar="CC" /> | 218 | <Option compilerVar="CC" /> |