[gnome-builder] sourceview: make completion window translucent on ctrl toggle
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] sourceview: make completion window translucent on ctrl toggle
- Date: Thu, 28 Mar 2019 20:36:29 +0000 (UTC)
commit 800af930cda2a46026fffd252f52c9d4dc854b36
Author: Christian Hergert <chergert redhat com>
Date: Thu Mar 28 13:34:00 2019 -0700
sourceview: make completion window translucent on ctrl toggle
This requires libdazzle 3.33.0 for shortcut fixes.
When pressing Control while the completion window is present, it will
become translucent. Pressing Control a second time will restore that
visibility.
Whenever the completion window is displayed, it will be forced back to
full opacity.
This allows for seeing text around the completion window without having
to dismiss the completion window fully.
src/libide/sourceview/ide-completion-overlay.c | 10 ++++++++++
src/libide/sourceview/ide-completion-window.c | 1 +
src/libide/sourceview/ide-source-view.c | 18 ++++++++++++++++++
3 files changed, 29 insertions(+)
---
diff --git a/src/libide/sourceview/ide-completion-overlay.c b/src/libide/sourceview/ide-completion-overlay.c
index 038737734..bc57c4819 100644
--- a/src/libide/sourceview/ide-completion-overlay.c
+++ b/src/libide/sourceview/ide-completion-overlay.c
@@ -49,6 +49,14 @@ G_DEFINE_TYPE_WITH_CODE (IdeCompletionOverlay, ide_completion_overlay, GTK_TYPE_
static GParamSpec *properties [N_PROPS];
+static void
+ide_completion_overlay_show (GtkWidget *widget)
+{
+ gtk_widget_set_opacity (widget, 1.0);
+
+ GTK_WIDGET_CLASS (ide_completion_overlay_parent_class)->show (widget);
+}
+
static void
ide_completion_overlay_get_property (GObject *object,
guint prop_id,
@@ -96,6 +104,8 @@ ide_completion_overlay_class_init (IdeCompletionOverlayClass *klass)
object_class->get_property = ide_completion_overlay_get_property;
object_class->set_property = ide_completion_overlay_set_property;
+ widget_class->show = ide_completion_overlay_show;
+
properties [PROP_CONTEXT] =
g_param_spec_object ("context",
"Context",
diff --git a/src/libide/sourceview/ide-completion-window.c b/src/libide/sourceview/ide-completion-window.c
index b4882dc5d..59b1dfc2f 100644
--- a/src/libide/sourceview/ide-completion-window.c
+++ b/src/libide/sourceview/ide-completion-window.c
@@ -136,6 +136,7 @@ ide_completion_window_real_show (GtkWidget *widget)
g_assert (IDE_IS_COMPLETION_WINDOW (self));
ide_completion_window_reposition (self);
+ gtk_widget_set_opacity (widget, 1.0);
GTK_WIDGET_CLASS (ide_completion_window_parent_class)->show (widget);
}
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index 6e74a9257..736bb3bef 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -2028,6 +2028,24 @@ ide_source_view_key_press_event (GtkWidget *widget,
return TRUE;
}
+ /*
+ * If we got Control alone, with no key, and the completion window is
+ * visible, then request that it make itself less visible.
+ */
+ if (event->keyval == GDK_KEY_Control_L &&
+ event->state == 0 &&
+ ide_completion_is_visible (priv->completion))
+ {
+ IdeCompletionDisplay *display = ide_completion_get_display (priv->completion);
+
+ if (gtk_widget_get_opacity (GTK_WIDGET (display)) == 1.0)
+ gtk_widget_set_opacity (GTK_WIDGET (display), 0.33);
+ else
+ gtk_widget_set_opacity (GTK_WIDGET (display), 1.0);
+
+ return TRUE;
+ }
+
/*
* Are we currently recording a macro? If so lets stash the event for later.
*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]