Ensure Properties dialog is displayed above fullscreen window.
authorLaurent Monin <geeqie@norz.org>
Tue, 22 Apr 2008 08:16:02 +0000 (08:16 +0000)
committerLaurent Monin <geeqie@norz.org>
Tue, 22 Apr 2008 08:16:02 +0000 (08:16 +0000)
Add a parameter to info_window_new() to pass parent window and
revert patch 472.

12 files changed:
src/collect-table.c
src/collect.c
src/dupe.c
src/img-view.c
src/info.c
src/info.h
src/layout_image.c
src/layout_util.c
src/pan-view.c
src/search.c
src/view_file_icon.c
src/view_file_list.c

index 08afe1a..36fb344 100644 (file)
@@ -594,7 +594,7 @@ static void collection_table_popup_info_cb(GtkWidget *widget, gpointer data)
 {
        CollectTable *ct = data;
 
-       info_window_new(NULL, collection_table_popup_file_list(ct));
+       info_window_new(NULL, collection_table_popup_file_list(ct), NULL);
 }
 
 static void collection_table_popup_copy_cb(GtkWidget *widget, gpointer data)
index d345d02..a2320c1 100644 (file)
@@ -871,7 +871,7 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                                file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window);
                                break;
                        case 'P': case 'p':
-                               info_window_new(NULL, collection_table_selection_get_list(cw->table));
+                               info_window_new(NULL, collection_table_selection_get_list(cw->table), NULL);
                                break;
                        case 'S': case 's':
                                collection_dialog_save_as(NULL, cw->cd);
index fd13b20..e9c6969 100644 (file)
@@ -2147,7 +2147,7 @@ static void dupe_menu_info_cb(GtkWidget *widget, gpointer data)
 {
        DupeWindow *dw = data;
 
-       info_window_new(NULL, dupe_listview_get_selection(dw, dw->listview));
+       info_window_new(NULL, dupe_listview_get_selection(dw, dw->listview), NULL);
 }
 
 static void dupe_menu_collection_cb(GtkWidget *widget, gpointer data)
@@ -2926,7 +2926,7 @@ static gint dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                        file_util_delete(NULL, dupe_listview_get_selection(dw, listview), dw->window);
                                        break;
                                case 'P': case 'p':
-                                       info_window_new(NULL, dupe_listview_get_selection(dw, listview));
+                                       info_window_new(NULL, dupe_listview_get_selection(dw, listview), NULL);
                                        break;
                                default:
                                        stop_signal = FALSE;
index 5ccfb53..fc6c921 100644 (file)
@@ -419,7 +419,7 @@ static gint view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoi
                                file_util_delete(image_get_fd(imd), NULL, imd->widget);
                                break;
                        case 'P': case 'p':
-                               info_window_new(image_get_fd(imd), NULL);
+                               info_window_new(image_get_fd(imd), NULL, vw->fs ? vw->fs->window : NULL);
                                break;
                        case 'W': case 'w':
                                view_window_close(vw);
@@ -1114,10 +1114,8 @@ static void view_info_cb(GtkWidget *widget, gpointer data)
        ViewWindow *vw = data;
        ImageWindow *imd;
 
-       if (vw->fs) view_fullscreen_toggle(vw, FALSE);
-
        imd = view_window_active_image(vw);
-       info_window_new(image_get_fd(imd), NULL);
+       info_window_new(image_get_fd(imd), NULL, vw->fs ? vw->fs->window : NULL);
 }
 
 static void view_wallpaper_cb(GtkWidget *widget, gpointer data)
index 67d8bd5..63513d5 100644 (file)
@@ -753,7 +753,7 @@ static void info_window_destroy_cb(GtkWidget *widget, gpointer data)
        g_free(id);
 }
 
-void info_window_new(FileData *fd, GList *list)
+void info_window_new(FileData *fd, GList *list, GtkWidget *parent)
 {
        InfoData *id;
        GtkWidget *main_vbox;
@@ -778,7 +778,14 @@ void info_window_new(FileData *fd, GList *list)
 
        id->window = window_new(GTK_WINDOW_TOPLEVEL, "properties", NULL, NULL, _("Image properties"));
        gtk_window_set_type_hint(GTK_WINDOW(id->window), GDK_WINDOW_TYPE_HINT_DIALOG);
-
+       id->parent = parent;
+       if (GTK_IS_WINDOW(id->parent)) {
+               gtk_window_set_keep_above(GTK_WINDOW(id->window), TRUE);
+#if 0
+               /* work, but behavior is not that great */
+               gtk_window_set_transient_for(GTK_WINDOW(id->window), GTK_WINDOW(id->parent));
+#endif
+       }
        gtk_window_set_resizable(GTK_WINDOW(id->window), TRUE);
 
        geometry.min_width = 32;
index 7049142..b7a1912 100644 (file)
@@ -19,6 +19,8 @@ typedef struct _InfoData InfoData;
 struct _InfoData
 {
        GtkWidget *window;
+       GtkWidget *parent;
+
        ImageWindow *image;
 
        GList *list;
@@ -38,7 +40,7 @@ struct _InfoData
 };
 
 
-void info_window_new(FileData *fd, GList *list);
+void info_window_new(FileData *fd, GList *list, GtkWidget *parent);
 
 GtkWidget *table_add_line(GtkWidget *table, gint x, gint y,
                          const gchar *description, const gchar *text);
index 6ad3dfc..6c7752f 100644 (file)
@@ -182,7 +182,7 @@ static gint layout_image_full_screen_key_press_cb(GtkWidget *widget, GdkEventKey
                                file_util_delete(layout_image_get_fd(lw), NULL, widget);
                                break;
                        case 'P': case 'p':
-                               info_window_new(layout_image_get_fd(lw), NULL);
+                               info_window_new(layout_image_get_fd(lw), NULL, NULL);
                                break;
                        case 'Q': case 'q':
                                exit_program();
@@ -615,8 +615,7 @@ static void li_pop_menu_info_cb(GtkWidget *widget, gpointer data)
 {
        LayoutWindow *lw = data;
 
-       if (lw->full_screen) layout_image_full_screen_stop(lw);
-       info_window_new(layout_image_get_fd(lw), NULL);
+       info_window_new(layout_image_get_fd(lw), NULL, lw->full_screen ? lw->full_screen->window : NULL);
 }
 
 static void li_pop_menu_new_cb(GtkWidget *widget, gpointer data)
index 5f2a0d3..a563682 100644 (file)
@@ -354,7 +354,7 @@ static void layout_menu_info_cb(GtkAction *action, gpointer data)
        list = layout_selection_list(lw);
        if (!list) fd = layout_image_get_fd(lw);
 
-       info_window_new(fd, list);
+       info_window_new(fd, list, NULL);
 }
 
 
index 7db268a..bb6d8a5 100644 (file)
@@ -1311,7 +1311,7 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                if (fd) file_util_delete(fd, NULL, GTK_WIDGET(pr));
                                break;
                        case 'P': case 'p':
-                               if (fd) info_window_new(fd, NULL);
+                               if (fd) info_window_new(fd, NULL, NULL);
                                break;
                        case 'F': case 'f':
                                pan_search_toggle_visible(pw, TRUE);
@@ -2677,7 +2677,7 @@ static void pan_info_cb(GtkWidget *widget, gpointer data)
        FileData *fd;
 
        fd = pan_menu_click_fd(pw);
-       if (fd) info_window_new(fd, NULL);
+       if (fd) info_window_new(fd, NULL, NULL);
 }
 
 static void pan_zoom_in_cb(GtkWidget *widget, gpointer data)
index 306660c..88c4e91 100644 (file)
@@ -900,7 +900,7 @@ static void sr_menu_info_cb(GtkWidget *widget, gpointer data)
 {
        SearchData *sd = data;
 
-       info_window_new(NULL, search_result_selection_list(sd));
+       info_window_new(NULL, search_result_selection_list(sd), NULL);
 }
 
 static void sr_menu_collection_cb(GtkWidget *widget, gpointer data)
@@ -1232,7 +1232,7 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                                file_util_delete(NULL, search_result_selection_list(sd), widget);
                                break;
                        case 'P': case 'p':
-                               info_window_new(NULL,  search_result_selection_list(sd));
+                               info_window_new(NULL,  search_result_selection_list(sd), NULL);
                                break;
                        case 'A': case 'a':
                                if (event->state & GDK_SHIFT_MASK)
index 47749f0..28b4ad4 100644 (file)
@@ -191,7 +191,7 @@ static void vficon_pop_menu_info_cb(GtkWidget *widget, gpointer data)
 {
        ViewFileIcon *vfi = data;
 
-       info_window_new(NULL, vficon_pop_menu_file_list(vfi));
+       info_window_new(NULL, vficon_pop_menu_file_list(vfi), NULL);
 }
 
 static void vficon_pop_menu_view_cb(GtkWidget *widget, gpointer data)
index 7fc465b..9d6bf6b 100644 (file)
@@ -316,7 +316,7 @@ static void vflist_pop_menu_info_cb(GtkWidget *widget, gpointer data)
 {
        ViewFileList *vfl = data;
 
-       info_window_new(NULL, vflist_pop_menu_file_list(vfl));
+       info_window_new(NULL, vflist_pop_menu_file_list(vfl), NULL);
 }
 
 static void vflist_pop_menu_view_cb(GtkWidget *widget, gpointer data)