From b0863c77b84aaef1e667d5fe5965b887c3a9008a Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Nov 2010 15:23:09 +0000 Subject: main/xfce4-panel: apply patches from upstream --- main/xfce4-panel/6792.patch | 37 ++++ main/xfce4-panel/APKBUILD | 25 ++- main/xfce4-panel/allow-using-enter.patch | 193 +++++++++++++++++++++ .../dont-destroy-the-about-dialog.patch | 22 +++ .../xfce4-panel/drop-the-automatics-grouping.patch | 119 +++++++++++++ 5 files changed, 393 insertions(+), 3 deletions(-) create mode 100644 main/xfce4-panel/6792.patch create mode 100644 main/xfce4-panel/allow-using-enter.patch create mode 100644 main/xfce4-panel/dont-destroy-the-about-dialog.patch create mode 100644 main/xfce4-panel/drop-the-automatics-grouping.patch (limited to 'main/xfce4-panel') diff --git a/main/xfce4-panel/6792.patch b/main/xfce4-panel/6792.patch new file mode 100644 index 000000000..3589da418 --- /dev/null +++ b/main/xfce4-panel/6792.patch @@ -0,0 +1,37 @@ +From bb6b1ef03c05dfd7f8209e923c2e8ec5365ccaac Mon Sep 17 00:00:00 2001 +From: Nick Schermer +Date: Mon, 08 Nov 2010 20:53:56 +0000 +Subject: Fix crash in always group mode (bug #6792). + +--- +diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c +index cdf696d..72283ba 100644 +--- a/plugins/tasklist/tasklist-widget.c ++++ b/plugins/tasklist/tasklist-widget.c +@@ -1586,6 +1586,7 @@ xfce_tasklist_update_icon_geometries (gpointer data) + + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tasklist)); + gtk_window_get_position (GTK_WINDOW (toplevel), &root_x, &root_y); ++ panel_return_val_if_fail (XFCE_IS_TASKLIST (tasklist), FALSE); + + for (li = tasklist->windows; li != NULL; li = li->next) + { +@@ -1603,7 +1604,7 @@ xfce_tasklist_update_icon_geometries (gpointer data) + + case CHILD_TYPE_GROUP: + alloc = &child->button->allocation; +- for (lp = child->windows; li != NULL; li = li->next) ++ for (lp = child->windows; lp != NULL; lp = lp->next) + { + child2 = lp->data; + panel_return_val_if_fail (WNCK_IS_WINDOW (child2->window), FALSE); +@@ -2382,7 +2383,6 @@ xfce_tasklist_button_activate (XfceTasklistChild *child, + WnckWorkspace *workspace; + + panel_return_if_fail (XFCE_IS_TASKLIST (child->tasklist)); +- panel_return_if_fail (child->type == CHILD_TYPE_WINDOW); + panel_return_if_fail (WNCK_IS_WINDOW (child->window)); + + if (wnck_window_is_active (child->window)) +-- +cgit v0.8.3.4 diff --git a/main/xfce4-panel/APKBUILD b/main/xfce4-panel/APKBUILD index 263349f19..8a690f95f 100644 --- a/main/xfce4-panel/APKBUILD +++ b/main/xfce4-panel/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa pkgname=xfce4-panel pkgver=4.7.4 -pkgrel=0 +pkgrel=1 pkgdesc="Panel for the Xfce desktop environment" url="http://www.xfce.org/" license="GPL-2" @@ -9,9 +9,24 @@ subpackages="$pkgname-dev $pkgname-doc" depends="hicolor-icon-theme" makedepends="libxfce4ui-dev exo-dev garcon-dev libwnck-dev" install= -source="http://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2" +source="http://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2 + 6792.patch + dont-destroy-the-about-dialog.patch + allow-using-enter.patch + drop-the-automatics-grouping.patch + " + depends_dev="libxfce4util-dev gtk+-dev" +_builddir="$srcdir"/$pkgname-$pkgver +prepare() { + cd "$_builddir" + for i in $source; do + case $i in + *.patch) patch -p1 -i "$srcdir"/$i || return 1;; + esac + done +} build() { cd "$srcdir"/$pkgname-$pkgver ./configure --prefix=/usr \ @@ -27,4 +42,8 @@ package() { make DESTDIR="$pkgdir" install || return 1 } -md5sums="20a9afd50066a2c8a607f90eaec29cfa xfce4-panel-4.7.4.tar.bz2" +md5sums="20a9afd50066a2c8a607f90eaec29cfa xfce4-panel-4.7.4.tar.bz2 +7b0cd40e47ab64fa80c763d9a22ea848 6792.patch +039c3f3351920c0ae56e5676099c4bd5 dont-destroy-the-about-dialog.patch +c83d70479ecd2740d924d7e37e880689 allow-using-enter.patch +d248aa7918a4449145bf28f4670400d1 drop-the-automatics-grouping.patch" diff --git a/main/xfce4-panel/allow-using-enter.patch b/main/xfce4-panel/allow-using-enter.patch new file mode 100644 index 000000000..ee645add3 --- /dev/null +++ b/main/xfce4-panel/allow-using-enter.patch @@ -0,0 +1,193 @@ +From 10da325fac243a0b8d6766508b3fc892d605531a Mon Sep 17 00:00:00 2001 +From: Nick Schermer +Date: Sun, 07 Nov 2010 19:49:09 +0000 +Subject: Allow using enter in the launcher treeviews. + +--- +diff --git a/plugins/launcher/launcher-dialog.c b/plugins/launcher/launcher-dialog.c +index f19e73f..fbb981c 100644 +--- a/plugins/launcher/launcher-dialog.c ++++ b/plugins/launcher/launcher-dialog.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -67,14 +68,16 @@ enum + + + +-static void launcher_dialog_items_set_item (GtkTreeModel *model, +- GtkTreeIter *iter, +- GarconMenuItem *item); +-static void launcher_dialog_tree_save (LauncherPluginDialog *dialog); +-static void launcher_dialog_tree_selection_changed (GtkTreeSelection *selection, +- LauncherPluginDialog *dialog); +-static void launcher_dialog_items_unload (LauncherPluginDialog *dialog); +-static void launcher_dialog_items_load (LauncherPluginDialog *dialog); ++static void launcher_dialog_items_set_item (GtkTreeModel *model, ++ GtkTreeIter *iter, ++ GarconMenuItem *item); ++static void launcher_dialog_tree_save (LauncherPluginDialog *dialog); ++static void launcher_dialog_tree_selection_changed (GtkTreeSelection *selection, ++ LauncherPluginDialog *dialog); ++static gboolean launcher_dialog_press_event (LauncherPluginDialog *dialog, ++ const gchar *object_name); ++static void launcher_dialog_items_unload (LauncherPluginDialog *dialog); ++static void launcher_dialog_items_load (LauncherPluginDialog *dialog); + + + +@@ -297,24 +300,32 @@ launcher_dialog_add_button_press_event (GtkTreeView *treeview, + GdkEventButton *event, + LauncherPluginDialog *dialog) + { +- GObject *object; +- + panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE); + panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE); + +- if (event->button == 1 && event->type == GDK_2BUTTON_PRESS ++ if (event->button == 1 ++ && event->type == GDK_2BUTTON_PRESS + && event->window == gtk_tree_view_get_bin_window (treeview) + && gtk_tree_view_get_path_at_pos (treeview, event->x, event->y, + NULL, NULL, NULL, NULL)) +- { +- object = gtk_builder_get_object (dialog->builder, "button-add"); +- panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE); +- if (GTK_WIDGET_SENSITIVE (object)) +- { +- gtk_button_clicked (GTK_BUTTON (object)); +- return TRUE; +- } +- } ++ return launcher_dialog_press_event (dialog, "button-add"); ++ ++ return FALSE; ++} ++ ++ ++ ++static gboolean ++launcher_dialog_add_key_press_event (GtkTreeView *treeview, ++ GdkEventKey *event, ++ LauncherPluginDialog *dialog) ++{ ++ panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE); ++ panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE); ++ ++ if (event->keyval == GDK_KEY_Return ++ || event->keyval == GDK_KEY_KP_Enter) ++ return launcher_dialog_press_event (dialog, "button-add"); + + return FALSE; + } +@@ -517,7 +528,6 @@ launcher_dialog_tree_drag_data_received (GtkWidget *treeview, + + + +- + static void + launcher_dialog_tree_selection_changed (GtkTreeSelection *selection, + LauncherPluginDialog *dialog) +@@ -581,12 +591,31 @@ launcher_dialog_tree_selection_changed (GtkTreeSelection *selection, + + + static gboolean ++launcher_dialog_press_event (LauncherPluginDialog *dialog, ++ const gchar *object_name) ++{ ++ GObject *object; ++ ++ panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE); ++ ++ object = gtk_builder_get_object (dialog->builder, object_name); ++ panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE); ++ if (GTK_WIDGET_SENSITIVE (object)) ++ { ++ gtk_button_clicked (GTK_BUTTON (object)); ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ ++ ++ ++static gboolean + launcher_dialog_tree_button_press_event (GtkTreeView *treeview, + GdkEventButton *event, + LauncherPluginDialog *dialog) + { +- GObject *object; +- + panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE); + panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE); + +@@ -594,15 +623,24 @@ launcher_dialog_tree_button_press_event (GtkTreeView *treeview, + && event->window == gtk_tree_view_get_bin_window (treeview) + && gtk_tree_view_get_path_at_pos (treeview, event->x, event->y, + NULL, NULL, NULL, NULL)) +- { +- object = gtk_builder_get_object (dialog->builder, "item-edit"); +- panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE); +- if (GTK_WIDGET_SENSITIVE (object)) +- { +- gtk_button_clicked (GTK_BUTTON (object)); +- return TRUE; +- } +- } ++ return launcher_dialog_press_event (dialog, "item-edit"); ++ ++ return FALSE; ++} ++ ++ ++ ++static gboolean ++launcher_dialog_tree_key_press_event (GtkTreeView *treeview, ++ GdkEventKey *event, ++ LauncherPluginDialog *dialog) ++{ ++ panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE); ++ panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE); ++ ++ if (event->keyval == GDK_KEY_Return ++ || event->keyval == GDK_KEY_KP_Enter) ++ return launcher_dialog_press_event (dialog, "item-edit"); + + return FALSE; + } +@@ -991,6 +1029,8 @@ launcher_dialog_show (LauncherPlugin *plugin) + launcher_dialog_tree_selection_changed (selection, dialog); + g_signal_connect (G_OBJECT (object), "button-press-event", + G_CALLBACK (launcher_dialog_tree_button_press_event), dialog); ++ g_signal_connect (G_OBJECT (object), "key-press-event", ++ G_CALLBACK (launcher_dialog_tree_key_press_event), dialog); + + /* connect bindings to the advanced properties */ + for (i = 0; i < G_N_ELEMENTS (binding_names); i++) +@@ -1006,7 +1046,7 @@ launcher_dialog_show (LauncherPlugin *plugin) + g_signal_connect (G_OBJECT (object), "response", + G_CALLBACK (launcher_dialog_add_response), dialog); + g_signal_connect (G_OBJECT (object), "delete-event", +- G_CALLBACK (gtk_true), NULL); ++ G_CALLBACK (gtk_widget_hide_on_delete), NULL); + + /* setup sorting in the add dialog */ + object = gtk_builder_get_object (builder, "add-store"); +@@ -1025,6 +1065,8 @@ launcher_dialog_show (LauncherPlugin *plugin) + G_CALLBACK (launcher_dialog_add_selection_changed), dialog); + g_signal_connect (G_OBJECT (object), "button-press-event", + G_CALLBACK (launcher_dialog_add_button_press_event), dialog); ++ g_signal_connect (G_OBJECT (object), "key-press-event", ++ G_CALLBACK (launcher_dialog_add_key_press_event), dialog); + + /* setup search filter in the add dialog */ + object = gtk_builder_get_object (builder, "add-store-filter"); +-- +cgit v0.8.3.4 diff --git a/main/xfce4-panel/dont-destroy-the-about-dialog.patch b/main/xfce4-panel/dont-destroy-the-about-dialog.patch new file mode 100644 index 000000000..175ed7ede --- /dev/null +++ b/main/xfce4-panel/dont-destroy-the-about-dialog.patch @@ -0,0 +1,22 @@ +From de2ebcb59c77eeb30918d40271cb8ab0393d6fc0 Mon Sep 17 00:00:00 2001 +From: Nick Schermer +Date: Sun, 07 Nov 2010 12:07:19 +0000 +Subject: Don't destroy the about dialog. + +--- +diff --git a/panel/panel-dialogs.c b/panel/panel-dialogs.c +index 14596e9..f2f3b15 100644 +--- a/panel/panel-dialogs.c ++++ b/panel/panel-dialogs.c +@@ -44,9 +44,6 @@ panel_dialogs_show_about_email_hook (GtkAboutDialog *dialog, + { + if (g_strcmp0 ("tictactoe@xfce.org", uri) == 0) + { +- /* gtk needs to finish some stuff before the dialog can be closed */ +- exo_gtk_object_destroy_later (GTK_OBJECT (dialog)); +- + /* open tic-tac-toe */ + panel_tic_tac_toe_show (); + } +-- +cgit v0.8.3.4 diff --git a/main/xfce4-panel/drop-the-automatics-grouping.patch b/main/xfce4-panel/drop-the-automatics-grouping.patch new file mode 100644 index 000000000..61d449794 --- /dev/null +++ b/main/xfce4-panel/drop-the-automatics-grouping.patch @@ -0,0 +1,119 @@ +From 50c4281e5b8c36107732d0d48dd55e5ee7b9b549 Mon Sep 17 00:00:00 2001 +From: Nick Schermer +Date: Mon, 08 Nov 2010 21:10:16 +0000 +Subject: Drop the automatics grouping option from tasklist. + +Not implemented yet, so avoid the confusion. +--- +diff --git a/plugins/tasklist/tasklist-dialog.glade b/plugins/tasklist/tasklist-dialog.glade +index a2e19a0..a779d52 100644 +--- a/plugins/tasklist/tasklist-dialog.glade ++++ b/plugins/tasklist/tasklist-dialog.glade +@@ -349,10 +349,10 @@ + Never + + +- When space is limited ++ Always + + +- Always ++ When space is limited + + + +diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c +index 72283ba..23cd967 100644 +--- a/plugins/tasklist/tasklist-widget.c ++++ b/plugins/tasklist/tasklist-widget.c +@@ -307,7 +307,7 @@ xfce_tasklist_class_init (XfceTasklistClass *klass) + g_param_spec_uint ("grouping", + NULL, NULL, + XFCE_TASKLIST_GROUPING_MIN, +- XFCE_TASKLIST_GROUPING_MAX, ++ XFCE_TASKLIST_GROUPING_MAX + 1 /* TODO drop this later */, + XFCE_TASKLIST_GROUPING_DEFAULT, + EXO_PARAM_READWRITE)); + +@@ -765,10 +765,12 @@ xfce_tasklist_size_layout (XfceTasklist *tasklist, + n_buttons = tasklist->n_windows; + n_buttons_target = ((alloc->width / max_button_length) + 1) * rows; + ++#if 0 + if (tasklist->grouping == XFCE_TASKLIST_GROUPING_AUTO) + { + /* try creating group buttons */ + } ++#endif + + /* we now push the windows with the lowest score in the + * overflow menu */ +@@ -2918,9 +2920,11 @@ xfce_tasklist_group_button_child_destroyed (XfceTasklistChild *group_child, + } + + if ((group_child->tasklist->grouping == XFCE_TASKLIST_GROUPING_ALWAYS +- && n_children > 0) ++ && n_children > 0)) ++#if 0 + || (group_child->tasklist->grouping == XFCE_TASKLIST_GROUPING_AUTO + && n_children > 1)) ++#endif + { + xfce_tasklist_group_button_child_visible_changed (group_child); + xfce_tasklist_group_button_name_changed (NULL, group_child); +@@ -3148,6 +3152,10 @@ xfce_tasklist_set_grouping (XfceTasklist *tasklist, + { + panel_return_if_fail (XFCE_IS_TASKLIST (tasklist)); + ++ /* TODO avoid overflow, because we allows + 1 in the object */ ++ if (grouping > XFCE_TASKLIST_GROUPING_MAX) ++ grouping = XFCE_TASKLIST_GROUPING_MAX; ++ + if (tasklist->grouping != grouping) + { + tasklist->grouping = grouping; +diff --git a/plugins/tasklist/tasklist-widget.h b/plugins/tasklist/tasklist-widget.h +index c903260..c0574e4 100644 +--- a/plugins/tasklist/tasklist-widget.h ++++ b/plugins/tasklist/tasklist-widget.h +@@ -40,12 +40,12 @@ typedef enum _XfceTasklistSortOrder XfceTasklistSortOrder; + enum _XfceTasklistGrouping + { + XFCE_TASKLIST_GROUPING_NEVER, +- XFCE_TASKLIST_GROUPING_AUTO, /* when space is limited */ + XFCE_TASKLIST_GROUPING_ALWAYS, ++ /*XFCE_TASKLIST_GROUPING_AUTO, *//* when space is limited */ + + XFCE_TASKLIST_GROUPING_MIN = XFCE_TASKLIST_GROUPING_NEVER, + XFCE_TASKLIST_GROUPING_MAX = XFCE_TASKLIST_GROUPING_ALWAYS, +- XFCE_TASKLIST_GROUPING_DEFAULT = XFCE_TASKLIST_GROUPING_AUTO ++ XFCE_TASKLIST_GROUPING_DEFAULT = XFCE_TASKLIST_GROUPING_NEVER + }; + + enum _XfceTasklistSortOrder +diff --git a/plugins/tasklist/tasklist.c b/plugins/tasklist/tasklist.c +index d69c1b9..407a150 100644 +--- a/plugins/tasklist/tasklist.c ++++ b/plugins/tasklist/tasklist.c +@@ -185,6 +185,7 @@ tasklist_plugin_configure_plugin (XfcePanelPlugin *panel_plugin) + GtkBuilder *builder; + GObject *dialog; + GObject *object; ++ GtkTreeIter iter; + + /* setup the dialog */ + PANEL_UTILS_LINK_4UI +@@ -222,6 +223,11 @@ tasklist_plugin_configure_plugin (XfcePanelPlugin *panel_plugin) + gtk_widget_hide (GTK_WIDGET (object)); + #endif + ++ /* TODO: remove this if always group is supported */ ++ object = gtk_builder_get_object (builder, "grouping-model"); ++ if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (object), &iter, NULL, 2)) ++ gtk_list_store_remove (GTK_LIST_STORE (object), &iter); ++ + gtk_widget_show (GTK_WIDGET (dialog)); + } + +-- +cgit v0.8.3.4 -- cgit v1.2.3