Author: olivier Date: 2007-03-13 21:39:35 +0000 (Tue, 13 Mar 2007) New Revision: 25159
Modified: xfwm4/trunk/mcs-plugin/xfwm4_plugin.c xfwm4/trunk/src/client.c xfwm4/trunk/src/settings.c Log: Make the title button in the xfwm4 settings manager dragable, patch from Peter de Ridder <[EMAIL PROTECTED]>, bug #3000) Modified: xfwm4/trunk/mcs-plugin/xfwm4_plugin.c =================================================================== --- xfwm4/trunk/mcs-plugin/xfwm4_plugin.c 2007-03-13 21:13:35 UTC (rev 25158) +++ xfwm4/trunk/mcs-plugin/xfwm4_plugin.c 2007-03-13 21:39:35 UTC (rev 25159) @@ -72,6 +72,7 @@ {"M", N_("Maximize"), "gtk-zoom-100"}, {"C", N_("Close"), "gtk-close"} }; +#define BUTTON_COUNT 6 static const MenuTmpl dbl_click_values[] = { @@ -333,6 +334,14 @@ 0); } +static void +title_data_get (GtkWidget * widget, GdkDragContext * drag_context, GtkSelectionData * data, guint info, + guint time, gpointer user_data) +{ + gtk_selection_data_set (data, gdk_atom_intern ("_XFWM4_TITLE", FALSE), 8, (const guchar *) "", + 0); +} + static gchar * layout_get_semantic (GtkWidget * container) { @@ -341,7 +350,7 @@ gint p = 0; children = gtk_container_get_children (GTK_CONTAINER (container)); - sem = g_new0 (gchar, 8); + sem = g_new0 (gchar, BUTTON_COUNT + 2); item = children; while (item) { @@ -353,7 +362,7 @@ if (key) { sem[p++] = *key; - if (p >= 7) + if (p >= BUTTON_COUNT + 1) { g_list_free (children); return (sem); @@ -560,14 +569,18 @@ GtkWidget *hidden_box; GtkWidget *title; GtkWidget *label; - GtkTargetEntry entry; + GtkTargetEntry entry[2]; GtkTooltips *tooltips; gint i; - entry.target = "_XFWM4_BUTTON"; - entry.flags = GTK_TARGET_SAME_APP; - entry.info = 2; + entry[0].target = "_XFWM4_BUTTON"; + entry[0].flags = GTK_TARGET_SAME_APP; + entry[0].info = 2; + entry[1].target = "_XFWM4_TITLE"; + entry[1].flags = GTK_TARGET_SAME_APP; + entry[1].info = 3; + tooltips = gtk_tooltips_new (); vbox = gtk_vbox_new (TRUE, 0); @@ -591,6 +604,10 @@ title = gtk_button_new_with_label (_("Title")); gtk_tooltips_set_tip (tooltips, title, _("The window title, it cannot be removed"), NULL); g_object_set_data (G_OBJECT (title), "key_char", "|"); + gtk_drag_source_set (title, GDK_BUTTON1_MASK, &entry[1], 1, GDK_ACTION_MOVE); + g_signal_connect (title, "drag-data-get", G_CALLBACK (title_data_get), NULL); + g_signal_connect (title, "drag_begin", G_CALLBACK (button_drag_begin), NULL); + g_signal_connect (title, "drag_end", G_CALLBACK (button_drag_end), NULL); g_signal_connect (title, "button_press_event", G_CALLBACK (signal_blocker), NULL); g_signal_connect (title, "enter_notify_event", G_CALLBACK (signal_blocker), NULL); g_signal_connect (title, "focus", G_CALLBACK (signal_blocker), NULL); @@ -607,7 +624,7 @@ g_object_set_data (G_OBJECT (hidden_box), "mcs", user_data); gtk_widget_show (hidden_box); - for (i = 0; i < 6; i++) + for (i = 0; i < BUTTON_COUNT; i++) { GtkWidget *button; GtkWidget *image; @@ -616,7 +633,7 @@ button = gtk_button_new (); gtk_container_add (GTK_CONTAINER (button), image); gtk_tooltips_set_tip (tooltips, button, _(title_button[i].desc), _(title_button[i].desc)); - gtk_drag_source_set (button, GDK_BUTTON1_MASK, &entry, 1, GDK_ACTION_MOVE); + gtk_drag_source_set (button, GDK_BUTTON1_MASK, entry, 1, GDK_ACTION_MOVE); g_signal_connect (button, "drag-data-get", G_CALLBACK (data_get), NULL); g_signal_connect (button, "drag_begin", G_CALLBACK (button_drag_begin), NULL); g_signal_connect (button, "drag_end", G_CALLBACK (button_drag_end), NULL); @@ -629,8 +646,8 @@ } layout_set_value (layout_box, hidden_box, layout); - gtk_drag_dest_set (hidden_frame, GTK_DEST_DEFAULT_ALL, &entry, 1, GDK_ACTION_MOVE); - gtk_drag_dest_set (layout_frame, GTK_DEST_DEFAULT_ALL, &entry, 1, GDK_ACTION_MOVE); + gtk_drag_dest_set (hidden_frame, GTK_DEST_DEFAULT_ALL, entry, 1, GDK_ACTION_MOVE); + gtk_drag_dest_set (layout_frame, GTK_DEST_DEFAULT_ALL, entry, 2, GDK_ACTION_MOVE); g_signal_connect (hidden_frame, "drag_data_received", G_CALLBACK (hidden_data_receive), hidden_box); Modified: xfwm4/trunk/src/client.c =================================================================== --- xfwm4/trunk/src/client.c 2007-03-13 21:13:35 UTC (rev 25158) +++ xfwm4/trunk/src/client.c 2007-03-13 21:39:35 UTC (rev 25159) @@ -1469,7 +1469,7 @@ } if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) { - TRACE ("Applying client's initial state: sticky"); + TRACE ("Applying client's initial state: shaded"); clientShade (c); } } Modified: xfwm4/trunk/src/settings.c =================================================================== --- xfwm4/trunk/src/settings.c 2007-03-13 21:13:35 UTC (rev 25158) +++ xfwm4/trunk/src/settings.c 2007-03-13 21:39:35 UTC (rev 25159) @@ -1178,7 +1178,7 @@ screen_info->params->title_shadow[ACTIVE] = getTitleShadow (rc, "title_shadow_active"); screen_info->params->title_shadow[INACTIVE] = getTitleShadow (rc, "title_shadow_inactive"); - strncpy (screen_info->params->button_layout, getValue ("button_layout", rc), 7); + strncpy (screen_info->params->button_layout, getValue ("button_layout", rc), BUTTON_COUNT + 1); screen_info->params->button_spacing = TOINT (getValue ("button_spacing", rc)); screen_info->params->button_offset = TOINT (getValue ("button_offset", rc)); screen_info->params->maximized_offset = TOINT (getValue ("maximized_offset", rc)); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits