diff --git a/plugins/tasklist/tasklist-dialogs.c b/plugins/tasklist/tasklist-dialogs.c index 4b9c563..9274997 100644 --- a/plugins/tasklist/tasklist-dialogs.c +++ b/plugins/tasklist/tasklist-dialogs.c @@ -100,9 +100,20 @@ tasklist_show_handle_toggled (GtkToggleButton *tb, tasklist->show_handles = gtk_toggle_button_get_active (tb); if (tasklist->show_handles) - gtk_widget_show (tasklist->handle); + gtk_widget_show (tasklist->handle); else - gtk_widget_hide (tasklist->handle); + gtk_widget_hide (tasklist->handle); +} + + + +static void +tasklist_fixed_width_toggled (GtkToggleButton *tb, + TasklistPlugin *tasklist) +{ + tasklist->fixed_width = gtk_toggle_button_get_active (tb); + + gtk_widget_queue_resize (GTK_WIDGET (tasklist->panel_plugin)); } @@ -119,6 +130,15 @@ tasklist_width_changed (GtkSpinButton *sb, static void +tasklist_width_sensitive (GtkToggleButton *tb, + GtkWidget *sb) +{ + gtk_widget_set_sensitive (sb, gtk_toggle_button_get_active (tb)); +} + + + +static void tasklist_dialog_response (GtkWidget *dlg, gint reponse, TasklistPlugin *tasklist) @@ -169,9 +189,11 @@ tasklist_dialogs_configure (TasklistPlugin *tasklist) hbox = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - label = gtk_label_new_with_mnemonic (_("_Minimum width:")); - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + cb = gtk_check_button_new_with_mnemonic (_("Fi_xed length (pixels):")); + gtk_box_pack_start (GTK_BOX (hbox), cb, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb), tasklist->fixed_width); + g_signal_connect (G_OBJECT (cb), "toggled", + G_CALLBACK (tasklist_fixed_width_toggled), tasklist); /* an arbitrary max of 4000 should be future proof, right? */ spin = gtk_spin_button_new_with_range (100, 4000, 10); @@ -180,6 +202,9 @@ tasklist_dialogs_configure (TasklistPlugin *tasklist) gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin); g_signal_connect (G_OBJECT (spin), "value-changed", G_CALLBACK (tasklist_width_changed), tasklist); + gtk_widget_set_sensitive (spin, tasklist->fixed_width); + g_signal_connect (G_OBJECT (cb), "toggled", + G_CALLBACK (tasklist_width_sensitive), spin); if (tasklist_using_xinerama (tasklist->panel_plugin)) { @@ -220,7 +245,7 @@ tasklist_dialogs_configure (TasklistPlugin *tasklist) gtk_combo_box_append_text (GTK_COMBO_BOX (cb), _("Never group tasks")); gtk_combo_box_append_text (GTK_COMBO_BOX (cb), _("Automatically group tasks")); gtk_combo_box_append_text (GTK_COMBO_BOX (cb), _("Always group tasks")); - + /* keep order above in sync with WnckTasklistGroupingType */ gtk_combo_box_set_active (GTK_COMBO_BOX (cb), tasklist->grouping); diff --git a/plugins/tasklist/tasklist.c b/plugins/tasklist/tasklist.c index 6ab9534..a26e04c 100644 --- a/plugins/tasklist/tasklist.c +++ b/plugins/tasklist/tasklist.c @@ -292,8 +292,8 @@ tasklist_plugin_size_request (TasklistPlugin *tasklist, size += TASKLIST_HANDLE_SIZE; /* use the requested size when it is bigger then the prefered size */ - if (tasklist->width > size) - size = tasklist->width; + if (tasklist->fixed_width) + size = MAX (100, tasklist->width); /* get plugin orientation */ orientation = xfce_panel_plugin_get_orientation (tasklist->panel_plugin); @@ -355,6 +355,7 @@ tasklist_plugin_read (TasklistPlugin *tasklist) tasklist->flat_buttons = TRUE; tasklist->show_handles = TRUE; tasklist->width = 300; + tasklist->fixed_width = FALSE; /* get rc file name */ file = xfce_panel_plugin_lookup_rc_file (tasklist->panel_plugin); @@ -375,6 +376,7 @@ tasklist_plugin_read (TasklistPlugin *tasklist) tasklist->flat_buttons = xfce_rc_read_bool_entry (rc, "flat_buttons", tasklist->flat_buttons); tasklist->show_handles = xfce_rc_read_bool_entry (rc, "show_handles", tasklist->show_handles); tasklist->width = xfce_rc_read_int_entry (rc, "width",tasklist->width); + tasklist->fixed_width = xfce_rc_read_bool_entry (rc, "fixed_width", tasklist->fixed_width); /* only set expand flag if xinerama is used */ if (tasklist_using_xinerama (tasklist->panel_plugin)) @@ -414,6 +416,7 @@ tasklist_plugin_write (TasklistPlugin *tasklist) xfce_rc_write_bool_entry (rc, "expand", tasklist->expand); xfce_rc_write_bool_entry (rc, "flat_buttons", tasklist->flat_buttons); xfce_rc_write_bool_entry (rc, "show_handles", tasklist->show_handles); + xfce_rc_write_bool_entry (rc, "fixed_width", tasklist->fixed_width); /* close the rc file */ xfce_rc_close (rc); diff --git a/plugins/tasklist/tasklist.h b/plugins/tasklist/tasklist.h index 2f6fba8..e5d9510 100644 --- a/plugins/tasklist/tasklist.h +++ b/plugins/tasklist/tasklist.h @@ -48,6 +48,7 @@ struct _TasklistPlugin /* settings */ gint width; + guint fixed_width : 1; WnckTasklistGroupingType grouping; guint all_workspaces : 1; guint show_label : 1;