+2012-11-16 [colin] 3.9.0cvs10
+
+ * src/foldersel.c
+ * src/prefs_actions.c
+ * src/prefs_filtering_action.c
+ * src/prefs_matcher.c
+ * src/quote_fmt.c
+ * src/gtk/description_window.c
+ * src/gtk/description_window.h
+ * src/gtk/inputdialog.c
+ * src/gtk/manage_window.c
+ * src/gtk/quicksearch.c
+ Try to better fix focus problems. Should address:
+ Bug #2774
+ Bug #2624
+ Bug #1963
+ Please check using your favorite WM that the following works:
+ Information button (Quicksearch, Templates, 'Test' filtering
+ condition)
+ Folder selection (Move/Copy contextual menu,
+ various preferences, including 'New folder').
+ Tested with XFCE, Gnome Shell and Windows.
+
+
2012-11-16 [colin] 3.9.0cvs9
* src/advsearch.c
( cvs diff -u -r 1.58.2.51 -r 1.58.2.52 po/de.po; ) > 3.9.0cvs7.patchset
( cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/advsearch.c; ) > 3.9.0cvs8.patchset
( cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/advsearch.c; ) > 3.9.0cvs9.patchset
+( cvs diff -u -r 1.26.2.49 -r 1.26.2.50 src/foldersel.c; cvs diff -u -r 1.60.2.83 -r 1.60.2.84 src/prefs_actions.c; cvs diff -u -r 1.1.4.80 -r 1.1.4.81 src/prefs_filtering_action.c; cvs diff -u -r 1.43.2.97 -r 1.43.2.98 src/prefs_matcher.c; cvs diff -u -r 1.8.2.47 -r 1.8.2.48 src/quote_fmt.c; cvs diff -u -r 1.5.2.36 -r 1.5.2.37 src/gtk/description_window.c; cvs diff -u -r 1.1.4.10 -r 1.1.4.11 src/gtk/description_window.h; cvs diff -u -r 1.2.2.49 -r 1.2.2.50 src/gtk/inputdialog.c; cvs diff -u -r 1.1.4.11 -r 1.1.4.12 src/gtk/manage_window.c; cvs diff -u -r 1.1.2.120 -r 1.1.2.121 src/gtk/quicksearch.c; ) > 3.9.0cvs10.patchset
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=9
+EXTRA_VERSION=10
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
gtk_widget_grab_focus(ok_button);
gtk_widget_grab_focus(treeview);
- gtk_widget_show(window);
+ gtk_window_present(window);
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
manage_window_set_transient(GTK_WINDOW(window));
while (finished == FALSE)
gtk_main_iteration();
- gtk_widget_hide(window);
- gtk_window_set_modal(GTK_WINDOW(window), FALSE);
- gtk_entry_set_text(GTK_ENTRY(entry), "");
- gtk_tree_store_clear(tree_store);
+ gtk_widget_destroy(window);
+ window = NULL;
if (!cancelled &&
selected_item && (selected_item->path || root_selectable)) {
description_create(dwindow);
gtk_window_set_transient_for(GTK_WINDOW(dwindow->window), GTK_WINDOW(dwindow->parent));
+ dwindow->parent_modal = gtk_window_get_modal(GTK_WINDOW(dwindow->parent));
+#ifndef G_OS_WIN32
gtk_window_set_modal(GTK_WINDOW(dwindow->parent), TRUE);
+#else
+ gtk_window_set_modal(GTK_WINDOW(dwindow->window), TRUE);
+#endif
gtk_window_set_destroy_with_parent(GTK_WINDOW(dwindow->window), TRUE);
gtk_widget_show(dwindow->window);
dwindow->window = NULL;
}
- if(dwindow->parent)
+ if(dwindow->parent) {
+ if (GTK_IS_WINDOW(dwindow->parent))
+ gtk_window_set_modal(GTK_WINDOW(dwindow->parent), dwindow->parent_modal);
g_signal_handlers_disconnect_by_func(G_OBJECT(dwindow->parent),
description_window_destroy, dwindow->parent);
+ }
}
{
GtkWidget * window;
GtkWidget * parent;
+ gboolean parent_modal;
/** Number of columns for each line of data **/
int columns;
/** title of the window **/
gtk_button_set_label(GTK_BUTTON(remember_checkbtn), _("Remember this"));
input_dialog_set(title, message, default_string);
- gtk_widget_show(dialog);
+ gtk_window_present(GTK_WINDOW(dialog));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remember_checkbtn),
default_checkbtn_state);
gtk_main_iteration();
manage_window_focus_out(dialog, NULL, NULL);
- gtk_widget_hide(dialog);
if (ack) {
GtkEditable *editable;
if (remember) {
*remember = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remember_checkbtn));
}
+
+ gtk_widget_destroy(dialog);
+ dialog = NULL;
+
if (is_pass)
debug_print("return string = %s\n", str ? "********": ("none"));
else
#include <gtk/gtk.h>
#include "manage_window.h"
-/* #include "utils.h" */
+#include "utils.h"
GtkWidget *focus_window;
gint manage_window_focus_in(GtkWidget *widget, GdkEventFocus *event,
gpointer data)
{
- /* debug_print("Focus in event: window: %p\n", widget); */
+ const gchar *title = NULL;
+
+ if (!GTK_IS_WINDOW(widget))
+ return FALSE;
+
+ title = gtk_window_get_title(GTK_WINDOW(widget));
+ debug_print("Focus in event: window: %p - %s\n", widget,
+ title ? title : "no title");
focus_window = widget;
gint manage_window_focus_out(GtkWidget *widget, GdkEventFocus *event,
gpointer data)
{
- /* debug_print("Focused window: %p\n", focus_window); */
- /* debug_print("Focus out event: window: %p\n", widget); */
+ const gchar *title = NULL;
+
+ if (!GTK_IS_WINDOW(widget))
+ return FALSE;
+
+ title = gtk_window_get_title(GTK_WINDOW(widget));
+ debug_print("Focus out event: window: %p - %s\n", widget,
+ title ? title : "no title");
if (focus_window == widget)
focus_window = NULL;
gint manage_window_unmap(GtkWidget *widget, GdkEventAny *event, gpointer data)
{
- /* debug_print("unmap event: %p\n", widget); */
+ const gchar *title = gtk_window_get_title(GTK_WINDOW(widget));
+ debug_print("Unmap event: window: %p - %s\n", widget,
+ title ? title : "no title");
if (focus_window == widget)
focus_window = NULL;
void manage_window_destroy(GtkWidget *widget, gpointer data)
{
- /* debug_print("destroy event: %p\n", widget); */
+ const gchar *title = gtk_window_get_title(GTK_WINDOW(widget));
+ debug_print("Destroy event: window: %p - %s\n", widget,
+ title ? title : "no title");
+
if (focus_window == widget)
focus_window = NULL;
static DescriptionWindow search_descr = {
NULL,
NULL,
+ FALSE,
2,
N_("Extended Search"),
N_("Extended Search allows the user to define criteria that messages must "
static DescriptionWindow actions_desc_win = {
NULL,
NULL,
+ TRUE,
2,
N_("Actions"),
N_("The Actions feature is a way for the user to launch "
static DescriptionWindow exec_desc_win = {
NULL,
- NULL,
+ NULL,
+ TRUE,
2,
N_("Filtering Action: 'Execute'"),
N_("'Execute' allows you to send a message or message element "
static DescriptionWindow test_desc_win = {
NULL,
NULL,
+ TRUE,
2,
N_("Match Type: 'Test'"),
N_("'Test' allows you to test a message or message element "
static DescriptionWindow quote_desc_win = {
NULL,
NULL,
+ TRUE,
2,
N_("Description of symbols"),
N_("The following symbols and commands can be used:"),