From 3b8e2111a4484c8450297d6764d1e3c30b3327c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= Date: Mon, 12 Mar 2018 00:50:02 +0200 Subject: cpufreq: create all needed widgets only once origin commit: https://gitlab.gnome.org/GNOME/gnome-applets/-/commit/8951c6f --- cpufreq/src/cpufreq-applet.c | 102 +++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 53 deletions(-) (limited to 'cpufreq/src') diff --git a/cpufreq/src/cpufreq-applet.c b/cpufreq/src/cpufreq-applet.c index 3d90e5e9..10671882 100644 --- a/cpufreq/src/cpufreq-applet.c +++ b/cpufreq/src/cpufreq-applet.c @@ -56,12 +56,13 @@ struct _CPUFreqApplet { MatePanelAppletOrient orient; gint size; - GtkWidget *label; - GtkWidget *unit_label; - GtkWidget *icon; + GtkWidget *container; GtkWidget *box; + GtkWidget *icon; GtkWidget *labels_box; - GtkWidget *container; + GtkWidget *label; + GtkWidget *unit_label; + cairo_surface_t *surfaces[5]; gboolean need_refresh; @@ -172,11 +173,6 @@ cpufreq_applet_init (CPUFreqApplet *applet) applet->popup = NULL; applet->monitor = NULL; - applet->label = gtk_label_new (NULL); - applet->unit_label = gtk_label_new (NULL); - applet->icon = gtk_image_new (); - applet->box = NULL; - applet->show_mode = CPUFREQ_MODE_BOTH; applet->show_text_mode = CPUFREQ_MODE_TEXT_FREQUENCY_UNIT; @@ -201,6 +197,25 @@ cpufreq_applet_init (CPUFreqApplet *applet) gtk_container_add (GTK_CONTAINER (applet), applet->container); gtk_widget_show (applet->container); + + applet->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_container_add (GTK_CONTAINER (applet->container), applet->box); + gtk_widget_show (applet->box); + + applet->icon = gtk_image_new (); + gtk_box_pack_start (GTK_BOX (applet->box), applet->icon, FALSE, FALSE, 0); + + applet->labels_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_box_pack_start (GTK_BOX (applet->box), applet->labels_box, FALSE, FALSE, 0); + gtk_widget_show (applet->labels_box); + + applet->label = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (applet->labels_box), applet->label, + FALSE, FALSE, 0); + + applet->unit_label = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (applet->labels_box), applet->unit_label, + FALSE, FALSE, 0); } static void @@ -705,7 +720,6 @@ cpufreq_applet_refresh (CPUFreqApplet *applet) gint unit_label_size, pixmap_size; gint size_step = 12; gboolean horizontal; - gboolean do_unref = FALSE; panel_size = applet->size - 1; /* 1 pixel margin */ @@ -724,52 +738,34 @@ cpufreq_applet_refresh (CPUFreqApplet *applet) gtk_widget_get_preferred_width (GTK_WIDGET (applet->icon), &pixmap_size, NULL); total_size += pixmap_size; - if (applet->box) { - do_unref = TRUE; - g_object_ref (applet->icon); - gtk_container_remove (GTK_CONTAINER (applet->box), applet->icon); - if (applet->labels_box) { - g_object_ref (applet->label); - gtk_container_remove (GTK_CONTAINER (applet->labels_box), applet->label); - g_object_ref (applet->unit_label); - gtk_container_remove (GTK_CONTAINER (applet->labels_box), applet->unit_label); + if (horizontal) { + if ((label_size + pixmap_size) <= panel_size) { + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->box), + GTK_ORIENTATION_VERTICAL); + } else { + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->box), + GTK_ORIENTATION_HORIZONTAL); } - gtk_widget_destroy (applet->box); - } - if (horizontal) { - applet->labels_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - if ((label_size + pixmap_size) <= panel_size) - applet->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - else - applet->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->labels_box), + GTK_ORIENTATION_HORIZONTAL); } else { - if (total_size <= panel_size) { - applet->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - applet->labels_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - } else if ((label_size + unit_label_size) <= (panel_size - size_step)) { - applet->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - applet->labels_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - } else { - applet->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - applet->labels_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - } - } - - gtk_box_pack_start (GTK_BOX (applet->labels_box), applet->label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (applet->labels_box), applet->unit_label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (applet->box), applet->icon, FALSE, FALSE, 0); - - gtk_box_pack_start (GTK_BOX (applet->box), applet->labels_box, FALSE, FALSE, 0); - gtk_widget_show (applet->labels_box); - - gtk_container_add (GTK_CONTAINER (applet->container), applet->box); - gtk_widget_show (applet->box); - - if (do_unref) { - g_object_unref (applet->label); - g_object_unref (applet->unit_label); - g_object_unref (applet->icon); + if (total_size <= panel_size) { + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->box), + GTK_ORIENTATION_HORIZONTAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->labels_box), + GTK_ORIENTATION_HORIZONTAL); + } else if ((label_size + unit_label_size) <= (panel_size - size_step)) { + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->box), + GTK_ORIENTATION_VERTICAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->labels_box), + GTK_ORIENTATION_HORIZONTAL); + } else { + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->box), + GTK_ORIENTATION_VERTICAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (applet->labels_box), + GTK_ORIENTATION_VERTICAL); + } } } -- cgit v1.2.1