Mercurial > dwindows
comparison gtk4/dw.c @ 2274:b0bdd54bb2e8
GTK4: Implemented clipboard.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 01 Feb 2021 21:05:32 +0000 |
parents | 95796965bb01 |
children | 51cb73faab6e |
comparison
equal
deleted
inserted
replaced
2273:95796965bb01 | 2274:b0bdd54bb2e8 |
---|---|
7553 { | 7553 { |
7554 GdkDisplay *display = gdk_display_get_default(); | 7554 GdkDisplay *display = gdk_display_get_default(); |
7555 | 7555 |
7556 if(display) | 7556 if(display) |
7557 { | 7557 { |
7558 /* TODO: Verify this is the correct way to do this */ | |
7559 GListModel *monitors = gdk_display_get_monitors(display); | 7558 GListModel *monitors = gdk_display_get_monitors(display); |
7560 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0)); | 7559 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0)); |
7561 | 7560 |
7562 if(monitor) | 7561 if(monitor) |
7563 { | 7562 { |
7582 { | 7581 { |
7583 GdkDisplay *display = gdk_display_get_default(); | 7582 GdkDisplay *display = gdk_display_get_default(); |
7584 | 7583 |
7585 if(display) | 7584 if(display) |
7586 { | 7585 { |
7587 /* TODO: Verify this is the correct way to do this */ | |
7588 GListModel *monitors = gdk_display_get_monitors(display); | 7586 GListModel *monitors = gdk_display_get_monitors(display); |
7589 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0)); | 7587 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0)); |
7590 | 7588 |
7591 if(monitor) | 7589 if(monitor) |
7592 { | 7590 { |
9145 dw_debug( "HTML widget not available; you do not have access to webkit.\n" ); | 9143 dw_debug( "HTML widget not available; you do not have access to webkit.\n" ); |
9146 #endif | 9144 #endif |
9147 return widget; | 9145 return widget; |
9148 } | 9146 } |
9149 | 9147 |
9148 static void _dw_clipboard_callback(GObject *object, GAsyncResult *res, gpointer data) | |
9149 { | |
9150 DWDialog *tmp = (DWDialog *)data; | |
9151 | |
9152 if(tmp && tmp->data) | |
9153 { | |
9154 char *text = gdk_clipboard_read_text_finish(GDK_CLIPBOARD(tmp->data), res, NULL); | |
9155 | |
9156 dw_dialog_dismiss(tmp, text ? strdup(text) : text); | |
9157 } | |
9158 } | |
9159 | |
9150 /* | 9160 /* |
9151 * Gets the contents of the default clipboard as text. | 9161 * Gets the contents of the default clipboard as text. |
9152 * Parameters: | 9162 * Parameters: |
9153 * None. | 9163 * None. |
9154 * Returns: | 9164 * Returns: |
9156 * be converted to text. | 9166 * be converted to text. |
9157 */ | 9167 */ |
9158 char *dw_clipboard_get_text() | 9168 char *dw_clipboard_get_text() |
9159 { | 9169 { |
9160 GdkDisplay *display = gdk_display_get_default(); | 9170 GdkDisplay *display = gdk_display_get_default(); |
9161 GdkClipboard *clipboard_object; | 9171 GdkClipboard *clipboard; |
9162 char *ret = NULL; | 9172 char *ret = NULL; |
9163 | 9173 |
9164 if((clipboard_object = gdk_display_get_clipboard(display))) | 9174 if((clipboard = gdk_display_get_clipboard(display))) |
9165 { | 9175 { |
9166 /* TODO: Finish conversion to GdkClipboard */ | 9176 DWDialog *tmp = dw_dialog_new(DW_POINTER(clipboard)); |
9167 #if GTK3 | 9177 |
9168 gchar *clipboard_contents; | 9178 gdk_clipboard_read_text_async(clipboard, NULL, _dw_clipboard_callback, (gpointer)tmp); |
9169 | 9179 |
9170 if((clipboard_contents = gtk_clipboard_wait_for_text( clipboard_object ))) | 9180 ret = (char *)dw_dialog_wait(tmp); |
9171 { | |
9172 ret = strdup((char *)clipboard_contents); | |
9173 g_free(clipboard_contents); | |
9174 } | |
9175 #endif | |
9176 } | 9181 } |
9177 return ret; | 9182 return ret; |
9178 } | 9183 } |
9179 | 9184 |
9180 /* | 9185 /* |
9183 * Text. | 9188 * Text. |
9184 */ | 9189 */ |
9185 void dw_clipboard_set_text(const char *str, int len) | 9190 void dw_clipboard_set_text(const char *str, int len) |
9186 { | 9191 { |
9187 GdkDisplay *display = gdk_display_get_default(); | 9192 GdkDisplay *display = gdk_display_get_default(); |
9188 GdkClipboard *clipboard_object; | 9193 GdkClipboard *clipboard; |
9189 | 9194 |
9190 if((clipboard_object = gdk_display_get_clipboard(display))) | 9195 if((clipboard = gdk_display_get_clipboard(display))) |
9191 { | 9196 gdk_clipboard_set_text(clipboard, str); |
9192 /* TODO: Finish conversion to GdkClipboard */ | |
9193 #if GTK3 | |
9194 gtk_clipboard_set_text( clipboard_object, str, len ); | |
9195 #endif | |
9196 } | |
9197 } | 9197 } |
9198 | 9198 |
9199 /* Internal function to create the drawable pixmap and call the function */ | 9199 /* Internal function to create the drawable pixmap and call the function */ |
9200 static void _dw_draw_page(GtkPrintOperation *operation, GtkPrintContext *context, int page_nr) | 9200 static void _dw_draw_page(GtkPrintOperation *operation, GtkPrintContext *context, int page_nr) |
9201 { | 9201 { |