Updating branch refs/heads/master to 8f76a0cbcfb725679aef7c2c05ba53758486ec81 (commit) from a2757a1df3fe801aa2404661f33c1daf4825b208 (commit)
commit 8f76a0cbcfb725679aef7c2c05ba53758486ec81 Author: Connor Behan <connor.be...@gmail.com> Date: Wed Feb 29 18:51:26 2012 -0800 Allow mode changing in xfce4-panel 4.9 generic-slider.c | 56 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 36 insertions(+), 20 deletions(-) diff --git a/generic-slider.c b/generic-slider.c index dd01563..9f27e39 100644 --- a/generic-slider.c +++ b/generic-slider.c @@ -4,7 +4,6 @@ #include <sys/wait.h> #include <unistd.h> #include <libxfce4panel/xfce-panel-plugin.h> -#include <libxfcegui4/libxfcegui4.h> #define TIMEOUT 1000 #define WIDTH 8 @@ -543,41 +542,53 @@ static void generic_slider_properties_dialog(XfcePanelPlugin *plugin, Generic_Sl gtk_widget_show_all(dialog); } -static void generic_slider_orientation_changed(XfcePanelPlugin *plugin, GtkOrientation orientation, Generic_Slider *generic_slider) { +static void generic_slider_orientation_or_mode_changed(XfcePanelPlugin *plugin, gint rotate_label, gint vertical, Generic_Slider *generic_slider) { GtkWidget *slider = generic_slider -> slider; GtkWidget *label = generic_slider -> label; GtkWidget *box = gtk_widget_get_ancestor(label, GTK_TYPE_BOX); GtkWidget *event_box = gtk_widget_get_ancestor(slider, GTK_TYPE_EVENT_BOX); GtkWidget *aligned_box = gtk_container_get_children(GTK_CONTAINER(event_box)) -> data; - GtkWidget *new_box; - if (orientation == GTK_ORIENTATION_VERTICAL) { - new_box = gtk_vbox_new(FALSE, 0); + if (vertical) { gtk_alignment_set(GTK_ALIGNMENT(aligned_box), 0.5, 0.5, 0.0, 1.0); gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(slider), GTK_PROGRESS_LEFT_TO_RIGHT); gtk_widget_set_size_request(slider, -1, WIDTH); + gtk_widget_set_size_request(GTK_WIDGET(plugin), xfce_panel_plugin_get_size(plugin), -1); + gtk_orientable_set_orientation(GTK_ORIENTABLE(box), GTK_ORIENTATION_VERTICAL); } else { - new_box = gtk_hbox_new(FALSE, 0); gtk_alignment_set(GTK_ALIGNMENT(aligned_box), 0.5, 0.5, 1.0, 0.0); gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(slider), GTK_PROGRESS_BOTTOM_TO_TOP); gtk_widget_set_size_request(slider, WIDTH, -1); + gtk_widget_set_size_request(GTK_WIDGET(plugin), -1, xfce_panel_plugin_get_size(plugin)); + gtk_orientable_set_orientation(GTK_ORIENTABLE(box), GTK_ORIENTATION_HORIZONTAL); } - gtk_widget_ref(label); - gtk_container_remove(GTK_CONTAINER(box), label); - gtk_box_pack_start(GTK_BOX(new_box), label, FALSE, FALSE, 0); - gtk_widget_ref(slider); - gtk_container_remove(GTK_CONTAINER(box), slider); - gtk_box_pack_start(GTK_BOX(new_box), slider, FALSE, FALSE, 0); - gtk_widget_destroy(box); - gtk_container_add(GTK_CONTAINER(aligned_box), new_box); - gtk_widget_show_all(aligned_box); - if ((generic_slider -> mode) == 1) { - gtk_widget_hide(label); - } else if ((generic_slider -> mode) == 2) { - gtk_widget_hide(slider); + if (rotate_label) { + if (vertical) { + gtk_label_set_angle(GTK_LABEL(label), 270); + } else { + gtk_label_set_angle(GTK_LABEL(label), 0); + } + } +} + +#if defined (LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION (4,9,0) +static void generic_slider_mode_changed(XfcePanelPlugin *plugin, XfcePanelPluginMode mode, Generic_Slider *generic_slider) { + if (mode != XFCE_PANEL_PLUGIN_MODE_HORIZONTAL) { + generic_slider_orientation_or_mode_changed(plugin, 1, 1, generic_slider); + } else { + generic_slider_orientation_or_mode_changed(plugin, 1, 0, generic_slider); + } +} +#else +static void generic_slider_orientation_changed(XfcePanelPlugin *plugin, GtkOrientation orientation, Generic_Slider *generic_slider) { + if (orientation == GTK_ORIENTATION_VERTICAL) { + generic_slider_orientation_or_mode_changed(plugin, 0, 1, generic_slider); + } else { + generic_slider_orientation_or_mode_changed(plugin, 0, 0, generic_slider); } } +#endif static gboolean generic_slider_set_size(XfcePanelPlugin *plugin, int size) { if (xfce_panel_plugin_get_orientation(plugin) == GTK_ORIENTATION_HORIZONTAL) { @@ -767,8 +778,13 @@ static void generic_slider_construct(XfcePanelPlugin *plugin) { gtk_container_add(GTK_CONTAINER(event_box), aligned_box); xfce_panel_plugin_menu_show_configure (plugin); - g_signal_connect(plugin, "configure-plugin", G_CALLBACK(generic_slider_properties_dialog), generic_slider); + +#if defined (LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION (4,9,0) g_signal_connect(plugin, "orientation-changed", G_CALLBACK(generic_slider_orientation_changed), generic_slider); +#else + g_signal_connect(plugin, "mode-changed", G_CALLBACK(generic_slider_mode_changed), generic_slider); +#endif + g_signal_connect(plugin, "configure-plugin", G_CALLBACK(generic_slider_properties_dialog), generic_slider); g_signal_connect(plugin, "size-changed", G_CALLBACK(generic_slider_set_size), NULL); g_signal_connect(plugin, "free-data", G_CALLBACK(generic_slider_free_data), generic_slider); g_signal_connect(plugin, "save", G_CALLBACK(generic_slider_write_rc_file), generic_slider); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits