Mercurial > pidgin
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 |