context menu base
This commit is contained in:
parent
d92945717d
commit
a751e602ad
@ -230,12 +230,13 @@ gint BufferView::CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer
|
|||||||
|
|
||||||
gint BufferView::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
gint BufferView::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
||||||
{
|
{
|
||||||
//BufferView * self = reinterpret_cast<BufferView*>(data);
|
BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_2_0
|
# ifdef USE_GTK_VERSION_2_0
|
||||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
|
||||||
# endif
|
# endif
|
||||||
EDN_INFO("Focus - out");
|
EDN_INFO("Focus - out");
|
||||||
|
self->m_menuContext->Hide();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,14 +254,15 @@ gint BufferView::CB_keyboardEvent( GtkWidget *widget, GdkEventKey *event, gpoint
|
|||||||
gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||||
{
|
{
|
||||||
BufferView * self = reinterpret_cast<BufferView*>(data);
|
BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
|
if (event->type != GDK_BUTTON_RELEASE) {
|
||||||
|
self->m_menuContext->Hide();
|
||||||
|
}
|
||||||
// get focus on the widget
|
// get focus on the widget
|
||||||
gtk_widget_grab_focus(widget);
|
gtk_widget_grab_focus(widget);
|
||||||
if (event->button == 1) {
|
if (event->button == 1) {
|
||||||
/*
|
|
||||||
if (event->type == GDK_BUTTON_PRESS) {
|
if (event->type == GDK_BUTTON_PRESS) {
|
||||||
EDN_INFO("mouse-event BT1 ==> One Clicked");
|
EDN_INFO("mouse-event BT1 ==> One Clicked");
|
||||||
}else*/ if (event->type == GDK_2BUTTON_PRESS) {
|
}else if (event->type == GDK_2BUTTON_PRESS) {
|
||||||
//EDN_INFO("mouse-event BT1 ==> Double Clicked %d, %d", (uint32_t)event->x, (uint32_t)event->y);
|
//EDN_INFO("mouse-event BT1 ==> Double Clicked %d, %d", (uint32_t)event->x, (uint32_t)event->y);
|
||||||
uint32_t fontHeight = Display::GetFontHeight();
|
uint32_t fontHeight = Display::GetFontHeight();
|
||||||
int32_t selectBuf = self->m_bufferManager->WitchBuffer((event->y / fontHeight) + 1);
|
int32_t selectBuf = self->m_bufferManager->WitchBuffer((event->y / fontHeight) + 1);
|
||||||
@ -279,12 +281,14 @@ gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, g
|
|||||||
}else if (event->type == GDK_BUTTON_RELEASE) {
|
}else if (event->type == GDK_BUTTON_RELEASE) {
|
||||||
EDN_INFO("mouse-event BT1 ==> Realease");
|
EDN_INFO("mouse-event BT1 ==> Realease");
|
||||||
}*/
|
}*/
|
||||||
}/* else if (event->button == 2) {
|
} else if (event->button == 2) {
|
||||||
|
/*
|
||||||
if (event->type == GDK_BUTTON_PRESS) {
|
if (event->type == GDK_BUTTON_PRESS) {
|
||||||
EDN_INFO("mouse-event BT2 PRESS");
|
EDN_INFO("mouse-event BT2 PRESS");
|
||||||
self->m_menuContext->Show(event->x, event->y, false);
|
self->m_menuContext->Show(event->x, event->y, false);
|
||||||
}
|
}
|
||||||
}*/ else if (event->button == 3) {
|
*/
|
||||||
|
} else if (event->button == 3) {
|
||||||
if (event->type == GDK_BUTTON_PRESS) {
|
if (event->type == GDK_BUTTON_PRESS) {
|
||||||
EDN_INFO("mouse-event BT3 PRESS");
|
EDN_INFO("mouse-event BT3 PRESS");
|
||||||
uint32_t fontHeight = Display::GetFontHeight();
|
uint32_t fontHeight = Display::GetFontHeight();
|
||||||
@ -298,6 +302,8 @@ gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, g
|
|||||||
gtk_widget_translate_coordinates(widget, gtk_widget_get_toplevel(widget), 0, 0, &widgetPosX, &widgetPosY);
|
gtk_widget_translate_coordinates(widget, gtk_widget_get_toplevel(widget), 0, 0, &widgetPosX, &widgetPosY);
|
||||||
//EDN_INFO("widgetPosX=" << widgetPosX << " widgetPosY=" << widgetPosY);
|
//EDN_INFO("widgetPosX=" << widgetPosX << " widgetPosY=" << widgetPosY);
|
||||||
self->m_menuContext->Show(self->m_shawableAreaX+2+widgetPosX+windowsPosX, ((int32_t)(event->y / fontHeight)*fontHeight)+(fontHeight/2)+widgetPosY+windowsPosY, false);
|
self->m_menuContext->Show(self->m_shawableAreaX+2+widgetPosX+windowsPosX, ((int32_t)(event->y / fontHeight)*fontHeight)+(fontHeight/2)+widgetPosY+windowsPosY, false);
|
||||||
|
} else {
|
||||||
|
self->m_menuContext->Hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -235,14 +235,19 @@ void MenuContext::Show(int32_t x, int32_t y, bool top)
|
|||||||
gtk_container_add(GTK_CONTAINER(m_dialog), m_widget);
|
gtk_container_add(GTK_CONTAINER(m_dialog), m_widget);
|
||||||
|
|
||||||
// recursive version of gtk_widget_show
|
// recursive version of gtk_widget_show
|
||||||
gtk_widget_show_all(m_dialog);
|
gtk_widget_show_all(m_dialog);
|
||||||
|
|
||||||
|
// Set the Focus
|
||||||
|
gtk_widget_grab_focus(m_widget);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuContext::Hide(void)
|
void MenuContext::Hide(void)
|
||||||
{
|
{
|
||||||
|
if(NULL != m_dialog) {
|
||||||
|
gtk_widget_destroy(m_dialog);
|
||||||
|
m_dialog = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -382,12 +387,13 @@ gint MenuContext::CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer
|
|||||||
|
|
||||||
gint MenuContext::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
gint MenuContext::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
||||||
{
|
{
|
||||||
//MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_2_0
|
# ifdef USE_GTK_VERSION_2_0
|
||||||
GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
|
GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
|
||||||
# endif
|
# endif
|
||||||
EDN_INFO("Focus - out");
|
EDN_INFO("Focus - out");
|
||||||
|
self->Hide();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user