comparison src/gtkimhtml.c @ 8693:f83de0baf171

[gaim-migrate @ 9446] patch from simguy to remove some verbosity from gaim -d. is verbosity a word? probly not. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sun, 18 Apr 2004 04:21:36 +0000
parents 0680ca680e92
children f36eee61c85f
comparison
equal deleted inserted replaced
8692:0680ca680e92 8693:f83de0baf171
120 */ 120 */
121 static UINT win_html_fmt; 121 static UINT win_html_fmt;
122 122
123 static gchar * 123 static gchar *
124 clipboard_win32_to_html(char *clipboard) { 124 clipboard_win32_to_html(char *clipboard) {
125 const char *begin, *end; 125 const char *begin, *end;
126 gchar *html; 126 gchar *html;
127 127
128 begin = strstr(clipboard, "<!--StartFragment"); 128 begin = strstr(clipboard, "<!--StartFragment");
129 while(*begin++ != '>'); 129 while(*begin++ != '>');
130 end = strstr(clipboard, "<!--EndFragment"); 130 end = strstr(clipboard, "<!--EndFragment");
131 html = g_strstrip(g_strndup(begin, (end ? (end - begin) : strlen(begin)))); 131 html = g_strstrip(g_strndup(begin, (end ? (end - begin) : strlen(begin))));
132 } 132 }
133 133
134 static gchar * 134 static gchar *
135 clipboard_html_to_win32(char *html) { 135 clipboard_html_to_win32(char *html) {
136 int length; 136 int length;
137 gchar *ret; 137 gchar *ret;
138 GString *clipboard; 138 GString *clipboard;
139 139
140 if (html == NULL) 140 if (html == NULL)
141 return NULL; 141 return NULL;
142 142
143 length = strlen(html); 143 length = strlen(html);
144 clipboard = g_string_new ("Version:0.9\r\n"); 144 clipboard = g_string_new ("Version:0.9\r\n");
145 g_string_append(clipboard, "StartHTML:0000000105\r\n"); 145 g_string_append(clipboard, "StartHTML:0000000105\r\n");
146 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
147 g_string_append(clipboard, g_strdup_printf("EndHTML:%010d\r\n", 143 + length)); 146 g_string_append(clipboard, g_strdup_printf("EndHTML:%010d\r\n", 143 + length));
148 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
149 g_string_append(clipboard, "StartFragment:0000000105\r\n"); 147 g_string_append(clipboard, "StartFragment:0000000105\r\n");
150 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
151 g_string_append(clipboard, g_strdup_printf("EndFragment:%010d\r\n", 143 + length)); 148 g_string_append(clipboard, g_strdup_printf("EndFragment:%010d\r\n", 143 + length));
152 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
153 g_string_append(clipboard, "<!--StartFragment-->"); 149 g_string_append(clipboard, "<!--StartFragment-->");
154 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
155 g_string_append(clipboard, html); 150 g_string_append(clipboard, html);
156 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
157 g_string_append(clipboard, "<!--EndFragment-->"); 151 g_string_append(clipboard, "<!--EndFragment-->");
158 gaim_debug_info("html clipboard", "Length %d\n", clipboard->len);
159 ret = clipboard->str; 152 ret = clipboard->str;
160 g_string_free(clipboard, FALSE); 153 g_string_free(clipboard, FALSE);
161 return ret; 154 return ret;
162 } 155 }
163
164 #endif 156 #endif
165 157
166 static GtkSmileyTree* 158 static GtkSmileyTree*
167 gtk_smiley_tree_new () 159 gtk_smiley_tree_new ()
168 { 160 {
622 HGLOBAL hdata; 614 HGLOBAL hdata;
623 gchar *clipboard = clipboard_html_to_win32(imhtml->clipboard_html_string); 615 gchar *clipboard = clipboard_html_to_win32(imhtml->clipboard_html_string);
624 gchar *buffer; 616 gchar *buffer;
625 gint length = strlen(clipboard); 617 gint length = strlen(clipboard);
626 if(clipboard != NULL) { 618 if(clipboard != NULL) {
627 OpenClipboard(NULL); 619 OpenClipboard(NULL);
628 hdata = GlobalAlloc(GMEM_MOVEABLE, length); 620 hdata = GlobalAlloc(GMEM_MOVEABLE, length);
629 buffer = GlobalLock(hdata); 621 buffer = GlobalLock(hdata);
630 memcpy(buffer, clipboard, length); 622 memcpy(buffer, clipboard, length);
631 GlobalUnlock(hdata); 623 GlobalUnlock(hdata);
632 SetClipboardData(win_html_fmt, hdata); 624 SetClipboardData(win_html_fmt, hdata);
633 CloseClipboard(); 625 CloseClipboard();
634 } 626 g_free(clipboard);
635 627 }
636 gaim_debug_info("html clipboard", "clipboard set\n%s\n", (clipboard ? clipboard : "nothing"));
637 #endif 628 #endif
638 629
639 g_signal_stop_emission_by_name(imhtml, "copy-clipboard"); 630 g_signal_stop_emission_by_name(imhtml, "copy-clipboard");
640 } 631 }
641 632
654 clipboard before we try to paste from the GTK buffer */ 645 clipboard before we try to paste from the GTK buffer */
655 HGLOBAL hdata; 646 HGLOBAL hdata;
656 DWORD err; 647 DWORD err;
657 char *buffer; 648 char *buffer;
658 if (IsClipboardFormatAvailable(win_html_fmt)) { 649 if (IsClipboardFormatAvailable(win_html_fmt)) {
659 OpenClipboard(NULL); 650 OpenClipboard(NULL);
660 hdata = GetClipboardData(win_html_fmt); 651 hdata = GetClipboardData(win_html_fmt);
661 if (hdata == NULL) { 652 if (hdata == NULL) {
662 err = GetLastError(); 653 err = GetLastError();
663 gaim_debug_info("html clipboard", "error number %u! See http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp\n", err); 654 gaim_debug_info("html clipboard", "error number %u! See http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp\n", err);
664 CloseClipboard(); 655 CloseClipboard();
665 return; 656 return;
666 } 657 }
667 buffer = GlobalLock(hdata); 658 buffer = GlobalLock(hdata);
668 if (buffer == NULL) { 659 if (buffer == NULL) {
669 err = GetLastError(); 660 err = GetLastError();
670 gaim_debug_info("html clipboard", "error number %u! See http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp\n", err); 661 gaim_debug_info("html clipboard", "error number %u! See http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp\n", err);
671 CloseClipboard(); 662 CloseClipboard();
672 return; 663 return;
673 } 664 }
674 text = clipboard_win32_to_html(buffer); 665 text = clipboard_win32_to_html(buffer);
675 gaim_debug_info("html clipboard", "buffer\n%s\n", (buffer ? buffer : "nothing"));
676 GlobalUnlock(hdata); 666 GlobalUnlock(hdata);
677 CloseClipboard(); 667 CloseClipboard();
678
679 gaim_debug_info("html clipboard", "text\n%s\n", (text ? text : "nothing"));
680
681 } else 668 } else
682 #endif 669 #endif
683 if (selection_data->length < 0) { 670 if (selection_data->length < 0) {
684 text = gtk_clipboard_wait_for_text(clipboard); 671 text = gtk_clipboard_wait_for_text(clipboard);
685 672