From 10dad61d654e6bbb771047400cfad9ef859d6c9a Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Wed, 26 Aug 2015 19:52:44 +0200
Subject: It is now possible to create an SDI Frame Window as opposed to an SDI
 Doc Window; this is needed for example in tut 11.3.2

---
 Linux_C_12/cCrossCallMenus_121.c |  4 +++-
 Linux_C_12/cCrossCall_121.c      |  2 +-
 Linux_C_12/cCrossCallxDI_121.c   | 19 ++++++++++++-------
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/Linux_C_12/cCrossCallMenus_121.c b/Linux_C_12/cCrossCallMenus_121.c
index af9163f..294110f 100644
--- a/Linux_C_12/cCrossCallMenus_121.c
+++ b/Linux_C_12/cCrossCallMenus_121.c
@@ -286,6 +286,8 @@ void EvalCcRqINSERTMENU (CrossCallInfo *pcci)
     {
         printf("Adding to a menu bar.\n");
         GtkWidget *frame = gtk_widget_get_parent(gtk_widget_get_parent(parent_menu));
+        if (!G_IS_OBJECT(frame))
+            frame = gtk_widget_get_parent(parent_menu);
         accel_group = ((GtkAccelGroup*)gtk_accel_groups_from_object (G_OBJECT(frame))->data);
     }
     else
@@ -298,7 +300,7 @@ void EvalCcRqINSERTMENU (CrossCallInfo *pcci)
 
     root_menu = gtk_menu_item_new_with_mnemonic(title);
     gtk_widget_set_sensitive(root_menu, (gboolean) pcci->p1);
-    gtk_widget_show_all (root_menu);
+    gtk_widget_show (root_menu);
 
     gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), sub_menu);
 
diff --git a/Linux_C_12/cCrossCall_121.c b/Linux_C_12/cCrossCall_121.c
index 37bc4e0..a06438a 100644
--- a/Linux_C_12/cCrossCall_121.c
+++ b/Linux_C_12/cCrossCall_121.c
@@ -216,7 +216,7 @@ void HandleCleanRequest (CrossCallInfo * pcci)
 
                 if (action == NULL)
                 {	/* Cross call request code not installed. */
-                    /*printf("\'HandleCleanRequest\' got uninstalled CcRq request code from Haskell: %d\n", pcci->mess);*/
+                    printf("\'HandleCleanRequest\' got uninstalled CcRq request code from Clean: %d\n", pcci->mess);
                     exit(1);
                 }
                 else
diff --git a/Linux_C_12/cCrossCallxDI_121.c b/Linux_C_12/cCrossCallxDI_121.c
index 42225ff..5171bb6 100644
--- a/Linux_C_12/cCrossCallxDI_121.c
+++ b/Linux_C_12/cCrossCallxDI_121.c
@@ -14,6 +14,7 @@
 #include "cCrossCallxDI_121.h"
 #include "cCrossCall_121.h"
 #include "cCCallWindows_121.h"
+#include "cCrossCallWindows_121.h"
 
 
 /*	Global data with external references:
@@ -250,12 +251,10 @@ static gboolean frame_key_release_handler(GtkWidget *widget, GdkEventKey *event,
 void EvalCcRqCREATESDIFRAMEWINDOW (CrossCallInfo *pcci)	/* accept file open; frame ptr, menubar results. */
 {
     GtkWidget *window, *menuBar, *box;
+    GtkAccelGroup *accel_group;
 
     printf("EvalCcRqCREATESDIFRAMEWINDOW\n");
 
-    /* Create the menubar. */
-    menuBar = gtk_menu_bar_new();
-
     /* Create the window. */
     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     gtk_signal_connect (GTK_OBJECT (window), "focus-in-event",
@@ -287,11 +286,15 @@ void EvalCcRqCREATESDIFRAMEWINDOW (CrossCallInfo *pcci)	/* accept file open; fra
                     GTK_SIGNAL_FUNC(frame_drag_data_handler), NULL);
     }
 
-    gtk_window_add_accel_group (GTK_WINDOW (window), gtk_accel_group_new());
+    /* Create accel_group */
+    accel_group = gtk_accel_group_new();
+    gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
+
+    /* Create the menubar. */
+    menuBar = gtk_menu_bar_new();
+    gtk_container_add(GTK_CONTAINER(window), menuBar);
 
-    box = gtk_vbox_new(FALSE, 0);
-    gtk_container_add(GTK_CONTAINER(window), box);
-    gtk_box_pack_start(GTK_BOX(box), menuBar, FALSE, FALSE, 0);
+    gtk_widget_show(GTK_WIDGET(window));
     gtk_widget_show(menuBar);
 
     MakeReturn2Cci (pcci, (int64_t) window, (int64_t) menuBar);
@@ -604,6 +607,8 @@ OS InstallCrossCallxDI (OS ios)
     AddCrossCallEntry (newTable, CcRqCREATETOOLBARSEPARATOR, EvalCcRqCREATETOOLBARSEPARATOR);
     AddCrossCallEntries (gCrossCallProcedureTable, newTable);
 
+    ios = InstallCrossCallWindows(ios);
+
     return ios;
 }
 
-- 
cgit v1.2.3