Re: [gtkmm] Keyboard/Mouse signals on a TreeView?
- From: Igor Gorbounov <igorbounov voronezh serw ru>
- To: Markus Gerwinski <markus gerwinski de>
- Cc: gtkmm-list gnome org
- Subject: Re: [gtkmm] Keyboard/Mouse signals on a TreeView?
- Date: Wed, 04 Jun 2003 07:51:44 +0400
Markus Gerwinski wrote:
Murray Cumming Comneon com wrote:
It absolutely should react on some key, for accessibility reasons. You might
play with the demo to see what key it is, but I think it should be enter.
It was SPACE. Well, that's something I can live with.
However, I need the TreeView to react on some other keys, too, and if possible
on a right-button mouse click (for a context menu). Is there a way to get this?
As I said, signal_key_press_event and signal_button_press_event don't seem to
work here.
Well, may be this quote from mail-list archive will help you:
"
Here is an example of why I need to get a Gtk::CellRenderer for a
specific cell:
I have a TreeView with 2 columns. When the user clicks in a cell with
mousebutton1 I want to set the background color of the cell he clicked
in to red;
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
ModelColumns() { add(m_col_a); add(m_col_b); add(m_col_visible); }
Gtk::TreeModelColumn<string> m_col_a;
Gtk::TreeModelColumn<double> m_col_b;
Gtk::TreeModelColumn<bool> m_col_visible; };
ModelColumns m_Columns;
Gtk::TreeView m_TreeView;
Glib::RefPtr<Gtk::TreeStore> m_refTreeModel;
m_refTreeModel = Gtk::TreeStore::create(m_Columns);
m_TreeView.set_model(m_refTreeModel);
// Append the columns
m_TreeView.append_column("A", m_Columns.m_col_a);
m_TreeView.append_column("B", m_Columns.m_col_b);
// I register to receive a callback for button press events in the
treeview.
m_TreeView.add_events(Gdk::BUTTON_PRESS_MASK);
m_TreeView.signal_button_press_event().connect( SigC::slot(*this,
&ExampleWindow::on_m_TreeView_button_press), false );
bool ExampleWindow::on_m_TreeView_button_press(GdkEventButton
*eventbutton)
{
Gtk::TreeModel::Path path;
Gtk::TreeViewColumn* column;
int cell_x;
int cell_y;
Gtk::TreeModel::Row row;
// catch mouse button1 clicks
switch (eventbutton->type)
{
case GDK_BUTTON_PRESS:
if ( eventbutton->button == 1)
{
if (m_TreeView.get_path_at_pos(eventbutton->x, eventbutton->y,
path, column, cell_x, cell_y ))
{
// Get the row number
int row_num = *path.get_indices().begin();
row = *( m_refTreeModel->children[row_num - 1]);
// Get the column number
int column_number = -1;
while (column != treeView->get_column(column_number))
column_number)++;
}
// So at this point I have a Gtk::TreeViewColumn, a column
number, a Gtk::TreeModel::Row and a row number
// I want to get at the CellRendererText * for that cell so I
can do something like this :
Gtk::CellRendererText* pRenderer = (I don't know how to do
this .......but it should point to the cellrenderer for the cell the
user clicked in)
Gdk::Color col("red");
renderer->property_background_gdk().set_value(col);
}
return false;
}
Thanks !
Liza
"
This very example from Liza helped me to handle all three mouse buttons.
Hope it would be helpfull for you, too.
Igor Gorbounov
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]