Set transient parent for about box
authorThomas White <taw@bitwiz.me.uk>
Sun, 15 Apr 2018 16:21:18 +0000 (18:21 +0200)
committerThomas White <taw@bitwiz.me.uk>
Sun, 15 Apr 2018 16:21:18 +0000 (18:21 +0200)
A bit tricky because it can be called up from two different windows
(narrative and slide editor)

data/menu-bar.ui
src/colloquium.c
src/colloquium.h
src/narrative_window.c
src/slide_window.c

index 909eb37..fc5b663 100644 (file)
         </item>
         <item>
           <attribute name='label' translatable='yes'>About</attribute>
-          <attribute name='action'>app.about</attribute>
+          <attribute name='action'>win.about</attribute>
         </item>
       </section>
     </submenu>
index de093e8..dbe9caf 100644 (file)
@@ -88,7 +88,7 @@ static void intro_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
 }
 
 
-static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
+void open_about_dialog(GtkWidget *parent)
 {
        GtkWidget *window;
 
@@ -98,6 +98,7 @@ static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
        };
 
        window = gtk_about_dialog_new();
+       gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(parent));
 
        gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window),
            "Colloquium");
@@ -210,7 +211,6 @@ GActionEntry app_entries[] = {
 
        { "new", new_sig, NULL, NULL, NULL  },
        { "open", open_sig, NULL, NULL, NULL  },
-       { "about", about_sig, NULL, NULL, NULL  },
        { "intro", intro_sig, NULL, NULL, NULL  },
        { "quit", quit_sig, NULL, NULL, NULL  },
 };
index beb7ec8..71bae1c 100644 (file)
@@ -39,6 +39,7 @@ typedef struct _colloquium Colloquium;
 extern const char *colloquium_get_imagestore(Colloquium *app);
 
 extern int colloquium_get_hidepointer(Colloquium *app);
+extern void open_about_dialog(GtkWidget *parent);
 
 
 #endif /* COLLOQUIUM_H */
index 551195e..7d51350 100644 (file)
@@ -139,6 +139,13 @@ static void saveas_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
 }
 
 
+static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
+{
+       NarrativeWindow *nw = vp;
+       open_about_dialog(nw->window);
+}
+
+
 static void save_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
 {
        NarrativeWindow *nw = vp;
@@ -727,6 +734,7 @@ static int click_thumbnail(double x, double y, void *bvp, void *vp)
 
 GActionEntry nw_entries[] = {
 
+       { "about", about_sig, NULL, NULL, NULL },
        { "save", save_sig, NULL, NULL, NULL },
        { "saveas", saveas_sig, NULL, NULL, NULL },
        { "sorter", open_slidesorter_sig, NULL, NULL, NULL },
index 28d556b..a9f8459 100644 (file)
@@ -212,8 +212,16 @@ static gboolean sw_key_press_sig(GtkWidget *da, GdkEventKey *event,
 }
 
 
+static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp)
+{
+       SlideWindow *sw = vp;
+       open_about_dialog(sw->window);
+}
+
+
 GActionEntry sw_entries[] = {
 
+       { "about", about_sig, NULL, NULL, NULL },
        { "paste", paste_sig, NULL, NULL, NULL },
        { "copyframe", copy_frame_sig, NULL, NULL, NULL },
        { "deleteframe", delete_frame_sig, NULL, NULL, NULL },