首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌套执行元的cluttermm鼠标事件

ClutterMM 是一个基于 Clutter 的 C++ 库,用于构建图形用户界面。在 ClutterMM 中处理鼠标事件通常涉及为演员(actors)添加事件回调。嵌套执行元(nested actors)意味着一个演员包含另一个演员,这可能会使鼠标事件的处理变得复杂,因为事件会首先传递给最具体的演员,然后逐级向上传递。

以下是一个简单的示例,说明如何在 ClutterMM 中为嵌套演员设置鼠标事件回调:

1. 包含必要的头文件

代码语言:javascript
复制
#include <clutter/clutter.h>
#include <cluttermm/cluttermm.h>

2. 创建嵌套演员

代码语言:javascript
复制
// 创建外部演员
ClutterActor *outer_actor = clutter_rectangle_new(0, 0, 200, 200);
clutter_actor_set_background_color(CLUTTER_COLOR_Red);

// 创建内部演员
ClutterActor *inner_actor = clutter_rectangle_new(50, 50, 100, 100);
clutter_actor_set_background_color(CLUTTER_COLOR_Blue);

// 将内部演员添加到外部演员
clutter_container_add_actor(CLUTTER_CONTAINER(outer_actor), inner_actor);

3. 设置鼠标事件回调

代码语言:javascript
复制
// 外部演员的鼠标按下事件回调
g_signal_connect(outer_actor, "button-press-event", G_CALLBACK(on_outer_actor_button_press), NULL);

// 内部演员的鼠标按下事件回调
g_signal_connect(inner_actor, "button-press-event", G_CALLBACK(on_inner_actor_button_press), NULL);

4. 定义事件处理函数

代码语言:javascript
复制
void on_outer_actor_button_press(ClutterActor *actor, ClutterEvent *event, gpointer user_data) {
    g_print("Outer actor button press event\n");
}

void on_inner_actor_button_press(ClutterActor *actor, ClutterEvent *event, gpointer user_data) {
    g_print("Inner actor button press event\n");
}

5. 运行主循环

代码语言:javascript
复制
ClutterMainLoop *main_loop = clutter_main_loop_new(NULL, FALSE);
clutter_main_loop_run(main_loop);

注意事项:

  • 事件会首先传递给最具体的演员(在本例中是 inner_actor)。如果该演员处理了事件(例如,通过调用 clutter_event_stop_propagation()),则事件不会传递给父演员。
  • 如果内部演员没有处理事件,事件会继续向上传递到父演员。
  • 你可以使用 clutter_event_get_source_actor() 来确定事件的来源演员。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

“穿透”层鼠标事件

标题可能不是一读让人容易明白,上张图(转载) 需要实现如下效果,有一个浮动层,需要层级在它之下一个元素也能照常响应相应事件 ?...一个100*100元素,边框为1px solid #406c99,它有两个事件(鼠标移入、鼠标移出): onmouseover="this.style.borderColor='#f00';" onmouseout...) 2、捕捉事件获取鼠标的位置X、Y,然后触发层级较低元素相应事件 (平时我们用调试工具选取页面中元素,高亮显示区域就是依据这个原理) 优点:兼容各浏览器 缺点:需要编写Javascript,效率并不高...这种应用场景,可能会是一个新产品上线了,需要引导用户如何去使用,会使用蒙板遮住整个页面,然后让某一素可点击。...elementFromPoint使用例子(移动鼠标时,如果那一点在某一占位区域则添加3像素红色边框,鼠标移开该元素时清除边框) <!

1.7K20

JavaScript鼠标事件细讲:执行顺序+注意事项+区别比对

在 JavaScript 中,鼠标事件是 Web 开发中最常用事件类型,本篇算是笔记吧。...常见鼠标事件有click:单击鼠标左键时发生。...对应移除事件是mouseoutmouseenter(鼠标进入):当鼠标移入元素本身(不包含元素子元素)会触发事件,也就是不会冒泡,对应移除事件是mouseleavemouseenter/mouseover...》mouseup-》click-》blurmousedown、mouseup、click若在同一个元素上按下并松开鼠标左键,会依次触发mousedown、mouseup、click,前一个事件执行完毕才会执行下一个事件若在同一个元素上按下并松开鼠标右键...,会依次触发mousedown、mouseup,前一个事件执行完毕才会执行下一个事件,不会触发click事件鼠标按键mousedown左右键按操按下均可触发,那么怎么区分左右键呢?

3.6K21
  • WPF 触屏事件后触发鼠标事件问题及 DataGrid 误触问题

    WPF 触屏事件后触发鼠标事件问题及 DataGrid 误触问题 目录 一、触屏事件连带触发鼠标事件问题 二、DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一、...触屏事件连带触发鼠标事件问题 这个是 WPF 已知问题,网络上也有一些讨论,但是没有一个完美的方法来解决。...这个触屏事件提升为鼠标事件一个表现就是,触屏拖动或者点击,会在屏幕上 “残留” 鼠标,当然,是不可见,或者表现为一个小星号。所以,从这个角度出发,产生了这样一种方法:点击后将鼠标移开。...(没有去尝试,感兴趣朋友可以试试): 二、DataGrid 误触问题及解决方法 上一个部分介绍了去除触屏事件后连带引发鼠标事件影响方法,也就是通过鼠标事件参数 StylusDevice 属性来判断是否是由触屏操作引发...所以,在触摸事件,以及鼠标事件单纯鼠标触发情况下,都对 IsRealTouch 赋值为 true 即可。

    2.8K10

    简述鼠标事件onmouseover、onmouseout 与 onmouseenter、onmouseleave 区别

    前言在JavaScriptDOM(文档对象模型)中,鼠标事件是一种常见事件类型,用于响应用户与鼠标的交互。...这个知识点,也是本人之前在写前端时候遇到需求,所以整理出来,跟大家一起分享。区别首先按照事件触发范围和事件冒泡情况进行介绍,这四种事件区别。1....onmouseout 当鼠标指针从元素移动出来时,会触发 onmouseout 事件。这两种事件不仅会在鼠标指针直接经过元素时触发,而且当鼠标指针经过元素子元素时也会触发。...onmouseleave 当鼠标指针从元素移动出来时,会触发 onmouseleave 事件。与前两者不同,这两种事件仅在鼠标指针直接经过元素时触发,而不会在鼠标指针经过元素子元素时触发。...总结本文主要是简述鼠标事件onmouseover、onmouseout 与 onmouseenter、onmouseleave 区别,能在实际开发中进行区分,希望能给前端同学有一点帮助。

    1.1K11

    Java selenuim用执行js模拟鼠标滚动方式

    题目: Java selenuim用执行js模拟鼠标滚动方式完成页面滚动异步加载及Java接收浏览器js返回值 在使用selenuim webdriver爬取网页时,经常会有很多网页并不是访问链接就会加载全部内容...,而是需要鼠标向下滚动,动态加载内容,比如知乎首页。...这样在爬取过程中并不能直接抓数据,需要先模拟鼠标滚动,让页面先加载出来才行。 ---- 我使用方法是利用如下js代码来完成页面的滚动,每次滚动多少可以根据不同情况自行调整。...想到加载过程中 document.body.scrollHeight 这个值是会根据每次新加载数据动态变化,那么也就是说 当执行一次js代码后,这个值没有发生改变,就代表本次没有加载新数据了。...接下来问题就是如何使Java代码能够接收到浏览器执行js代码返回值问题了。很简单,在js代码上加上return 即可。注意有一个空格。

    4.5K20

    关于Python中If嵌套语法、实例、执行流程

    在编程语言当中,if嵌套指代意思是一个大if条件语句里面又包含了一个小if....一、if嵌套语法 if 条件1: 条件1成立执行代码 条件1成立执行代码 if 条件2: 条件2成立执行代码 条件2成立执行代码 注意: 条件2if...也是出于条件1缩进关系内部,也就是说条件2if从属于条件1if成立之后要执行代码 二、实例: 坐公交 If嵌套在什么样场景中需要使用呢?...,没钱不能乘坐 3、当money = 0 ,seat = 0时,打印出来结果是对不起,没钱不能乘坐 三、if嵌套执行流程(图解) 图片1.png 执行流程:先判断条件1是否成立,如果是False就进入到条件...已上是关于Python中If嵌套语法、实例、执行流程,其实还是很简单,关于if流程语句都是属于Python入门教程知识点,下一篇文章来更加巩固利用所学if知识做一个应用猜拳游戏。

    1.1K30

    ajax 和 js 事件执行顺序

    有一个需求,滚轮滚动到相应位置时候执行当前动画,这个动画在footer里面,而网页主体通过ajax进行渲染,我在js里面调用ajax渲染数据,然后再获取主体高度,滚动到该高度时候执行动画。...我大致想了两种解决办法,均以失败告终,本地是ajax先执行,服务器是js先执行。...让获取高度事件时间延时500ms,发现最后获取不到事件了; 将该事件写在ajaxsuccess回调里面,结果是只有打开网页第一次能够成功,然后不管刷新多少次均无效,事件被屏蔽,所以方法二也被废除;...最后我想到了,ajax不就是一种异步方法,我将其改为同步不就行,先让ajax执行完在执行js事件。...当然这样做有弊端,如果接口出问题,ajax渲染失败,那么整个网页js都将执行不了。不过我想真到了数据都渲染不出地方,访问网页就没有意义了,所以最后我采用了这种方法。

    2.9K30

    nodejs中事件循环中执行顺序

    nodejs 事件循环是一个典型生产者/消费者模型,异步 I/O、网络请求等是事件生产者,源源不断为 Node 提供不同类型事件,这些事件被传递到对应观察者那里,事件循环则从观察者那里取出事件并处理...事件循环、观察者、请求对象、I/O 线程池共同构成了 Node 异步 I/O 模型基本要素。...Node 异步 I/O 几个关键词:单线程、事件循环、观察者、I/O 线程池,JavaScript 是单线程,node自身是多线程,只是 I/O 线程使用 CPU 较少。...除了用户代码无法并行执行外,所有的 I/O(磁盘 I/O 和网络 I/O 等)是可以并行起来。.../ 读取文件内容2 // 读取文件内容2,等待3 秒后输出 // 读取文件内容2,等待3 秒后执行 process.nextTick

    1.8K30

    windowonload事件和domcontentloaded执行顺序

    上述三个图分别为chrome edge和Firefox,我们发现他们结果都是一样,先执行documentloded事件,然后再执行window.onload事件。...所以说一般情况下,DOMContentLoaded事件要在window.onload之前执行,当DOM树构建完成时候就会执行DOMContentLoaded事件。...相反,DOMContentLoaded事件触发后添加事件侦听器永远不会执行。 浏览器还在对象load上提供事件window。当此事件触发时,表示页面上所有资源都已加载,包括图像。...尽管由 .ready() 添加处理程序总是在动态加载脚本中执行,但是窗口加载事件已经发生,并且这些侦听器永远不会运行。...但是你千万不要以为ready事件始终是在window.onload后才执行,也千万不要以为他始终DOMContentLoaded事件之后执行,因为下面这段代码就会打破你认知。 <!

    3.7K10

    JS-事件鼠标、键盘都能控制下拉选框效果

    menu.style.display = "block"; //添加键盘事件 //问题出在按了回车之后,怎么把对应分类内容填进去。...(ie中添加事件监听器方法)和addEventListener(通用浏览器中添加事件监听器)。...提示: 1、点击三角时需阻止事件冒泡 二、 展开菜单之后,在document对象上绑定keyup事件,(键盘事件不是某个具体对象了,所以要帮到document上面来)按下向下方向键,选中下一个选项...、 按下向上方向键时判断index,如若小于等于0则设为菜单选项总数,之后递减index 4、 根据index值将对应选项设为当前(灰色背景) 5、 按下回车键时将对应选中选项设为菜单标题,且将所有选项设为无背景...,index恢复为-1,菜单收起 注意:没有任何选项被选中时,按下回车键不做任何操作 三、鼠标滑过每个选项时高亮显示,离开时去掉背景,点击高亮选项时菜单标题改变 提示: 1.遍历所有a标签,绑定鼠标点击事件

    3.2K50

    【Java AWT 图形界面编程】事件处理机制 ③ ( AWT 中常见事件事件监听器 | 低级事件 | 组件事件 | 窗口事件 | 鼠标事件 | 高级事件 | 动作事件 | 事件监听器 )

    文章目录 一、AWT 中常见事件 1、低级事件 2、高级事件 二、AWT 中常见事件监听器 一、AWT 中常见事件 ---- AWT 中事件分为两大类 , 低级事件 和 高级事件 ; 低级事件...: 基于某个特定基本动作事件 , 如 点击 , 拖动 , 获取焦点 , 失去焦点 等固定简单操作 ; 高级事件 : 不基于某个特定事件 , 而是 根据 功能具体含义 定义事件 ; 1、低级事件..., 组件获取焦点 , 失去焦点 触发事件 ; 鼠标事件 : MouseEvent , 鼠标 按下 , 移动 , 抬起 , 点击 触发事件 ; 键盘事件 : KeyEvent , 键盘 按下 , 松开...; 二、AWT 中常见事件监听器 ---- 事件监听器 与 事件是一一对应 , 只需要将事件 Event 改成 Listener 即可 ; AWT 中常见事件监听器 : 组件事件监听器 : ComponentListener...; 鼠标事件监听器 : MouseMotionListener , 监听 鼠标 按下 , 移动 , 抬起 , 点击 ; 键盘事件监听器 : KeyListener, 监听 键盘 按下 , 松开 , 点击

    1.8K20

    Python影响嵌套循环结构执行速度因素与优化思路

    ============= 问题描述: 在循环结构中,如果没有break语句的话,循环条件测试次数比循环体实际执行次数多1,最后一次测试不满足条件,循环结束。...对于嵌套循环结构,在不影响结果情况下,循环次数少循环作为外循环时循环条件测试总次数更少。这一点对for循环和while循环都适用。...Python扩展库memory_profiler中修饰器函数profile()可以用来跟踪和收集程序执行过程中内存占用与释放情况,输出结果中Occurrences列显示了每行代码执行次数,可以用来验证上面的描述...并且,嵌套循环结构中内循环次数较多时解释器会进行优化。例如, 虽然第二段代码外循环次数小,循环条件测试总次数少了很多,但并没有像预期那样提高速度,反而比第一段代码还慢。...例如, 那么,如何提高循环结构执行速度呢,下面介绍两种思路,一是尽量减少内循环中不必要计算,能往外提计算尽量往外提。

    17710

    页面和页面里控件事件执行顺序。

    第一次访问时候执行顺序:       1、页面的Oninit事件       2、页面的InitComplete事件       3、页面的PreLoad事件       4、页面的Page_Load...Render事件       而当回发时候(也就是表单提交后),事件执行顺序就有些差别       1、页面的Oninit事件       2、页面的InitComplete事件 3、控件里面的...CreateChildControls事件 (原来是第六位)       4、页面的PreLoad事件       5、页面的Page_Load事件       6、相应各个控件事件,比如按钮单击事件...      7、页面的LoadComplete事件       8、页面的SaveStateComplete事件       9、页面里Render事件        这里最郁闷就是在回发时候,...究其原因就是在回发时候,控件里面的CreateChildControls事件执行顺序前移造成

    99080

    ASP.NET 2.0中Page事件执行顺序

    Page 执行中将按照如下顺序激活事件: Page.PreInit Page.Init Page.InitComplite Page.PreLoad Page.Load Page.LoadComplete...Page.PreRenderComplete 如果页面从令一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page事件激活顺序是...UI.PreRender Page.PreRender UI.PreRenderComplete Page.PreRenderComplete 如果使用了MasterPage,则MasterPage中事件和...ContentPage中事件按照下面顺序激活: ContentPage.PreInit Master.Init ContentPage.Init ContentPage.InitComplite...ContentPage.PreRender Master.PreRender ContentPage.PreRenderComplete 更进一步,如果ContentPage继承BasePage,那么,各事件执行顺序将变成

    72020
    领券