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