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 {