Mercurial > dwindows
comparison gtk/dw.c @ 331:20def3eaae8d
Implement handling of switch-page signal for notebooks.
author | mhessling@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 09 Apr 2003 09:41:34 +0000 |
parents | 9b1953ed0bff |
children | e9a424e641ff |
comparison
equal
deleted
inserted
replaced
330:b87afd126cb7 | 331:20def3eaae8d |
---|---|
91 #if GTK_MAJOR_VERSION > 1 | 91 #if GTK_MAJOR_VERSION > 1 |
92 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); | 92 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); |
93 #else | 93 #else |
94 static gint _tree_select_event(GtkTree *tree, GtkWidget *child, gpointer data); | 94 static gint _tree_select_event(GtkTree *tree, GtkWidget *child, gpointer data); |
95 #endif | 95 #endif |
96 static gint _switch_page_event(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data); | |
96 | 97 |
97 typedef struct | 98 typedef struct |
98 { | 99 { |
99 GdkPixmap *pixmap; | 100 GdkPixmap *pixmap; |
100 GdkBitmap *mask; | 101 GdkBitmap *mask; |
121 void *func; | 122 void *func; |
122 gpointer data; | 123 gpointer data; |
123 | 124 |
124 } SignalHandler; | 125 } SignalHandler; |
125 | 126 |
126 #define SIGNALMAX 16 | 127 #define SIGNALMAX 17 |
127 | 128 |
128 /* A list of signal forwarders, to account for paramater differences. */ | 129 /* A list of signal forwarders, to account for paramater differences. */ |
129 static SignalList SignalTranslate[SIGNALMAX] = { | 130 static SignalList SignalTranslate[SIGNALMAX] = { |
130 { _configure_event, DW_SIGNAL_CONFIGURE }, | 131 { _configure_event, DW_SIGNAL_CONFIGURE }, |
131 { _key_press_event, DW_SIGNAL_KEY_PRESS }, | 132 { _key_press_event, DW_SIGNAL_KEY_PRESS }, |
140 { _container_context_event, DW_SIGNAL_ITEM_CONTEXT }, | 141 { _container_context_event, DW_SIGNAL_ITEM_CONTEXT }, |
141 { _tree_context_event, "tree-context" }, | 142 { _tree_context_event, "tree-context" }, |
142 { _item_select_event, DW_SIGNAL_LIST_SELECT }, | 143 { _item_select_event, DW_SIGNAL_LIST_SELECT }, |
143 { _tree_select_event, DW_SIGNAL_ITEM_SELECT }, | 144 { _tree_select_event, DW_SIGNAL_ITEM_SELECT }, |
144 { _set_focus_event, DW_SIGNAL_SET_FOCUS }, | 145 { _set_focus_event, DW_SIGNAL_SET_FOCUS }, |
145 { _value_changed_event, DW_SIGNAL_VALUE_CHANGED } | 146 { _value_changed_event, DW_SIGNAL_VALUE_CHANGED }, |
147 { _switch_page_event, DW_SIGNAL_SWITCH_PAGE } | |
146 }; | 148 }; |
147 | 149 |
148 /* Alignment flags */ | 150 /* Alignment flags */ |
149 #define DW_CENTER 0.5f | 151 #define DW_CENTER 0.5f |
150 #define DW_LEFT 0.0f | 152 #define DW_LEFT 0.0f |
541 | 543 |
542 text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), row); | 544 text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), row); |
543 retval = contextfunc(work->window, text, work->data); | 545 retval = contextfunc(work->window, text, work->data); |
544 gtk_object_set_data(GTK_OBJECT(widget), "_dw_double_click", (gpointer)1); | 546 gtk_object_set_data(GTK_OBJECT(widget), "_dw_double_click", (gpointer)1); |
545 } | 547 } |
548 } | |
549 return retval; | |
550 } | |
551 | |
552 static gint _switch_page_event(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data) | |
553 { | |
554 SignalHandler *work = (SignalHandler *)data; | |
555 int retval = FALSE; | |
556 | |
557 if(work) | |
558 { | |
559 int (*switchpagefunc)(HWND, int, void *) = work->func; | |
560 retval = switchpagefunc(work->window, page_num, work->data); | |
546 } | 561 } |
547 return retval; | 562 return retval; |
548 } | 563 } |
549 | 564 |
550 static gint _select_row(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) | 565 static gint _select_row(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) |
7660 else if(GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) || | 7675 else if(GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) || |
7661 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow)) | 7676 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow)) |
7662 { | 7677 { |
7663 thiswindow = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(thiswindow), "adjustment"); | 7678 thiswindow = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(thiswindow), "adjustment"); |
7664 } | 7679 } |
7680 else if(GTK_IS_NOTEBOOK(thiswindow) && strcmp(signame, DW_SIGNAL_SWITCH_PAGE) == 0) | |
7681 { | |
7682 thisname = "switch-page"; | |
7683 } | |
7665 | 7684 |
7666 if(!thisfunc || !thiswindow) | 7685 if(!thisfunc || !thiswindow) |
7667 { | 7686 { |
7668 free(work); | 7687 free(work); |
7669 DW_MUTEX_UNLOCK; | 7688 DW_MUTEX_UNLOCK; |