st: Use StSettings for primary-paste setting

If middle-click happens, check whether the setting is enabled
and paste primary selection if so.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/317
This commit is contained in:
Carlos Garnacho 2019-01-30 19:56:18 +01:00
parent df3068d9ca
commit 8647922df9

View File

@ -56,6 +56,7 @@
#include "st-icon.h" #include "st-icon.h"
#include "st-label.h" #include "st-label.h"
#include "st-settings.h"
#include "st-widget.h" #include "st-widget.h"
#include "st-texture-cache.h" #include "st-texture-cache.h"
#include "st-clipboard.h" #include "st-clipboard.h"
@ -644,29 +645,32 @@ clutter_text_button_press_event (ClutterActor *actor,
gpointer user_data) gpointer user_data)
{ {
StEntryPrivate *priv = ST_ENTRY_PRIV (user_data); StEntryPrivate *priv = ST_ENTRY_PRIV (user_data);
GtkSettings *settings = gtk_settings_get_default ();
gboolean primary_paste_enabled;
g_object_get (settings, if (event->button == 2 &&
"gtk-enable-primary-paste", &primary_paste_enabled, clutter_text_get_editable (CLUTTER_TEXT (priv->entry)))
NULL);
if (primary_paste_enabled && event->button == 2
&& clutter_text_get_editable (CLUTTER_TEXT (priv->entry)))
{ {
StClipboard *clipboard; StSettings *settings;
gboolean primary_paste_enabled;
clipboard = st_clipboard_get_default (); settings = st_settings_get ();
g_object_get (settings, "primary-paste", &primary_paste_enabled, NULL);
/* By the time the clipboard callback is called, if (primary_paste_enabled)
* the rest of the signal handlers will have {
* run, making the text cursor to be in the correct StClipboard *clipboard;
* place.
*/ clipboard = st_clipboard_get_default ();
st_clipboard_get_text (clipboard,
ST_CLIPBOARD_TYPE_PRIMARY, /* By the time the clipboard callback is called,
st_entry_clipboard_callback, * the rest of the signal handlers will have
user_data); * run, making the text cursor to be in the correct
* place.
*/
st_clipboard_get_text (clipboard,
ST_CLIPBOARD_TYPE_PRIMARY,
st_entry_clipboard_callback,
user_data);
}
} }
return FALSE; return FALSE;