From b7d63b0be1981c7f12b76ad7e085e5c6f43ff387 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Wed, 30 Jun 2004 14:07:51 +0000 Subject: detachable windows in gtk+2 --- mixgtk/mixgtk_device.c | 49 ++++++++++++++++++++----------------------------- 1 file changed, 20 insertions(+), 29 deletions(-) (limited to 'mixgtk/mixgtk_device.c') diff --git a/mixgtk/mixgtk_device.c b/mixgtk/mixgtk_device.c index e701728..885c19c 100644 --- a/mixgtk/mixgtk_device.c +++ b/mixgtk/mixgtk_device.c @@ -1,7 +1,7 @@ /* -*-c-*- ---------------- mixgtk_device.c : * actual types for mixgtk devices * ------------------------------------------------------------------ - * $Id: mixgtk_device.c,v 1.22 2004/06/24 01:40:47 jao Exp $ + * $Id: mixgtk_device.c,v 1.23 2004/06/30 14:07:53 jao Exp $ * ------------------------------------------------------------------ * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. * @@ -42,7 +42,6 @@ static const gchar *DEV_FORMAT_KEY_ = "Device.format"; /* device container */ -static GtkContainer *container_ = NULL; static GtkNotebook *dev_nb_ = NULL; /* devdir dialog */ static GtkWidget *devdir_dlg_ = NULL; @@ -284,6 +283,7 @@ mixgtk_device_construct_gui_ (struct mixgtk_device_t *dev) gtk_tree_view_new_with_model (GTK_TREE_MODEL (bindev->store)); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (dev->widget), FALSE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (dev->widget), TRUE); for (k = 0; k < BIN_DEV_COL_; ++k) { @@ -293,14 +293,14 @@ mixgtk_device_construct_gui_ (struct mixgtk_device_t *dev) "text", k, NULL)); } + g_free (types); } g_assert (dev->widget); gtk_container_add (GTK_CONTAINER (dev->scroll), dev->widget); + mixgtk_fontsel_set_font (MIX_FONT_DEVICES, dev->widget); gtk_notebook_append_page (dev_nb_, dev->scroll, label); - gtk_widget_set_style (dev->widget, - gtk_widget_get_style (GTK_WIDGET (dev_nb_))); gtk_widget_show (label); gtk_widget_show (dev->scroll); gtk_widget_show (dev->widget); @@ -368,11 +368,11 @@ mixgtk_device_new_ (mix_device_type_t type) } /* init default devices */ -gboolean -mixgtk_device_init (GtkContainer *container, mix_vm_t *vm) +GtkWidget * +mixgtk_device_init (mix_vm_t *vm) { - g_return_val_if_fail (container != NULL, FALSE); - g_return_val_if_fail (vm != NULL, FALSE); + g_assert (vm != NULL); + vm_ = vm; devdlg_ = NULL; devdir_dlg_ = NULL; @@ -392,22 +392,12 @@ mixgtk_device_init (GtkContainer *container, mix_vm_t *vm) dev_nb_ = GTK_NOTEBOOK (gtk_notebook_new ()); gtk_notebook_set_tab_pos (dev_nb_, GTK_POS_RIGHT); - gtk_notebook_set_scrollable (dev_nb_, TRUE); - gtk_container_add (container, GTK_WIDGET (dev_nb_)); - } - else if (container_) - { - gtk_widget_reparent (GTK_WIDGET (dev_nb_), GTK_WIDGET (container)); + gtk_notebook_set_scrollable (dev_nb_, FALSE); } - container_ = container; - - gtk_widget_show (GTK_WIDGET (dev_nb_)); - gtk_widget_show (GTK_WIDGET (container_)); - mixgtk_fontsel_set_font (MIX_FONT_DEVICES, GTK_WIDGET (dev_nb_)); - return TRUE; + return GTK_WIDGET (dev_nb_); } void @@ -584,19 +574,20 @@ void on_devices_font_activate () { gint no = gtk_notebook_get_n_pages (dev_nb_); - GtkWidget **w = g_new (GtkWidget *, 2 * no + 1); - gint k; + GtkWidget **w = g_new (GtkWidget *, no + 1); + gint k, j; - w[2 * no] = GTK_WIDGET (dev_nb_); - for (k = 0; k < no; ++k) + for (k = 0, j = 0; k < no && j < mix_dev_INVALID; ++j) { - w[k] = gtk_notebook_get_nth_page (dev_nb_, k); - w[k + no] = gtk_bin_get_child (GTK_BIN (w[k])); - g_assert (w[k]); - g_assert (w[k + no]); + struct mixgtk_device_t * dev = + (struct mixgtk_device_t *) mix_vm_get_device (vm_, j); + if (dev != NULL) w[k++] = dev->widget; } - mixgtk_fontsel_query_font (MIX_FONT_DEVICES, w, 2 * no + 1); + g_assert (k == no); + w[k] = GTK_WIDGET (dev_nb_); + + mixgtk_fontsel_query_font (MIX_FONT_DEVICES, w, no + 1); g_free (w); } -- cgit v1.2.3