Updating branch refs/heads/master to 5327de3b636b306439c5ab9943a94f718dba108f (commit) from f3bfa666503563ea9d0e2fb6ce2e8f1d558d738e (commit)
commit 5327de3b636b306439c5ab9943a94f718dba108f Author: Harald Judt <h.j...@gmx.at> Date: Sun Aug 11 14:59:40 2013 +0200 Improve overview window size and layout a bit. With many CPUs, the window will not even fit on a HD screen. Try to handle this a bit better; this solution is not optimal and will only be good enough for nowaday's multi-core machines. panel-plugin/xfce4-cpufreq-overview.c | 66 ++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/panel-plugin/xfce4-cpufreq-overview.c b/panel-plugin/xfce4-cpufreq-overview.c index c9d5a74..9127fd6 100644 --- a/panel-plugin/xfce4-cpufreq-overview.c +++ b/panel-plugin/xfce4-cpufreq-overview.c @@ -47,17 +47,20 @@ cpufreq_overview_add (CpuInfo *cpu, guint cpu_number, GtkWidget *dialog_hbox) dialog_vbox = gtk_vbox_new (FALSE, BORDER); gtk_box_pack_start (GTK_BOX (dialog_hbox), dialog_vbox, TRUE, TRUE, 0); + hbox = gtk_hbox_new (FALSE, BORDER); + gtk_box_pack_start (GTK_BOX (dialog_vbox), hbox, TRUE, TRUE, 0); + + icon = gtk_image_new_from_icon_name ("xfce4-cpufreq-plugin", GTK_ICON_SIZE_BUTTON); + gtk_misc_set_alignment (GTK_MISC (icon), 1, 0.5); + gtk_misc_set_padding (GTK_MISC (icon), 5, 10); + gtk_box_pack_start (GTK_BOX (hbox), icon, TRUE, TRUE, 0); text = g_strdup_printf ("<b>CPU %d</b>", cpu_number); label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (dialog_vbox), label, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); g_free (text); - icon = gtk_image_new_from_icon_name ("xfce4-cpufreq-plugin", GTK_ICON_SIZE_BUTTON); - gtk_box_pack_start (GTK_BOX (dialog_vbox), icon, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (icon), 0.5, 0); - gtk_misc_set_padding (GTK_MISC (icon), 10, 10); - /* display driver */ hbox = gtk_hbox_new (FALSE, BORDER); gtk_box_pack_start (GTK_BOX (dialog_vbox), hbox, FALSE, FALSE, 0); @@ -181,7 +184,7 @@ cpufreq_overview_response (GtkWidget *dialog, gint response, gpointer data) gboolean cpufreq_overview (GtkWidget *widget, GdkEventButton *ev, CpuFreqPlugin *cpuFreq) { - gint i; + gint i, j, step; GtkWidget *dialog, *dialog_vbox, *window; GtkWidget *dialog_hbox, *separator; @@ -217,23 +220,42 @@ cpufreq_overview (GtkWidget *widget, GdkEventButton *ev, CpuFreqPlugin *cpuFreq) dialog_vbox = GTK_DIALOG (dialog)->vbox; - dialog_hbox = gtk_hbox_new (FALSE, BORDER); - gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_hbox, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (dialog_hbox), BORDER); - - for (i = 0; i < cpuFreq->cpus->len;) - { - CpuInfo *cpu = g_ptr_array_index (cpuFreq->cpus, i); - cpufreq_overview_add (cpu, i, dialog_hbox); - - if (++i != cpuFreq->cpus->len) - { - separator = gtk_vseparator_new (); - gtk_box_pack_start (GTK_BOX (dialog_hbox), separator, FALSE, FALSE, 0); + /* choose how many columns and rows depending on cpu count */ + if (cpuFreq->cpus->len < 4) + step = 1; + else if (cpuFreq->cpus->len < 9) + step = 2; + else if (cpuFreq->cpus->len % 3) + step = 4; + else + step = 3; + + for (i = 0; i < cpuFreq->cpus->len; i += step) { + dialog_hbox = gtk_hbox_new (FALSE, BORDER * 2); + gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_hbox, + FALSE, FALSE, BORDER * 2); + gtk_container_set_border_width (GTK_CONTAINER (dialog_hbox), + BORDER * 2); + + for (j = i; j < cpuFreq->cpus->len && j < i + step; j++) { + CpuInfo *cpu = g_ptr_array_index (cpuFreq->cpus, j); + cpufreq_overview_add (cpu, j, dialog_hbox); + + if (j + 1 < cpuFreq->cpus->len && j + 1 == i + step) { + separator = gtk_hseparator_new (); + gtk_box_pack_start (GTK_BOX (dialog_vbox), separator, + FALSE, FALSE, 0); + } + + if (j + 1 < cpuFreq->cpus->len && j + 1 < i + step) { + separator = gtk_vseparator_new (); + gtk_box_pack_start (GTK_BOX (dialog_hbox), separator, + FALSE, FALSE, 0); + } } } - - g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (cpufreq_overview_response), NULL); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (cpufreq_overview_response), NULL); gtk_widget_show_all (dialog); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits