[Xfce4-commits] [apps/xfce4-terminal] 01/01: Allow to set opacity of the Search dialog

noreply at xfce.org noreply at xfce.org
Tue Feb 26 16:06:14 CET 2019


This is an automated email from the git hooks/post-receive script.

f   2   4   0   4       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/xfce4-terminal.

commit 71ce45e8ffb62c2462b335ee9298039b5d24b51b
Author: Igor <f2404 at yandex.ru>
Date:   Tue Feb 26 10:03:58 2019 -0500

    Allow to set opacity of the Search dialog
    
    Bug #15124
---
 terminal/terminal-preferences.c   | 11 ++++++
 terminal/terminal-search-dialog.c | 75 +++++++++++++++++++++++++++++++++------
 2 files changed, 75 insertions(+), 11 deletions(-)

diff --git a/terminal/terminal-preferences.c b/terminal/terminal-preferences.c
index 8b11f68..aa7dfb2 100644
--- a/terminal/terminal-preferences.c
+++ b/terminal/terminal-preferences.c
@@ -113,6 +113,7 @@ enum
   PROP_MISC_USE_SHIFT_ARROWS_TO_SCROLL,
   PROP_MISC_SLIM_TABS,
   PROP_MISC_NEW_TAB_ADJACENT,
+  PROP_MISC_SEARCH_DIALOG_OPACITY,
   PROP_SCROLLING_BAR,
   PROP_SCROLLING_LINES,
   PROP_SCROLLING_ON_OUTPUT,
@@ -1059,6 +1060,16 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass)
                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
+   * TerminalPreferences:misc-search-dialog-opacity:
+   **/
+  preferences_props[PROP_MISC_SEARCH_DIALOG_OPACITY] =
+      g_param_spec_uint ("misc-search-dialog-opacity",
+                         NULL,
+                         "MiscSearchDialogOpacity",
+                         0, 100, 100,
+                         G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+  /**
    * TerminalPreferences:scrolling-bar:
    **/
   preferences_props[PROP_SCROLLING_BAR] =
diff --git a/terminal/terminal-search-dialog.c b/terminal/terminal-search-dialog.c
index 48c1203..e06f05f 100644
--- a/terminal/terminal-search-dialog.c
+++ b/terminal/terminal-search-dialog.c
@@ -29,10 +29,12 @@
 #include <libxfce4ui/libxfce4ui.h>
 
 #include <terminal/terminal-search-dialog.h>
+#include <terminal/terminal-preferences.h>
 
 
 
 static void terminal_search_dialog_finalize           (GObject              *object);
+static void terminal_search_dialog_opacity_changed    (TerminalSearchDialog *dialog);
 static void terminal_search_dialog_clear_gregex       (TerminalSearchDialog *dialog);
 static void terminal_search_dialog_entry_icon_release (GtkWidget            *entry,
                                                        GtkEntryIconPosition  icon_pos);
@@ -47,19 +49,21 @@ struct _TerminalSearchDialogClass
 
 struct _TerminalSearchDialog
 {
-  GtkDialog parent_instance;
+  GtkDialog      parent_instance;
 
-  GRegex    *last_gregex;
+  GRegex        *last_gregex;
 
-  GtkWidget *button_prev;
-  GtkWidget *button_next;
+  GtkWidget     *button_prev;
+  GtkWidget     *button_next;
 
-  GtkWidget *entry;
+  GtkWidget     *entry;
 
-  GtkWidget *match_case;
-  GtkWidget *match_regex;
-  GtkWidget *match_word;
-  GtkWidget *wrap_around;
+  GtkWidget     *match_case;
+  GtkWidget     *match_regex;
+  GtkWidget     *match_word;
+  GtkWidget     *wrap_around;
+
+  GtkAdjustment *opacity_adjustment;
 };
 
 
@@ -86,10 +90,14 @@ terminal_search_dialog_init (TerminalSearchDialog *dialog)
   GtkWidget     *hbox;
   GtkWidget     *vbox;
   GtkWidget     *label;
+  GtkWidget     *opacity_box;
+  GtkWidget     *opacity_scale;
+  GtkWidget     *opacity_label;
+  GtkWidget     *percent_label;
+  GdkScreen     *screen = gtk_widget_get_screen (GTK_WIDGET (dialog));
   GtkAccelGroup *group = gtk_accel_group_new ();
   GtkAccelKey    key_prev = {0}, key_next = {0};
 
-  gtk_window_set_title (GTK_WINDOW (dialog), _("Find"));
   gtk_window_set_default_size (GTK_WINDOW (dialog), 400, -1);
   gtk_window_add_accel_group (GTK_WINDOW (dialog), group);
 
@@ -152,6 +160,31 @@ terminal_search_dialog_init (TerminalSearchDialog *dialog)
   g_signal_connect_swapped (G_OBJECT (dialog->wrap_around), "toggled",
       G_CALLBACK (terminal_search_dialog_clear_gregex), dialog);
 
+  opacity_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+  gtk_widget_set_margin_start (opacity_box, 6);
+
+  opacity_label = gtk_label_new_with_mnemonic (_("_Opacity:"));
+  gtk_box_pack_start (GTK_BOX (opacity_box), opacity_label, FALSE, FALSE, 0);
+
+  opacity_scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0.0, 100.0, 1.0);
+  gtk_scale_set_value_pos (GTK_SCALE (opacity_scale), GTK_POS_RIGHT);
+  gtk_box_pack_start (GTK_BOX (opacity_box), opacity_scale, TRUE, TRUE, 0);
+
+  percent_label = gtk_label_new ("%");
+  gtk_box_pack_start (GTK_BOX (opacity_box), percent_label, FALSE, FALSE, 0);
+
+  /* connect opacity properties */
+  dialog->opacity_adjustment = gtk_range_get_adjustment (GTK_RANGE (opacity_scale));
+  g_object_bind_property (G_OBJECT (terminal_preferences_get ()), "misc-search-dialog-opacity",
+                          G_OBJECT (dialog->opacity_adjustment), "value",
+                          G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
+  g_signal_connect_swapped (G_OBJECT (dialog->opacity_adjustment), "value-changed",
+                            G_CALLBACK (terminal_search_dialog_opacity_changed), dialog);
+
+  /* don't show opacity controls if compositing is not enabled */
+  if (gdk_screen_is_composited (screen))
+    gtk_box_pack_start (GTK_BOX (vbox), opacity_box, FALSE, TRUE, 0);
+
   terminal_search_dialog_entry_changed (dialog->entry, dialog);
 }
 
@@ -168,6 +201,18 @@ terminal_search_dialog_finalize (GObject *object)
 
 
 static void
+terminal_search_dialog_opacity_changed (TerminalSearchDialog *dialog)
+{
+  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (dialog));
+  gdouble    opacity = gdk_screen_is_composited (screen)
+                           ? gtk_adjustment_get_value (dialog->opacity_adjustment) / 100.0
+                           : 1.0;
+  gtk_widget_set_opacity (GTK_WIDGET (dialog), opacity);
+}
+
+
+
+static void
 terminal_search_dialog_clear_gregex (TerminalSearchDialog *dialog)
 {
   if (dialog->last_gregex != NULL)
@@ -301,10 +346,18 @@ terminal_search_dialog_get_regex (TerminalSearchDialog  *dialog,
 
 
 void
-terminal_search_dialog_present (TerminalSearchDialog  *dialog)
+terminal_search_dialog_present (TerminalSearchDialog *dialog)
 {
+  GtkWidget *header_bar = gtk_header_bar_new ();
+
   terminal_return_if_fail (TERMINAL_IS_SEARCH_DIALOG (dialog));
 
+  gtk_header_bar_set_title (GTK_HEADER_BAR (header_bar), _("Find"));
+  gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header_bar), TRUE);
+  gtk_window_set_titlebar (GTK_WINDOW (dialog), header_bar);
+
+  terminal_search_dialog_opacity_changed (dialog);
+
   gtk_widget_show_all (GTK_WIDGET (dialog));
   gtk_window_present (GTK_WINDOW (dialog));
   gtk_widget_grab_focus (dialog->entry);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list