- priv->selection_bubble = gtk_selection_window_new ();
- g_signal_connect_swapped (priv->selection_bubble, "cut",
- G_CALLBACK (gtk_entry_cut_clipboard),
- entry);
- g_signal_connect_swapped (priv->selection_bubble, "copy",
- G_CALLBACK (gtk_entry_copy_clipboard),
- entry);
- g_signal_connect_swapped (priv->selection_bubble, "paste",
- G_CALLBACK (gtk_entry_paste_clipboard),
- entry);
-
- gtk_selection_window_set_editable (GTK_SELECTION_WINDOW (priv->selection_bubble),
- priv->editable);
- gtk_selection_window_set_has_selection (GTK_SELECTION_WINDOW (priv->selection_bubble),
- has_selection);
+ priv->selection_bubble = _gtk_bubble_window_new ();
+ toolbar = GTK_WIDGET (gtk_toolbar_new ());
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT);
+ gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), FALSE);
+ gtk_widget_show (toolbar);
+ gtk_container_add (GTK_CONTAINER (priv->selection_bubble), toolbar);
+
+ has_clipboard = gtk_selection_data_targets_include_text (data);
+ mode = gtk_entry_get_display_mode (entry);
+
+ append_bubble_action (entry, toolbar, GTK_STOCK_CUT, "cut-clipboard",
+ priv->editable && has_selection && mode == DISPLAY_NORMAL);
+
+ append_bubble_action (entry, toolbar, GTK_STOCK_COPY, "copy-clipboard",
+ has_selection && mode == DISPLAY_NORMAL);
+
+ append_bubble_action (entry, toolbar, GTK_STOCK_PASTE, "paste-clipboard",
+ priv->editable && has_clipboard);
+
+ if (priv->populate_all)
+ g_signal_emit (entry, signals[POPULATE_POPUP], 0, toolbar);